Снегопат

Обсуждение Снегопата
Текущее время: 23 ноя 2024, 17:48

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 15 мар 2013, 12:56 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
Из этого диалога:
http://screencast.com/t/BgLqGIcAOpFG
Или просто по выделенной строке сразу считать значение и в буфер.

Подскажите как написать данный скрипт.

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 мар 2013, 13:03 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
А что, там ctrl+C не работает?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 мар 2013, 16:20 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
Работает, но копирует не только значение но и имя, хотелось бы чтобы значение копировало. Приходиться выдергивать.
У меня просто стиль программирования такой, что часто надо бывает в буфер обмена значение выражения.

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 мар 2013, 19:55 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
В принципе, не должно быть сложно.
по хоткею делаешь:
1. проверяешь тип окна (заголовок. контролы или еще что)
2. если не подходит, выход
3. если нужно окно, то перебираешь контролы и смотришь тип контрола.
4. если это грид, то перебираешь его (datasource) - примеры в скриптах есть.
в первой строке находишь нужное.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2013, 14:21 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
Спасибо. Попробую!

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2013, 15:08 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Этот диалог - модальный. Поэтому в произвольный момент времени ты его окно не получишь, т.к. 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 поместить в клипборд
    }
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2013, 18:38 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Ну вот Саша все и расписал :)
А в буфер можешь копировать с помощью моего скрипта БуферОбмена


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 мар 2013, 16:05 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
Спасибо огромное все работает. Но понадобилось как то забрать если не выбрана текущая строка.
Там получается нужно не к Таблице обращаться а к реквизиту. Как это можно реализовать?

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 поместить в клипборд
    }
}

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 мар 2013, 16:15 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
У грида есть свойство dataSource, через него можно все строки перебрать.
В каталоге scripts сделал поиск dataSource, вот готов пример:
Код:
for(var row = grid.dataSource.root.firstChild; row ; row = row.next)
      Message(row.getCellValue(1));


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 мар 2013, 16:16 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
artbear писал(а):
Ну вот Саша все и расписал :)
А в буфер можешь копировать с помощью моего скрипта БуферОбмена

Подскажи а как делать обращения к функциям других скриптов?

Вроде все правильно добавил:
$addin Clipboard

и пишу обращение

Clipboard.CopyToClipboard(value)

Он мне начал писать:

Скрипт ....\my.js
В директиве $addin не указано имя аддина

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB