Платформа 3V/Формы/Источники данных/Справочник/Создание нового элемента при открытии формы

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Описание

Новый элемент справочника можно создавать с помощью Action (CreateNewElementInDictionaryAction), но если выполнение этого Action запускается при открытии формы, то происходит следующее:

1. Запрашиваются все источники, которые используются в форме;

2. Выполняются Действия, установленные на открытии формы (ConditionActionIdsOnOpen), в т.ч. создается новый элемент справочника;

3. Перестраиваются источники, которые зависят от этого элемента.

Если все источники зависят от одного главного справочника, то это, по сути, приводит к двойному построению формы. Метод defaultNewElementSettings срабатывает еще по первого построения источников и позволяет уйти от двойного запроса одних и тех же справочников и пивотов.

Для того, чтобы при открытии формы сразу создавался элемент справочника, необходимо в источнике данных (DictionaryDataSource ) прописать defaultNewElementSettings:

"entryDataSources": {}
 1  "defaultNewElementSettings": {
 2         "createElementConditionId": 111100,
 3         "defaultValues": [
 4           {
 5             "attributeId": 2,
 6             "value": "Новый объект",
 7             "expressionId": null
 8           },    
 9           {
10             "attributeId": 3,
11             "value": null,
12             "expressionId": 1001
13           }
14         ],
15         "saveElementOnInitialize": true
16       },
Поле Описание
createElementConditionId Условие, при выполнении которого необходимо создавать новый элемент (binaryConditionsRules)
defaultValues Значения атрибутов, которые присваиваются новому элементу
saveElementOnInitialize Сохранять элемент при инициализации формы

Особенности использования

Новому элементу можно сразу при создании присвоить дефолтые значения атрибутов. Эти значения могут быть константой либо вычислены в expression. Но есть одно ограничение: этот метод не сможет подставить значение из других справочников, т.к. он срабатывает ДО построения источников


JSON серверной карточки