Skip to the content.

Начало

Команда 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)

Наверх