Difference between revisions of "OnSave"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:52, 7 February 2021
OnSave (События объектов БД) | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Событие, вызываемое при попытке записи открытого для визуального редактирования элемента справочника или документа. Параметр Разрешить действие может запретить запись, однако сообщения об ошибке выведено не будет. Если же процедура вернет не пустую строку, запись также произведена не будет, а будет создано исключение с описанием, являющимся результатом исполнения функции.
Синтаксис
OnSave(<Элемент>,<Разрешить действие (INT,OUT)>=1):<Текст возникшей ошибки (STRING)>
Аргументы
<Элемент>
- Элемент справочника или документ, для которого производится попытка записи.<Разрешить действие (INT,OUT)>=1}}
- (возможен аргумент-переменная (ByRef)) При нулевом значении этого аргумента, запись будет остановлена без вывода текста ошибки.
Возвращаемое значение
Функция должна возвратить пустое значение (или пустую строку) для того, чтобы разрешить запись объекта. Для создания исключения результат функции должен содержать текст сообщения о причине невозможности записи объекта.
Примеры
Function OnSave(Эл,ByRef флРазрешить) If DBTypeStr(Эл)<>"REF" Then Exit; EndIf; If Эл.Selected()>0 Then Эл2:=Эл.Copy(); If Эл2.Code<>Эл.Code Then //Запретить изменение кода элемента при интеративной записи //Коды используются для синхронизации и не должны меняться Эл.Code:=Эл2.Code; EndIf; EndIf; //Проверка наличия реквизита "Name" if not IsEmpty(Struct.Ref(Эл.DBName()).Props("Name")) Then If IsBlankString(Эл.Name) Then //Запретить запись с пустым реквизитом "Name" Exit "Наименование элемента не может быть пустым!"; EndIf; EndIf; EndFunction