PROCESSCOMMAND — различия между версиями
Alexandr (обсуждение | вклад) |
Andrew (обсуждение | вклад) |
||
(не показано 28 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
{{Функция ГБ | {{Функция ГБ | ||
|Название=PROCESSCOMMAND | |Название=PROCESSCOMMAND | ||
− | |Описание=Функция позволяет выполнить любую команду ГБ - открыть электронную форму, запустить отчет, создать объект, удалить его, сменить состояние, напечатать и т.д. | + | |Описание=Функция позволяет выполнить любую команду ГБ - открыть электронную форму, запустить отчет, создать объект, удалить его, сменить состояние, напечатать и т.д.<br/> |
+ | Список некоторых команд можно посмотреть в [[:Категория:Справочник команд ГБ|справочнике команд]]. | ||
|Синтаксис=PROCESSCOMMAND ('''Тип объекта''','''Строка параметров''','''Команда''') <br/> | |Синтаксис=PROCESSCOMMAND ('''Тип объекта''','''Строка параметров''','''Команда''') <br/> | ||
или <br/> | или <br/> | ||
Строка 14: | Строка 15: | ||
|Название=Строка параметров | |Название=Строка параметров | ||
|Пояснение=Строка, которая содержит через "," список параметров команды. | |Пояснение=Строка, которая содержит через "," список параметров команды. | ||
+ | |||
+ | {{Внимание|1=Если значение любого из параметров содержит пробелы, запятые или кавычки, следует всю строку Имя=Значение взять в двойные кавычки. Например, '''SET:Heap.@Note=Это комментарий''' - неправильно. Правильно '''"SET:Heap.@Note=Это комментарий"''' | ||
+ | }} | ||
+ | |||
Вот полный список параметров, которые можно передать в объект при создании и открытии существующего через ProcessCommand: | Вот полный список параметров, которые можно передать в объект при создании и открытии существующего через ProcessCommand: | ||
*То, что работает в любой форме свойств: | *То, что работает в любой форме свойств: | ||
Строка 21: | Строка 26: | ||
**ActivePage - имя закладки по умолчанию | **ActivePage - имя закладки по умолчанию | ||
**SaveImmediate=Y - сохранить изменения сразу, не показывая форму пользователю | **SaveImmediate=Y - сохранить изменения сразу, не показывая форму пользователю | ||
− | **SendSaveMessage=1 - ожидать успешного завершения сохранения объекта | + | **SendSaveMessage=1 - ожидать успешного завершения сохранения объекта. ''С версии 1.9.0.9 в ProcessCommand с SaveImmediate больше не нужно писать SendSaveMessage=1, такое поведение стало поведением по умолчанию. Если нужно из соображений совместимости сделать, чтобы скрипт продолжил выполняться до отработки команды ProcessCommand, следует писать SendSaveMessage=0'' |
+ | **AddZero=1 - разрешить добавлять товарные строки с количеством товара ноль (GoodiesQty=0) | ||
**CloseOnError=1 - при ошибке закрывать форму (иначе форма будет показана пользователю) | **CloseOnError=1 - при ошибке закрывать форму (иначе форма будет показана пользователю) | ||
− | *установка любых полей ПРИ СОЗДАНИИ НОВОГО ОБЪЕКТА (но в документах этого лучше не делать, т.к. там с большинством полей связана специфическая функциональность - используйте параметры, описанные ниже): | + | *установка любых полей '''ПРИ СОЗДАНИИ НОВОГО ОБЪЕКТА''' (но в документах этого лучше не делать, т.к. там с большинством полей связана специфическая функциональность - используйте параметры, описанные ниже): |
− | **SET: | + | **SET:Field= |
**SET:Heap.Field= | **SET:Heap.Field= | ||
* в документах основные поля через SET ставить нельзя, надо использовать стандартные параметры: | * в документах основные поля через SET ставить нельзя, надо использовать стандартные параметры: | ||
Строка 32: | Строка 38: | ||
**OpDate - заполняет сразу и OperationDate и DocDate | **OpDate - заполняет сразу и OperationDate и DocDate | ||
**NOTE - заполняет поле HeapSet.@Note | **NOTE - заполняет поле HeapSet.@Note | ||
− | **DOCNUMBER - заполняет | + | **DOCNUMBER - для товарных документов заполняет соответствующее поле. Для нетоварных используется SET:DOCNUMBER |
**WWWORDER - заполняет поле Imported_Id | **WWWORDER - заполняет поле Imported_Id | ||
**CURRENCY - заполняет поле DocCurrency | **CURRENCY - заполняет поле DocCurrency | ||
**PRICELIST - заполняет поле HeapSet.@PriceList | **PRICELIST - заполняет поле HeapSet.@PriceList | ||
**ActiveLinkPage - открывает документ на закладке "связи", на подзакладке с заданным номером. | **ActiveLinkPage - открывает документ на закладке "связи", на подзакладке с заданным номером. | ||
− | **Link - список кодов документов, с которыми нужно связать создаваемый | + | **Link (Link1, ...) - список кодов документов, с которыми нужно связать создаваемый |
− | **LinkSide - направление связи - LinkSide=С означает что новый документ будет записан в связях в поле CreditDoc, иначе - в DebetDoc | + | **LinkSide (LinkSide1, ...) - направление связи - LinkSide=С означает что новый (т.е. создаваемый) документ будет записан в связях в поле CreditDoc, иначе - в DebetDoc |
− | **LinkType - тип связи | + | **LinkType (LinkType1, ...) - тип связи |
**Update=True - при создании не имеет значения, а при открытии существующего документа означает, что товарные **строки необходимо заполнить заново, а не дописывать к существующим | **Update=True - при создании не имеет значения, а при открытии существующего документа означает, что товарные **строки необходимо заполнить заново, а не дописывать к существующим | ||
**PosOnly=True - означает что из списка товарных строк нужно выбрать только положительные количества | **PosOnly=True - означает что из списка товарных строк нужно выбрать только положительные количества | ||
Строка 57: | Строка 63: | ||
**ExpensesDs.Field | **ExpensesDs.Field | ||
**ExpensesDs.Heap.Field - выражения, вычисляемые на ExpensesDs, заполняют соотв. поля | **ExpensesDs.Heap.Field - выражения, вычисляемые на ExpensesDs, заполняют соотв. поля | ||
− | *ДЛЯ ИЗМЕНЕНИЯ ЗНАЧЕНИЙ ПОЛЕЙ В СУЩЕСТВУЮЩЕМ ОБЪЕКТЕ НУЖНО ИСПОЛЬЗОВАТЬ СКРИПТ DoOnOpen | + | **EntriesDs - имя датасета со списком проводок (например, документ типа "Бухгалтерская операция") |
+ | *'''ДЛЯ ИЗМЕНЕНИЯ ЗНАЧЕНИЙ ПОЛЕЙ В СУЩЕСТВУЮЩЕМ ОБЪЕКТЕ НУЖНО ИСПОЛЬЗОВАТЬ СКРИПТ DoOnOpen''' | ||
+ | Управление остатками: | ||
+ | **UseAvailableRest - для команды "импорт товарных документов" (ID125), позволяет создавать документы в пределах свободного остатка товара | ||
+ | **CutToRest - для команды "PROPERTIES", позволяет создавать документы в пределах свободного остатка | ||
+ | **AutoCompensate - для команды "импорт товарных документов" (ID125) и "PROPERTIES", включает автоматическое создание компенсационных документов при нехватке товара | ||
+ | :''UseAvailableRest (CutToRest) и AutoCompensate взаимоисключающие, т.о. если задан UseAvailableRest, то компенсации не будут создаваться'' | ||
}}<br/>{{Аргумент | }}<br/>{{Аргумент | ||
|Название=Команда | |Название=Команда | ||
|Пояснение=Строка, описывающая команду. Возможные варианты: | |Пояснение=Строка, описывающая команду. Возможные варианты: | ||
− | *"EXPLORE" - открыть справочник. Возможные параметры: | + | *'''"EXPLORE"''' - открыть справочник. Возможные параметры: |
**Id=X - открыть справочник на объекте с кодом X | **Id=X - открыть справочник на объекте с кодом X | ||
− | *"PROPERTIES" - открыть свойства объекта. Возможные параметры: | + | *'''"PROPERTIES"''' - открыть свойства объекта. Возможные параметры: |
**Id=X - открыть свойства объекта с кодом X. | **Id=X - открыть свойства объекта с кодом X. | ||
**Id=-1 - создать новый объект, при этом: | **Id=-1 - создать новый объект, при этом: | ||
Строка 80: | Строка 92: | ||
**Кроме того, для документов: | **Кроме того, для документов: | ||
***Имя поля=значение - присвоить данному полю датасета DataSet данное значение. | ***Имя поля=значение - присвоить данному полю датасета DataSet данное значение. | ||
− | *"PRINT" - напечатать объект. Возможные параметры: | + | *'''"PRINT"''' - напечатать объект. Возможные параметры: |
**ReportId=X или CmdParams=X -печатать форму с кодом X (ReportId=X). | **ReportId=X или CmdParams=X -печатать форму с кодом X (ReportId=X). | ||
**ShowForm=Y - вывести окно для выбора печатной формы. | **ShowForm=Y - вывести окно для выбора печатной формы. | ||
**Target=файл - печатать в файл (для текстовых, Word и Excel форм). | **Target=файл - печатать в файл (для текстовых, Word и Excel форм). | ||
**Template=файл - шаблон для Word и Excel форм. | **Template=файл - шаблон для Word и Excel форм. | ||
− | *"SETFLAG" - изменить [[Флаг|состояние]] документа. Возможные параметры: | + | *'''"SETFLAG"''' - изменить [[Флаг|состояние]] документа. Возможные параметры: |
**SetState=X -Установить [[флаг]]=X. | **SetState=X -Установить [[флаг]]=X. | ||
− | *"IDXXX" - выполнить команду с кодом XXX (см. [[Справочник команд]]). | + | *'''"SETREADONLY"''' - сделать текущую форму доступной только для чтения. Возможные параметры: |
+ | **ReadOnly=1 - Вся форма будет доступна только для чтения. | ||
+ | **Кроме того, для документов: | ||
+ | **ReadOnlyDesc=причина - При попытке что-то поправить, будет выдаваться сообщение: Документ доступен только для чтения, так как недостаточно полномочий для изменения документов с + причина | ||
+ | **GoodiesReadOnly=1 - нельзя добавлять и удалять товарные строки, также нельзя менять количества. цены менять можно. | ||
+ | **GoodiesCannotDeleteDesc=причина - при попытке удалить товаоные строки, будет возникать ошибка: причина | ||
+ | **GoodiesPriceReadOnly=1 - запретить изменение цен. | ||
+ | **ReadOnlyDiffs=номер_закладки - запретить изменение закладок связей. | ||
+ | *'''"IDXXX"''' - выполнить команду с кодом XXX (см. [[:Категория:Справочник команд ГБ]]). | ||
**Если XXX - код отчета, то возможны параметры: | **Если XXX - код отчета, то возможны параметры: | ||
***Param:Поле=Значение - изменить параметр. | ***Param:Поле=Значение - изменить параметр. | ||
***Immediate=Y - сразу вывести результаты. | ***Immediate=Y - сразу вывести результаты. | ||
***ParamsSettings=X - код предустановки параметров. | ***ParamsSettings=X - код предустановки параметров. | ||
− | ***GridSettings=X - код предустановки результатов. | + | ***GridSettings=X - код предустановки результатов. |
+ | *"OPENREPORT" - позволяет запустить команду (см. [[Типы объектов ГБ]]). | ||
}} | }} | ||
− | |Пример=PROCESSCOMMAND(11,'Id=-1,SubType=17','properties') создать новый заказ<br/> | + | |Пример=PROCESSCOMMAND(11, 'Id=-1,SubType=17', 'properties') создать новый заказ<br/> |
− | PROCESSCOMMAND('CURRENT','CmdParams=1007','print') напечатать выделенные объекты | + | PROCESSCOMMAND('CURRENT', 'CmdParams=1007', 'print') напечатать выделенные объекты<br/> |
+ | PROCESSCOMMAND(11, ['Id': :CurrentIds, 'SetState': 100], 'SETFLAG') изменить состояние документа<br/> | ||
+ | PROCESSCOMMAND(11, ['Id': :CurrentIds, 'SET:Flag': 100], 'SETFLAG') изменить состояние документа, для которого не создан класс<br/> | ||
+ | PROCESSCOMMAND('11:19713613;19708614;19712711;19707700;', ``, 'SETFLAG') вызвать окно Состояние документа на список документов<br/> | ||
+ | PROCESSCOMMAND(14,'Id=1000','OPENREPORT') запустить команду с Id = 1000<br/> | ||
+ | ProcessCommand(1, [`Id`:100661, `Node`:114, `Category`:1], `EXPLORE`) открыть справочник товаров, позиционироваться на товар 100661 в папке 114, альтернативного дерева 1 | ||
}} | }} |
Текущая версия на 13:39, 19 февраля 2024
Функция позволяет выполнить любую команду ГБ - открыть электронную форму, запустить отчет, создать объект, удалить его, сменить состояние, напечатать и т.д.
Список некоторых команд можно посмотреть в справочнике команд.
Синтаксис
PROCESSCOMMAND (Тип объекта,Строка параметров,Команда)
или
PROCESSCOMMAND ('CURRENT',Строка параметров,Команда)
или
PROCESSCOMMAND (тип:коды,Строка параметров,Команда)
Аргументы
- Тип объекта
- Целое число, являющееся кодом типа объекта (см. Объектная модель данных ГБ). Если указано слово 'CURRENT' - берется тип активного в данный момент объекта. Если указано тип:коды, берется множество объектов заданного типа с указанными кодами.
- Строка параметров
- Строка, которая содержит через "," список параметров команды.
Вот полный список параметров, которые можно передать в объект при создании и открытии существующего через 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 - код предустановки результатов.
- Если XXX - код отчета, то возможны параметры:
- "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