Платформа 3V/Формы/Компоненты/Основные/Кнопка/Кнопка 'Сохранить': различия между версиями
м (A.kazanceva переименовал страницу Платформа 3V/Формы/Компоненты/Основные/Кнопка/Сохранение (Кнопка 'Сохранить') в Платформа 3V/Формы/Компоненты/Основные/Кнопка/Кнопка 'Сохранить') |
|||
(не показано 35 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | =!!! | + | Кнопку "Сохранить" можно реализовать двумя способами: <br><br> |
+ | 1. Кнопка Сохранить (ButtonSubmitSourceEntryDto), <br> | ||
+ | 2. Пользовательская кнопка (CustomButtonEntry). <br> | ||
+ | <br> | ||
+ | |||
+ | Кнопка Сохранить (ButtonSubmitSourceEntryDto) сохраняет данные автоматически в источники, у которых свойство readOnly = false. <br> | ||
+ | Пользовательской кнопке (CustomButtonEntry) необходимо прописать действие, которое сохраняет добавленный элемент в источнике данных. <br> | ||
+ | Обе кнопки могут содержать дополнительные действия помимо сохранения. <br> | ||
+ | Основным отличием является порядок выполнения действий - в кнопке ButtonSubmitSourceEntryDto нельзя управлять порядком сохранения. <br> | ||
+ | |||
+ | == Сравнение кнопок == | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Свойство / Тип кнопки !! ButtonSubmitSourceEntryDto !! CustomButtonEntry | ||
+ | |- | ||
+ | | Actions || Может быть пустым || Обязательно должно содержать [[Платформа_3V/Формы/Действия/Сохранение источников|'''действие, <br> которое сохраняет добавленный элемент в источнике данных''']] | ||
+ | |- | ||
+ | | Управлять порядком выполнения действий || Нельзя || Можно | ||
+ | |||
+ | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
==ButtonSubmitSourceEntryDto== | ==ButtonSubmitSourceEntryDto== | ||
− | + | Примерный алгоритм: <br> | |
− | + | 1. В раздел uiSources добавляем элемент управления (строка в данном примере), значения которого будет записывать кнопка. | |
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "uiSources": [ | ||
+ | {...}, | ||
+ | { | ||
+ | ... | ||
+ | |||
+ | "id": 1, | ||
+ | "uiDataSource": { | ||
+ | "attribute": { | ||
+ | "id": 2, | ||
+ | "discriminator": "OwnAttributeDefinitionDto" | ||
+ | }, | ||
+ | "attributeId": null, | ||
+ | "sourceId": 1, | ||
+ | "discriminator": "UiDataSourceDictionary" | ||
+ | }, | ||
+ | ... | ||
+ | |||
+ | "discriminator": "StringSourceEntry" | ||
+ | } | ||
+ | ] | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | |||
+ | 2. В раздел uiSources добавляем элементы управления кнопка ButtonSubmitSourceEntry. Свойство Actions в данном примере пустое, дополнительных действий нет. | ||
<syntaxhighlight lang="JSON" line> | <syntaxhighlight lang="JSON" line> | ||
− | + | ||
− | + | "uiSources": [ | |
− | + | { | |
− | + | "actionConfirmation": { ... }, | |
− | + | "Actions": [], | |
− | " | ||
− | |||
"onBeforeClickConditionalActions": [], | "onBeforeClickConditionalActions": [], | ||
"submitRuleIds": [], | "submitRuleIds": [], | ||
"id": 100, | "id": 100, | ||
"caption": "Сохранить", | "caption": "Сохранить", | ||
− | + | ||
− | + | ... | |
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
"discriminator": "ButtonSubmitSourceEntry" | "discriminator": "ButtonSubmitSourceEntry" | ||
− | } | + | }, |
+ | {...} | ||
+ | ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</div></div> | </div></div> | ||
− | + | 3. В раздел entryDataSources добавляем источник (справочник в данном примере), в который записываются данные. <br> | |
+ | Важно, чтобы свойство "isReadOnly" [[Платформа_3V/Формы/Источники_данных|'''источника (источников)''']], куда записываются данные, принимало значение false. | ||
− | + | <syntaxhighlight lang="JSON" line> | |
− | + | "entryDataSources": [ | |
+ | { | ||
+ | "dictionaryId": 47, | ||
+ | ... | ||
− | + | "id": 1, | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | "id": | ||
"name": "Список контрагентов", | "name": "Список контрагентов", | ||
"isReadOnly": false, | "isReadOnly": false, | ||
− | + | ||
− | + | ... | |
− | + | ||
"discriminator": "DictionaryDataSource" | "discriminator": "DictionaryDataSource" | ||
− | + | } | |
− | + | ], | |
+ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</div></div> | </div></div> | ||
− | + | Кнопка сохранит все введенные данные автоматически. <br> | |
− | + | ||
+ | ===Пример=== | ||
+ | |||
+ | Кейс: Добавление нового элемента справочника.<br> | ||
[[Файл:Screenshot 2021-06-18 at 11.37.46.png|мини|слева]] | [[Файл:Screenshot 2021-06-18 at 11.37.46.png|мини|слева]] | ||
Строка 87: | Строка 107: | ||
[[Файл:Screenshot 2021-06-18 at 11.41.09.png|мини|слева]] | [[Файл:Screenshot 2021-06-18 at 11.41.09.png|мини|слева]] | ||
<br><br><br><br><br><br><br><br><br> | <br><br><br><br><br><br><br><br><br> | ||
+ | |||
+ | Кнопка Сохранить (контрол id=100) сохрает введенное в строку значение в справочник (источник id=3). | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
Строка 197: | Строка 219: | ||
==CustomButtonEntry== | ==CustomButtonEntry== | ||
− | + | Пользовательская кнопка CustomButtonEntry требует [[Платформа_3V/Формы/Действия/Сохранение источников|'''добавить действие, которое сохраняет добавленный элемент в источнике данных''']]. Действия, "повешанные" на кнопку, будут выполняться последовательно.<br> | |
+ | Примерный алгоритм:<br> | ||
+ | 1. В раздел uiSources добавляем элементы управления. В приведенном примере - дата начала периода, дата окончания периода и строка, которая заполнится рассчитанной длительностью периода. | ||
+ | |||
<syntaxhighlight lang="JSON" line> | <syntaxhighlight lang="JSON" line> | ||
− | { | + | |
− | + | "uiSources": [ | |
− | + | {...}, | |
− | + | { | |
− | + | "id": 222, | |
− | + | "caption": "Длительность периода", | |
− | + | "uiDataSource": { | |
− | + | "attribute": { | |
− | + | "id": 20, | |
− | + | "discriminator": "OwnAttributeDefinitionDto" | |
− | + | }, | |
− | + | "attributeId": null, | |
− | + | "sourceId": 1, | |
− | + | "discriminator": "UiDataSourceDictionary" | |
− | + | }, | |
− | + | "discriminator": "StringSourceEntry", | |
− | + | ... | |
− | + | }, | |
− | + | { | |
− | + | "id": 21, | |
− | + | "caption": "Дата начала периода", | |
− | + | ..., | |
− | + | "discriminator": "DateTimeSourceEntry" | |
− | + | }, | |
− | + | { | |
− | } | + | |
+ | "id": 22, | ||
+ | "caption": "Дата конца периода", | ||
+ | ..., | ||
+ | "discriminator": "DateTimeSourceEntry" | ||
+ | }, | ||
+ | |||
+ | {...} | ||
+ | ] | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | |||
+ | 2. В раздел uiSources добавляем элементы управления пользовательская кнопка CustomButtonEntry. В Actions в данном примере два действия, сначала рассчитается длинна периода, отобразится в строке и только потом сохранится это значение. | ||
+ | |||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | |||
+ | "uiSources": [ | ||
+ | { | ||
+ | ..., | ||
+ | |||
+ | "Actions": [ | ||
+ | 222, | ||
+ | 111 | ||
+ | ], | ||
+ | "id": 200, | ||
+ | "caption": "Сохранить", | ||
+ | |||
+ | ... | ||
+ | |||
+ | "discriminator": "CustomButtonEntry" | ||
+ | }, | ||
+ | |||
+ | {...} | ||
+ | ] | ||
+ | |||
+ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | |||
+ | 3. В раздел entryDataSources добавляем источник (справочник в данном примере), в который записываются данные. <br> | ||
+ | |||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | |||
+ | "entryDataSources": [ | ||
+ | { | ||
+ | "dictionaryId": 316, | ||
+ | ..., | ||
+ | "name": "Длительность отпусков", | ||
+ | "isReadOnly": false, | ||
+ | "dataEditRuleIds": [], | ||
+ | "beforeSaveDataActions": [], | ||
+ | "afterSaveDataActions": [], | ||
+ | "discriminator": "DictionaryDataSource" | ||
+ | }, | ||
+ | {...} | ||
+ | ] | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
===Пример=== | ===Пример=== | ||
− | Кейс: Внести данные об отпуске сотрудника - ФИО и период | + | Кейс: Внести данные об отпуске сотрудника - ФИО и период. При нажатии кнопки "Сохранить" выполняться три действия: сначала произойдет вычисление количества дней отпуска, затем данные сохранятся и, наконец, обновится пивот. |
[[Файл:SubmitButton_1.gif|мини|слева|Внесение данных]] | [[Файл:SubmitButton_1.gif|мини|слева|Внесение данных]] | ||
Строка 254: | Строка 335: | ||
}, | }, | ||
"controlsValueCalculateRulesIds": [], | "controlsValueCalculateRulesIds": [], | ||
− | " | + | "Actions": [ |
222, | 222, | ||
111, | 111, | ||
Строка 261: | Строка 342: | ||
"onBeforeClickConditionalActions": [], | "onBeforeClickConditionalActions": [], | ||
"id": 200, | "id": 200, | ||
− | "caption": " | + | "caption": "Сохранить", |
"enable": true, | "enable": true, | ||
"visible": true, | "visible": true, | ||
Строка 462: | Строка 543: | ||
"instanceId": 2, | "instanceId": 2, | ||
"id": 333, | "id": 333, | ||
− | "comment": | + | "comment": "Обновление пивота", |
"discriminator": "RebuildSourceInstanceAction" | "discriminator": "RebuildSourceInstanceAction" | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
], | ], |
Текущая версия на 08:43, 17 сентября 2021
Кнопку "Сохранить" можно реализовать двумя способами:
1. Кнопка Сохранить (ButtonSubmitSourceEntryDto),
2. Пользовательская кнопка (CustomButtonEntry).
Кнопка Сохранить (ButtonSubmitSourceEntryDto) сохраняет данные автоматически в источники, у которых свойство readOnly = false.
Пользовательской кнопке (CustomButtonEntry) необходимо прописать действие, которое сохраняет добавленный элемент в источнике данных.
Обе кнопки могут содержать дополнительные действия помимо сохранения.
Основным отличием является порядок выполнения действий - в кнопке ButtonSubmitSourceEntryDto нельзя управлять порядком сохранения.
Содержание
Сравнение кнопок
Свойство / Тип кнопки | ButtonSubmitSourceEntryDto | CustomButtonEntry |
---|---|---|
Actions | Может быть пустым | Обязательно должно содержать действие, которое сохраняет добавленный элемент в источнике данных |
Управлять порядком выполнения действий | Нельзя | Можно |
ButtonSubmitSourceEntryDto
Примерный алгоритм:
1. В раздел uiSources добавляем элемент управления (строка в данном примере), значения которого будет записывать кнопка.
1 "uiSources": [
2 {...},
3 {
4 ...
5
6 "id": 1,
7 "uiDataSource": {
8 "attribute": {
9 "id": 2,
10 "discriminator": "OwnAttributeDefinitionDto"
11 },
12 "attributeId": null,
13 "sourceId": 1,
14 "discriminator": "UiDataSourceDictionary"
15 },
16 ...
17
18 "discriminator": "StringSourceEntry"
19 }
20 ]
2. В раздел uiSources добавляем элементы управления кнопка ButtonSubmitSourceEntry. Свойство Actions в данном примере пустое, дополнительных действий нет.
1 "uiSources": [
2 {
3 "actionConfirmation": { ... },
4 "Actions": [],
5 "onBeforeClickConditionalActions": [],
6 "submitRuleIds": [],
7 "id": 100,
8 "caption": "Сохранить",
9
10 ...
11
12 "discriminator": "ButtonSubmitSourceEntry"
13 },
14 {...}
15 ]
3. В раздел entryDataSources добавляем источник (справочник в данном примере), в который записываются данные.
Важно, чтобы свойство "isReadOnly" источника (источников), куда записываются данные, принимало значение false.
1 "entryDataSources": [
2 {
3 "dictionaryId": 47,
4
5 ...
6
7 "id": 1,
8 "name": "Список контрагентов",
9 "isReadOnly": false,
10
11 ...
12
13 "discriminator": "DictionaryDataSource"
14 }
15 ],
Кнопка сохранит все введенные данные автоматически.
Пример
Кейс: Добавление нового элемента справочника.
Кнопка Сохранить (контрол id=100) сохрает введенное в строку значение в справочник (источник id=3).
CustomButtonEntry
Пользовательская кнопка CustomButtonEntry требует добавить действие, которое сохраняет добавленный элемент в источнике данных. Действия, "повешанные" на кнопку, будут выполняться последовательно.
Примерный алгоритм:
1. В раздел uiSources добавляем элементы управления. В приведенном примере - дата начала периода, дата окончания периода и строка, которая заполнится рассчитанной длительностью периода.
1
2 "uiSources": [
3 {...},
4 {
5 "id": 222,
6 "caption": "Длительность периода",
7 "uiDataSource": {
8 "attribute": {
9 "id": 20,
10 "discriminator": "OwnAttributeDefinitionDto"
11 },
12 "attributeId": null,
13 "sourceId": 1,
14 "discriminator": "UiDataSourceDictionary"
15 },
16 "discriminator": "StringSourceEntry",
17 ...
18 },
19 {
20 "id": 21,
21 "caption": "Дата начала периода",
22 ...,
23 "discriminator": "DateTimeSourceEntry"
24 },
25 {
26
27 "id": 22,
28 "caption": "Дата конца периода",
29 ...,
30 "discriminator": "DateTimeSourceEntry"
31 },
32
33 {...}
34 ]
2. В раздел uiSources добавляем элементы управления пользовательская кнопка CustomButtonEntry. В Actions в данном примере два действия, сначала рассчитается длинна периода, отобразится в строке и только потом сохранится это значение.
1 "uiSources": [
2 {
3 ...,
4
5 "Actions": [
6 222,
7 111
8 ],
9 "id": 200,
10 "caption": "Сохранить",
11
12 ...
13
14 "discriminator": "CustomButtonEntry"
15 },
16
17 {...}
18 ]
3. В раздел entryDataSources добавляем источник (справочник в данном примере), в который записываются данные.
1 "entryDataSources": [
2 {
3 "dictionaryId": 316,
4 ...,
5 "name": "Длительность отпусков",
6 "isReadOnly": false,
7 "dataEditRuleIds": [],
8 "beforeSaveDataActions": [],
9 "afterSaveDataActions": [],
10 "discriminator": "DictionaryDataSource"
11 },
12 {...}
13 ]
Пример
Кейс: Внести данные об отпуске сотрудника - ФИО и период. При нажатии кнопки "Сохранить" выполняться три действия: сначала произойдет вычисление количества дней отпуска, затем данные сохранятся и, наконец, обновится пивот.