OnMark

From SunFlurry wiki
Revision as of 11:38, 18 November 2022 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  OnMark (События объектов БД)
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Расположение:Любой глобальный модуль
Визуальность:Да

Событие, вызываемое при попытке удалить (или отменить удаление) открытый для визуального редактирования элемент справочника или документ, либо при попытке удалить (или отменить удаление) элемент справочника или документ в журнале документов или таблице элементов справочника (документов). Параметр пометка равен 0, если производится отмена удаления и 1, если производится удаление. Параметр Разрешить действие может запретить удаление, однако сообщения об ошибке выведено не будет. Если же процедура вернет не пустую строку, действие также произведено не будет, а будет создано исключение с описанием, являющимся результатом исполнения функции.

Данное событие также вызывается для элементов журналов (как журналов документов, так и справочников).

Синтаксис

OnMark(<Элемент>,<Пометка (INT)>,<Разрешить действие (INT,OUT)>=1,<Номер элемента при выделении диапазона (INT)>):<Текст возникшей ошибки (STRING)>

Аргументы

  • <Элемент> - Элемент справочника или документ, для которого производится попытка удаления (отмены удаления).
  • <Пометка (INT)> - Ноль, если производится отмена удаления, единица, если производится удаление.
  • <Разрешить действие (INT,OUT)>=1}} - (необязательный аргумент) (возможен аргумент-переменная (ByRef)) При нулевом значении этого аргумента, действие будет остановлено без вывода текста ошибки.
  • <Номер элемента при выделении диапазона (INT)>=1}} - (необязательный аргумент) Аргумент передается, как ноль, если удаление или отмена удаления производится для одного элемента, иначе был выделен диапазон элементов и в данном аргументе передается порядковый номер элемента из диапазона (не индекс элемента в таблице).

Возвращаемое значение

Функция должна возвратить пустое значение (или пустую строку) для того, чтобы разрешить удаление (отмену удаления) объекта. Для создания исключения результат функции должен содержать текст сообщения о причине невозможности выполнить действие.


Примеры

Function OnMark(Element,Mark,ByRef AllowAction,DelIndex)
  AllowAction:=1;
  If pos("DB.JOURNAL.",typestr(Element))=1 Then
    //Для элементов жерналов, найдем реальный элемент справочника/документ
    Element:=Element.LinkedObject();
  EndIf;
  If DBTypeStr(Element)<>"REF" Then
    Exit;
  EndIf;
  If (Mark=1)And((Element.DBName()="Контрагенты")Or(Element.DBName()="Договоры"))And(not Пользователь.КредитныйКонтролер) Then
    //Запретить удаление элементов справочников Контрагенты и Договоры без требуемых прав.
    Box("Чтобы отменить удаление этого клиента обратитесь к кредитному контролеру!",Q_STOP);
    AllowAction:=0;
    Exit;
  ElseIf (Mark=1)And(Element.DBName()="Номенклатура") Then
    If Element.IsFolder() Then
      Box("Нельзя удалять группы этого справочника!",Q_STOP);
      AllowAction:=0;
      Exit;
    EndIf;
  EndIf;
EndFunction