Команда PROCESS
DaJet Script реализует механизм расширения своих программных возможностей при помощи команды PROCESS. Эта команда позволяет подключать в скрипты плагины, написанные на языке программирования C#
. Реализация таких команд-плагинов основана на наследовании от класса UserDefinedProcessor.
После реализации пользовательской команды и компиляции соответствующей библиотеки её, эту библиотеку, необходимо поместить в каталог bin
, который расположен в корневом каталоге установки утилиты dajet
. Процессор скриптов DaJet Script автоматически загрузит нужные классы в свою среду выполнения. Загрузка плагинов выполняется классом StreamFactory в его статическом конструктуре.
На заметку: пример реализации пользовательской команды: класс DaJet.Runtime.Metadata.
Этой библиотеки нет в каталогеbin
, так как эта функция встроенна непосредственно в DaJet Script, в том числе в демонстрационных целях.
Синтаксис команды выглядит следующим образом:
PROCESS <variables> -- Входящие параметры, переменные контекса скрипта
WITH <c-sharp-class> -- Реализация команды на C# (полное имя класса)
[INTO <variable>] -- Переменная для возврата результата (опционально)
[SELECT <options>] -- Опциональные настройки выполнения команды
Важно! Обратите внимание, что в ниже следующем примере команда возвращает значения разных типов данных в зависимости от входящих параметров! Более того в данном случае это объектные значения, имеющие разную структуру.
Внимание! Реализация пользовательских команд требует подробного документирования!
Пример использования команды PROCESS
DECLARE @row object
DECLARE @table array
DECLARE @catalog object
DECLARE @metadata string = 'Справочник.Номенклатура'
DECLARE @exchange string = 'ПланОбмена.ПланОбменаРИБ.Состав'
USE 'mssql://server/database'
PROCESS @exchange WITH DaJet.Runtime.Metadata INTO @table
PRINT 'Состав плана обмена "ПланОбменаРИБ":'
FOR @row IN @table
PRINT '- ' + @row.Тип + '.' + @row.Имя
END
PROCESS @metadata WITH DaJet.Runtime.Metadata INTO @catalog
PRINT 'Метаданные справочника "Номенклатура":'
PRINT '[' + @catalog.Код + '] ' + @catalog.ПолноеИмя + ' (' + @catalog.Таблица + ')'
END
Результат работы скрипта
[2024-12-07 22:07:49] Состав плана обмена "ПланОбменаРИБ":
[2024-12-07 22:07:49] - Справочник.Номенклатура
[2024-12-07 22:07:49] - РегистрСведений.Тестовый
[2024-12-07 22:07:49] - Справочник.Покупатели
[2024-12-07 22:07:49] - РегистрСведений.ЦеныНоменклатуры
[2024-12-07 22:07:49] - Документ.ЗаказПокупателя
[2024-12-07 22:07:49] Метаданные справочника "Номенклатура":
[2024-12-07 22:07:49] [36] Справочник.Номенклатура (_Reference36)