Difference between revisions of "OnMark"

From SunFlurry wiki
Jump to: navigation, search
 
m (1 revision imported)
 
(2 intermediate revisions by 2 users not shown)
Line 17: Line 17:
 
== Синтаксис ==
 
== Синтаксис ==
 
<code>
 
<code>
'''OnMark'''(''<Элемент>'',''<Пометка (INT)>'',{{ByRef|''<Разрешить действие (INT,OUT)>{{Default|{{eq}}1}}}}''):<Текст возникшей ошибки (STRING)>
+
'''OnMark'''(''<Элемент>'',''<Пометка (INT)>'',{{OptionalByRef|<Разрешить действие (INT,OUT)>{{Default|{{eq}}1}}}}{{Optional|,<Номер элемента при выделении диапазона (INT)>}}):<Текст возникшей ошибки (STRING)>
 
</code>
 
</code>
 
==== Аргументы ====
 
==== Аргументы ====
 
* <code>''<Элемент>''</code> - Элемент справочника или документ, для которого производится попытка удаления (отмены удаления).
 
* <code>''<Элемент>''</code> - Элемент справочника или документ, для которого производится попытка удаления (отмены удаления).
 
* <code>''<Пометка (INT)>''</code> - Ноль, если производится отмена удаления, единица, если производится удаление.
 
* <code>''<Пометка (INT)>''</code> - Ноль, если производится отмена удаления, единица, если производится удаление.
* <code>''<Разрешить действие (INT,OUT)>{{Default|{{eq}}1}}}}''</code> - {{ByRef}} При нулевом значении этого аргумента, действие будет остановлено без вывода текста ошибки.
+
* <code>''<Разрешить действие (INT,OUT)>{{Default|{{eq}}1}}}}''</code> - {{Optional}} {{ByRef}} При нулевом значении этого аргумента, действие будет остановлено без вывода текста ошибки.
 +
* <code>''<Номер элемента при выделении диапазона (INT)>{{Default|{{eq}}1}}}}''</code> - {{Optional}} Аргумент передается, как ноль, если удаление или отмена удаления производится для одного элемента, иначе был выделен диапазон элементов и в данном аргументе передается порядковый номер элемента из диапазона (не индекс элемента в таблице).
 
==== Возвращаемое значение ====
 
==== Возвращаемое значение ====
 
Функция должна возвратить пустое значение (или пустую строку) для того, чтобы разрешить удаление (отмену удаления) объекта. Для создания исключения результат функции должен содержать текст сообщения о причине невозможности выполнить действие.
 
Функция должна возвратить пустое значение (или пустую строку) для того, чтобы разрешить удаление (отмену удаления) объекта. Для создания исключения результат функции должен содержать текст сообщения о причине невозможности выполнить действие.
Line 29: Line 30:
 
== Примеры ==
 
== Примеры ==
 
<pre>
 
<pre>
Function OnMark(Element,Mark,ByRef AllowAction)
+
Function OnMark(Element,Mark,ByRef AllowAction,DelIndex)
 
   AllowAction:=1;
 
   AllowAction:=1;
 
   If pos("DB.JOURNAL.",typestr(Element))=1 Then
 
   If pos("DB.JOURNAL.",typestr(Element))=1 Then

Latest revision as of 11:38, 18 November 2022

  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