PROCESSCOMMAND

Материал из GB wiki
Перейти к: навигация, поиск

Функция позволяет выполнить любую команду ГБ - открыть электронную форму, запустить отчет, создать объект, удалить его, сменить состояние, напечатать и т.д.
Список некоторых команд можно посмотреть в справочнике команд.

Синтаксис

PROCESSCOMMAND (Тип объекта,Строка параметров,Команда)
или
PROCESSCOMMAND ('CURRENT',Строка параметров,Команда)
или
PROCESSCOMMAND (тип:коды,Строка параметров,Команда)

Аргументы

Тип объекта
Целое число, являющееся кодом типа объекта (см. Объектная модель данных ГБ). Если указано слово 'CURRENT' - берется тип активного в данный момент объекта. Если указано тип:коды, берется множество объектов заданного типа с указанными кодами.
Строка параметров
Строка, которая содержит через "," список параметров команды.


Important yellow.png Внимание!
Если значение любого из параметров содержит пробелы, запятые или кавычки, следует всю строку Имя=Значение взять в двойные кавычки. Например, SET:Heap.@Note=Это комментарий - неправильно. Правильно "SET:Heap.@Note=Это комментарий"

Вот полный список параметров, которые можно передать в объект при создании и открытии существующего через ProcessCommand:

  • То, что работает в любой форме свойств:
    • DuplicateId - ид объекта, копию которого мы хотим создать. Причем установка поля Node является обязательным.
    • DoOnOpen - скрипт, выполняемый сразу после открытия
    • DoOnSave - скрипт, выполняемый непосредственно перед сохранением
    • ActivePage - имя закладки по умолчанию
    • SaveImmediate=Y - сохранить изменения сразу, не показывая форму пользователю
    • SendSaveMessage=1 - ожидать успешного завершения сохранения объекта. С версии 1.9.0.9 в ProcessCommand с SaveImmediate больше не нужно писать SendSaveMessage=1, такое поведение стало поведением по умолчанию. Если нужно из соображений совместимости сделать, чтобы скрипт продолжил выполняться до отработки команды ProcessCommand, следует писать SendSaveMessage=0
    • AddZero=1 - разрешить добавлять товарные строки с количеством товара ноль (GoodiesQty=0)
    • CloseOnError=1 - при ошибке закрывать форму (иначе форма будет показана пользователю)
  • установка любых полей ПРИ СОЗДАНИИ НОВОГО ОБЪЕКТА (но в документах этого лучше не делать, т.к. там с большинством полей связана специфическая функциональность - используйте параметры, описанные ниже):
    • SET:Field=
    • SET:Heap.Field=
  • в документах основные поля через SET ставить нельзя, надо использовать стандартные параметры:
    • Partner - заполняет соотв. поле
    • Agent - заполняет соотв. поле
    • Kind - заполняет соотв. поле
    • OpDate - заполняет сразу и OperationDate и DocDate
    • NOTE - заполняет поле HeapSet.@Note
    • DOCNUMBER - для товарных документов заполняет соответствующее поле. Для нетоварных используется SET:DOCNUMBER
    • WWWORDER - заполняет поле Imported_Id
    • CURRENCY - заполняет поле DocCurrency
    • PRICELIST - заполняет поле HeapSet.@PriceList
    • ActiveLinkPage - открывает документ на закладке "связи", на подзакладке с заданным номером.
    • Link (Link1, ...) - список кодов документов, с которыми нужно связать создаваемый
    • LinkSide (LinkSide1, ...) - направление связи - LinkSide=С означает что новый (т.е. создаваемый) документ будет записан в связях в поле CreditDoc, иначе - в DebetDoc
    • LinkType (LinkType1, ...) - тип связи
    • Update=True - при создании не имеет значения, а при открытии существующего документа означает, что товарные **строки необходимо заполнить заново, а не дописывать к существующим
    • PosOnly=True - означает что из списка товарных строк нужно выбрать только положительные количества
    • NegOnly=True - означает что из списка товарных строк нужно выбрать только отрицательные количества
    • DontCreateEmpty - не создавать пустой документ (без тов. строк)
    • GoodiesDs=имя - имя датасета, который содержит список товарных строк
    • GoodiesDs==выражение - запрос, который вернет нам список товарных строк
    • GoodiesArt
    • GoodiesCert
    • GoodiesQty
    • GoodiesNote
    • GoodiesHeap.XXXX - запись в хиповое поле ХХХХ
    • GoodiesField.AutoSaveXXXX - запись в поле вида AutoSaveCert@Apt
    • GoodiesPrice
    • GoodiesPriceList - выражения, вычисляемые на GoodieDs, заполняют соотв. поля
    • ExpensesDs - имя датасета со списком затрат
    • ExpensesDs.Field
    • ExpensesDs.Heap.Field - выражения, вычисляемые на ExpensesDs, заполняют соотв. поля
    • EntriesDs - имя датасета со списком проводок (например, документ типа "Бухгалтерская операция")
  • ДЛЯ ИЗМЕНЕНИЯ ЗНАЧЕНИЙ ПОЛЕЙ В СУЩЕСТВУЮЩЕМ ОБЪЕКТЕ НУЖНО ИСПОЛЬЗОВАТЬ СКРИПТ DoOnOpen

Управление остатками:

    • UseAvailableRest - для команды "импорт товарных документов" (ID125), позволяет создавать документы в пределах свободного остатка товара
    • CutToRest - для команды "PROPERTIES", позволяет создавать документы в пределах свободного остатка
    • AutoCompensate - для команды "импорт товарных документов" (ID125) и "PROPERTIES", включает автоматическое создание компенсационных документов при нехватке товара
UseAvailableRest (CutToRest) и AutoCompensate взаимоисключающие, т.о. если задан UseAvailableRest, то компенсации не будут создаваться
Команда
Строка, описывающая команду. Возможные варианты:
  • "EXPLORE" - открыть справочник. Возможные параметры:
    • Id=X - открыть справочник на объекте с кодом X
  • "PROPERTIES" - открыть свойства объекта. Возможные параметры:
    • Id=X - открыть свойства объекта с кодом X.
    • Id=-1 - создать новый объект, при этом:
    • DuplicateId=Y - создать копию объекта с кодом Y.
    • SubType=Y - создать объект с подтипом Y.
    • ItemType=0 - создать новую папку.
    • ItemType=1 - создать новую запись.
    • Node=Y - создать объект в папке с кодом Y.
    • KeepPack=1 - принудительная простановка типа упаковки (без него, например, при количестве < целой коробки упаковка приводится к минимальной).
    • GoodiesDsMaxLines=100 - ограничение количества товарных строк в документе (в примере ограничение равно ста строкам).
    • CheckPostConds=1 - перед открытием свойств электронной формы создаваемого документа проверить постусловия. Осуществится выполнение только постусловий с вызовом Exception. В случае срабатывания исключения текст ошибки поместится в переменную :LastError.
    • ActivePage=Имя закладки - установить активную закладку.
    • SaveImmediate=Y - сохранить изменения сразу по открытии.
    • DoOnOpen=скрипт - выполнить скрипт после открытия.
    • DoOnSave=скрипт - выполнить скрипт после сохранения.
    • Кроме того, для документов:
      • Имя поля=значение - присвоить данному полю датасета DataSet данное значение.
  • "PRINT" - напечатать объект. Возможные параметры:
    • ReportId=X или CmdParams=X -печатать форму с кодом X (ReportId=X).
    • ShowForm=Y - вывести окно для выбора печатной формы.
    • Target=файл - печатать в файл (для текстовых, Word и Excel форм).
    • Template=файл - шаблон для Word и Excel форм.
  • "SETFLAG" - изменить состояние документа. Возможные параметры:
    • SetState=X -Установить флаг=X.
  • "SETREADONLY" - сделать текущую форму доступной только для чтения. Возможные параметры:
    • ReadOnly=1 - Вся форма будет доступна только для чтения.
    • Кроме того, для документов:
    • ReadOnlyDesc=причина - При попытке что-то поправить, будет выдаваться сообщение: Документ доступен только для чтения, так как недостаточно полномочий для изменения документов с + причина
    • GoodiesReadOnly=1 - нельзя добавлять и удалять товарные строки, также нельзя менять количества. цены менять можно.
    • GoodiesCannotDeleteDesc=причина - при попытке удалить товаоные строки, будет возникать ошибка: причина
    • GoodiesPriceReadOnly=1 - запретить изменение цен.
    • ReadOnlyDiffs=номер_закладки - запретить изменение закладок связей.
  • "IDXXX" - выполнить команду с кодом XXX (см. Категория:Справочник команд ГБ).
    • Если XXX - код отчета, то возможны параметры:
      • Param:Поле=Значение - изменить параметр.
      • Immediate=Y - сразу вывести результаты.
      • ParamsSettings=X - код предустановки параметров.
      • GridSettings=X - код предустановки результатов.
  • "OPENREPORT" - позволяет запустить команду (см. Типы объектов ГБ).

Тип результата

Нет

Примеры

PROCESSCOMMAND(11, 'Id=-1,SubType=17', 'properties') создать новый заказ
PROCESSCOMMAND('CURRENT', 'CmdParams=1007', 'print') напечатать выделенные объекты
PROCESSCOMMAND(11, ['Id': :CurrentIds, 'SetState': 100], 'SETFLAG') изменить состояние документа
PROCESSCOMMAND(11, ['Id': :CurrentIds, 'SET:Flag': 100], 'SETFLAG') изменить состояние документа, для которого не создан класс
PROCESSCOMMAND('11:19713613;19708614;19712711;19707700;', ``, 'SETFLAG') вызвать окно Состояние документа на список документов
PROCESSCOMMAND(14,'Id=1000','OPENREPORT') запустить команду с Id = 1000
ProcessCommand(1, [`Id`:100661, `Node`:114, `Category`:1], `EXPLORE`) открыть справочник товаров, позиционироваться на товар 100661 в папке 114, альтернативного дерева 1