Автодействия в окне Хранилища (CfgStore.js)

Обсуждение написания скриптов и аддинов для Снегопата, а также его объектной модели.
Аватара пользователя
artbear
Сообщения: 1085
Зарегистрирован: 24 авг 2011, 15:36
Контактная информация:

Re: Автодействия в окне Хранилища

Сообщение artbear »

Саш, я всегда рядом :) просто некогда скриптами заниматься :(

У меня проблема по первой задаче - открыть окно хранилища и вызвать команду Отбор с установкой нужного переключателя.
Не могу вызвать команду Отбор.
Следующий код при активном окне хранилища

Код: Выделить всё

SelfScript.self['macrosАнализ объектов формы'] = function() {
    view = windows.getActiveView();
    if (!view) return false;
    dlgInfo = view.getInternalForm() ;
    form = view.getInternalForm() ; //dlgInfo.form
   
      Message(dlgInfo.Caption);
      // Пример перебора контролов на форме
      //Message("HWND = 0x" + dlgInfo.form.hwnd.toString(16));
      for(var c = 0; c < form.controlsCount; c++)
      {
         var ctr = form.getControl(c)
         Message(ctr.name + ",   " + ctr.id + ",   " + ctr.value)
      }
    return true;
}

выдает трассировку
CmdBar, 1, undefined
DepotTree, 2, undefined

CurrentUserStatic, 7, Текущий пользователь:
CurrentUser, 8, Отладка
PathStatic, 9, Хранилище:
Path, 10, W:\ХранилищеКонфигураций_82\База_2012

в итоге ничего не могу сделать :(
ни запустить команду, ни к меню подключиться.
Может быть, посмотришь все-таки и научишь Снегопат разбирать такие формы?
Аватара пользователя
orefkov
Администратор
Сообщения: 2052
Зарегистрирован: 24 авг 2011, 15:04

Re: Автодействия в окне Хранилища

Сообщение orefkov »

Ну, в принципе значения вроде уже почти для всех контролов можно устанавливать, осталось научиться на кнопки нажимать и команды посылать.
Покопаю в этом направлении.
Аватара пользователя
orefkov
Администратор
Сообщения: 2052
Зарегистрирован: 24 авг 2011, 15:04

Re: Автодействия в окне Хранилища

Сообщение orefkov »

А, ну еще итератор деревьев/таблиц надо бы сделать.
Аватара пользователя
artbear
Сообщения: 1085
Зарегистрирован: 24 авг 2011, 15:36
Контактная информация:

Re: Автодействия в окне Хранилища

Сообщение artbear »

orefkov писал(а):Ну, в принципе значения вроде уже почти для всех контролов можно устанавливать.

А как же лог
CmdBar, 1, undefined
DepotTree, 2, undefined

т.е. мы не можем получить данные по контролам, ведь они точно есть на форме.
Т.е. нужно:
1. получать данные по все контролам - деревья (?табличное поле), командная панель, что еще не умеем получать ?
2. отправлять команды форм
3. ловить команды форм
4. нажимать кнопки - если научимся отправлять команды, то наверное, решится автоматом.
galich
Сообщения: 11
Зарегистрирован: 02 ноя 2012, 08:40

Re: Автодействия в окне Хранилища

Сообщение galich »

А можно еще и макросик обратно на помещение объекта в хранилище...? %)
sosnae
Сообщения: 588
Зарегистрирован: 20 дек 2011, 10:31
Откуда: Украина, Запорожье

Re: Автодействия в окне Хранилища

Сообщение sosnae »

galich писал(а):А можно еще и макросик обратно на помещение объекта в хранилище...? %)

Держи

Код: Выделить всё

SelfScript.self['macrosПоместить объект в хранилище'] = function() {

    try{ //иногда вылетают странные исключения :( при работе с элементами форм
        view = windows.getActiveView();
        if (!view || !view.mdObj || view.mdObj.container != metadata.current) return false;
       
       
        res1 = view.mdObj.activateInTree();
       
        isEventConnected = true

        res = stdcommands.CfgStore.StoreIntoCfgStore.send() // true если успешно

    }catch(e)
    {
        Message("Ошибка : " + e.description)
    }

    return true;
}

Добавить в файл CfgStore, код и будет макрос. Список команд можно посмотреть в core/std/scripts/2_commands.js

upd.: можешь даже взять готовый файл из http://snegopat.ru/scripts/artifact/1b722b873e0a8575108ff616e6674a427492f9aa я случайно закоммитил его в тестовой ветке.
galich
Сообщения: 11
Зарегистрирован: 02 ноя 2012, 08:40

Re: Автодействия в окне Хранилища

Сообщение galich »

А можно макрос на помещение в хранилище сделать в основной ветке скрипта? И повесить на Ctrl+Alt+Shift+T :)
Удобная штука.
Плюс еще пожелание: если активно окно конфигурации, чтобы загружался/помещался в хранилище уже выделенный элемент, а то сейчас в таком случае происходит скачок на самый верх и захват конфигурации.
sosnae
Сообщения: 588
Зарегистрирован: 20 дек 2011, 10:31
Откуда: Украина, Запорожье

Re: Автодействия в окне Хранилища

Сообщение sosnae »

galich писал(а):А можно макрос на помещение в хранилище сделать в основной ветке скрипта? И повесить на Ctrl+Alt+Shift+T :)
Готово. На сочетание клавиш думаю сам настроишь.
galich писал(а):Плюс еще пожелание: если активно окно конфигурации, чтобы загружался/помещался в хранилище уже выделенный элемент, а то сейчас в таком случае происходит скачок на самый верх и захват конфигурации.
Я пока не знаю, как определить активно у нас окно конфигурации или же объекта конфигурации. Надо экспериментировать с перебором окон в конфигураторе, но у меня пока нет времени. Возможно позже.
galich
Сообщения: 11
Зарегистрирован: 02 ноя 2012, 08:40

Re: Автодействия в окне Хранилища

Сообщение galich »

Пасиба :)
also
Сообщения: 160
Зарегистрирован: 12 ноя 2012, 17:51
Контактная информация:

Re: Автодействия в окне Хранилища

Сообщение also »

А реально ли анализировать содержание окна хранилища?
Объясню зачем. В скрипте есть мега полезная фича, которая устанавливает галочку "Рекурсивно".
Так вот, было бы круто, если бы в случае захвата только корню конфигурации она не устанавливалась по умолчанию.
Ответить