Платформа 3V/Формы/Компоненты/Основные/Кнопка/Кнопка 'Сохранить'

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

!!!СТРАНИЦА НАХОДИТСЯ В СТАДИИ РАЗРАБОТКИ!!!

Кнопку "Сохранить" можно реализовать двумя способами:
1. кнопка ButtonSubmitSourceEntryDto,
2. кнопка CustomButtonEntry.

Обе кнопки могут содержать дополнительные действия помимо сохранения. Основным отличием является порядок сохранения данных - в кнопке ButtonSubmitSourceEntryDto нельзя управлять порядком сохранения.

ButtonSubmitSourceEntryDto

Кнопка ButtonSubmitSourceEntryDto сохраняет все значения источников, у которых свойство readOnly: false. Таким образом сохраняется все введенные в источники значения.

1 {
2    "confirmation" {...},
3    "nullable": true
4    "submitRuleIds": [],
5    "conditionalActions": [],
6    "onBeforeClickConditionalActions": [],
7    "discriminator": "ButtonSubmitSourceEntry"
8 }

Описание свойств элемента

Свойство Описание
confirmation
nullable
submitRuleIds
conditionalActions
onBeforeClickConditionalActions
discriminator ButtonSubmitSourceEntry

Пример

Имеется справочник контрагентов, ниже представлена серверная карточка для добавления наименования нового контрагента.
1. Добавлен контрол кнопка Сохранить id=100.
Этот вид кнопки сохраняет все введенные данные автоматически, при условии, что источник (источники), куда записываются данные имеет свойство "isReadOnly": false.

 1 {
 2       "actionConfirmation": {
 3         "message": null,
 4         "conditionId": null
 5       },
 6       "controlsValueCalculateRulesIds": [],
 7       "conditionalActions": [],
 8       "onBeforeClickConditionalActions": [],
 9       "submitRuleIds": [],
10       "id": 100,
11       "caption": "Сохранить",
12       "enable": true,
13       "visible": true,
14       "hint": null,
15       "uiDataSource": null,
16       "doActionOnChangeValue": true,
17       "onAfterChangeValueConditionalActions": null,
18       "onAfterChangeValueByClientConditionalActions": null,
19       "rebuildDependentsObjectOnChange": false,
20       "enableRuleIds": [],
21       "visibleRuleIds": [],
22       "access": null,
23       "isValueChanged": false,
24       "expressionId": null,
25       "discriminator": "ButtonSubmitSourceEntry"
26     }

2. Кнопка Сохранить будет сохранять введенное в строку значение в источник - справочник id=3.

 1 {
 2       "dictionaryId": 47,
 3       "hierarchyId": null,
 4       "filter": null,
 5       "sortingOptions": null,
 6       "groupingOptions": null,
 7       "dictionaryAttributes": null,
 8       "defaultValue": [],
 9       "defaultValueExpressionId": null,
10       "parameterId": null,
11       "dictionarySourceSelectionMode": "None",
12       "dataSourceAttributesAdditionsSettings": [],
13       "externalFileStorageUrl": null,
14       "filePrefix": null,
15       "defaultNewElementSettings": null,
16       "id": 3,
17       "name": "Список контрагентов",
18       "isReadOnly": false,
19       "dataEditRuleIds": [],
20       "beforeSaveDataActions": [],
21       "afterSaveDataActions": [],
22       "discriminator": "DictionaryDataSource"
23     
24 }

Здесь два контрола - кнопка Сохранить и строка для ввода нового наименования.
Источник один - справочник в который записываются новые данные, важно, что его свойство isReadOnly имеет значение false, поэтому кнопка типа ButtonSubmitSourceEntry автоматически записывает все введенные данные.

Screenshot 2021-06-18 at 11.37.46.png








Screenshot 2021-06-18 at 11.41.09.png










JSON серверной карточки
 1 {
 2   "id": 315,
 3   "name": "Кнопка сохранить (ButtonSubmitSourceEntry)",
 4   "description": null,
 5   "title": "Пример кнопки Сохранить ButtonSubmitSourceEntry",
 6   "entrySettings": null,
 7   "uiSources": [
 8     {
 9       "actionConfirmation": {
10         "message": null,
11         "conditionId": null
12       },
13       "controlsValueCalculateRulesIds": [],
14       "conditionalActions": [],
15       "onBeforeClickConditionalActions": [],
16       "submitRuleIds": [],
17       "id": 100,
18       "caption": "Сохранить",
19       "enable": true,
20       "visible": true,
21       "hint": null,
22       "uiDataSource": null,
23       "doActionOnChangeValue": true,
24       "onAfterChangeValueConditionalActions": null,
25       "onAfterChangeValueByClientConditionalActions": null,
26       "rebuildDependentsObjectOnChange": false,
27       "enableRuleIds": [],
28       "visibleRuleIds": [],
29       "access": null,
30       "isValueChanged": false,
31       "expressionId": null,
32       "discriminator": "ButtonSubmitSourceEntry"
33     },
34     {
35       "trimSpaces": false,
36       "defaultValue": null,
37       "value": null,
38       "id": 1,
39       "caption": "Новый контрагент",
40       "enable": true,
41       "visible": true,
42       "hint": null,
43       "uiDataSource": {
44         "attribute": {
45           "id": 2,
46           "discriminator": "OwnAttributeDefinitionDto"
47         },
48         "attributeId": null,
49         "sourceId": 3,
50         "discriminator": "UiDataSourceDictionary"
51       },
52       "doActionOnChangeValue": false,
53       "onAfterChangeValueConditionalActions": null,
54       "onAfterChangeValueByClientConditionalActions": null,
55       "enableRuleIds": [],
56       "visibleRuleIds": [],
57       "access": null,
58       "isValueChanged": false,
59       "expressionId": null,
60       "discriminator": "StringSourceEntry"
61     }
62   ],
63   "entryDataSources": [
64     {
65       "dictionaryId": 47,
66       "hierarchyId": null,
67       "filter": null,
68       "sortingOptions": null,
69       "groupingOptions": null,
70       "dictionaryAttributes": null,
71       "defaultValue": [],
72       "defaultValueExpressionId": null,
73       "parameterId": null,
74       "dictionarySourceSelectionMode": "None",
75       "dataSourceAttributesAdditionsSettings": [],
76       "externalFileStorageUrl": null,
77       "filePrefix": null,
78       "defaultNewElementSettings": null,
79       "id": 3,
80       "name": "Список контрагентов",
81       "isReadOnly": false,
82       "dataEditRuleIds": [],
83       "beforeSaveDataActions": [],
84       "afterSaveDataActions": [],
85       "discriminator": "DictionaryDataSource"
86     }
87   ],
88   "parameters": [],
89   "binaryConditionsRules": [],
90   "submitValidateRules": [],
91   "expressions": [],
92   "controlsValueCalculateRules": [],
93   "actions": [],
94   "conditionActionIdsOnOpen": [],
95   "conditionalActions": [],
96   "selectionSets": [],
97   "reportTemplates": [],
98   "useNewDependenciesBuilder": null
99 }

CustomButtonEntry

Кнопка CustomButtonEntry требует добавить действие, которое сохраняет добавленный элемент в источнике данных.

 1 {
 2   "id": 1,
 3   "caption": "Сохранить",
 4   "nullable": true,
 5   "enable": true,
 6   "visible": true,
 7   "hint": null,
 8   "nullable": true
 9   "uiDataSource": null,
10   "doActionOnChangeValue": true,
11   "onAfterChangeValueConditionalActions": null,
12   "onAfterChangeValueActions": null,
13   "onAfterChangeValueByClientConditionalActions": null,
14   "onAfterChangeValueByClientActions": null,
15   "rebuildDependentsObjectOnChange": true,
16   "enableExpressionIds": [],
17   "visibleExpressionIds": [],
18   "isValueChanged"  boolean
19   "expressionId": [],
20   "controlsValueCalculateRulesIds"[],
21   "actions"  [ 51, 50]
22   "onBeforeClickConditionalActions": [],
23   "onBeforeClickActions": [],
24   "submitRuleIds": [],
25   "discriminator": CustomButtonEntry,
26 }