OnSave

From SunFlurry wiki
Revision as of 21:40, 2 March 2019 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  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