Difference between revisions of "OnMark"
1>Admin |
m (1 revision imported) |
(No difference)
| |
Latest revision as of 10: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