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