Снегопат https://snegopat.ru/forum/ |
|
Хочу скрипт который копирует значение выражения в буфер https://snegopat.ru/forum/viewtopic.php?f=3&t=407 |
Страница 1 из 3 |
Автор: | vladnet [ 15 мар 2013, 12:56 ] |
Заголовок сообщения: | Хочу скрипт который копирует значение выражения в буфер |
Из этого диалога: http://screencast.com/t/BgLqGIcAOpFG Или просто по выделенной строке сразу считать значение и в буфер. Подскажите как написать данный скрипт. |
Автор: | orefkov [ 15 мар 2013, 13:03 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
А что, там ctrl+C не работает? |
Автор: | vladnet [ 15 мар 2013, 16:20 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
Работает, но копирует не только значение но и имя, хотелось бы чтобы значение копировало. Приходиться выдергивать. У меня просто стиль программирования такой, что часто надо бывает в буфер обмена значение выражения. |
Автор: | artbear [ 18 мар 2013, 19:55 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
В принципе, не должно быть сложно. по хоткею делаешь: 1. проверяешь тип окна (заголовок. контролы или еще что) 2. если не подходит, выход 3. если нужно окно, то перебираешь контролы и смотришь тип контрола. 4. если это грид, то перебираешь его (datasource) - примеры в скриптах есть. в первой строке находишь нужное. |
Автор: | vladnet [ 19 мар 2013, 14:21 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
Спасибо. Попробую! |
Автор: | orefkov [ 19 мар 2013, 15:08 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
Этот диалог - модальный. Поэтому в произвольный момент времени ты его окно не получишь, т.к. windows.getActiveView() не возвращает окон модальных диалогов. Поэтому надо подписаться на команду "Рассчитать", в ней ставить отлов onDoModal, там запоминать форму. То есть будет вот так: Код: var grid
stdcommands.CDebug.EvalExpr.addHandler(SelfScript.self, "onEvalExpr") function onEvalExpr(cmd) { if(cmd.isBefore) // Вызывается до обработки команды 1С events.connect(windows, "onDoModal", SelfScript.self) else // вызывается после обработки команды 1С { events.disconnect(windows, "onDoModal", SelfScript.self) grid = null } } function onDoModal(dlgInfo) { try{ if(dlgInfo.stage == afterInitial) grid = dlgInfo.form.getControl('ResultGrid').extInterface }catch(e){} } function macrosСкопироватьЗначение() { if(!grid) return var row = grid.currentRow if(row) { var value = row.getCellValue(1) Message(value) // Вот тут надо value поместить в клипборд } } |
Автор: | artbear [ 19 мар 2013, 18:38 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
Ну вот Саша все и расписал А в буфер можешь копировать с помощью моего скрипта БуферОбмена |
Автор: | vladnet [ 20 мар 2013, 16:05 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
Спасибо огромное все работает. Но понадобилось как то забрать если не выбрана текущая строка. Там получается нужно не к Таблице обращаться а к реквизиту. Как это можно реализовать? orefkov писал(а): Этот диалог - модальный. Поэтому в произвольный момент времени ты его окно не получишь, т.к. windows.getActiveView() не возвращает окон модальных диалогов.
Поэтому надо подписаться на команду "Рассчитать", в ней ставить отлов onDoModal, там запоминать форму. То есть будет вот так: Код: var grid stdcommands.CDebug.EvalExpr.addHandler(SelfScript.self, "onEvalExpr") function onEvalExpr(cmd) { if(cmd.isBefore) // Вызывается до обработки команды 1С events.connect(windows, "onDoModal", SelfScript.self) else // вызывается после обработки команды 1С { events.disconnect(windows, "onDoModal", SelfScript.self) grid = null } } function onDoModal(dlgInfo) { try{ if(dlgInfo.stage == afterInitial) grid = dlgInfo.form.getControl('ResultGrid').extInterface }catch(e){} } function macrosСкопироватьЗначение() { if(!grid) return var row = grid.currentRow if(row) { var value = row.getCellValue(1) Message(value) // Вот тут надо value поместить в клипборд } } |
Автор: | orefkov [ 20 мар 2013, 16:15 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
У грида есть свойство dataSource, через него можно все строки перебрать. В каталоге scripts сделал поиск dataSource, вот готов пример: Код: for(var row = grid.dataSource.root.firstChild; row ; row = row.next)
Message(row.getCellValue(1)); |
Автор: | vladnet [ 20 мар 2013, 16:16 ] |
Заголовок сообщения: | Re: Хочу скрипт который копирует значение выражения в буфер |
artbear писал(а): Ну вот Саша все и расписал А в буфер можешь копировать с помощью моего скрипта БуферОбмена Подскажи а как делать обращения к функциям других скриптов? Вроде все правильно добавил: $addin Clipboard и пишу обращение Clipboard.CopyToClipboard(value) Он мне начал писать: Скрипт ....\my.js В директиве $addin не указано имя аддина |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |