Студия/OnAttachedButtons
OnAttachedButtons (Визуальные события) | |||||||
---|---|---|---|---|---|---|---|
|
Событие, возникающее при нажатии на связанный элемент (саму кнопку или дополнительную кнопку выбора из меню). Событие работает как для линейных, для табличных элементов, так и при редактировании ячеек таблицы или электронной таблицы.
Аргументы
<Index (INT)>
- Цифровой идентификатор активированного связанного элемента (см. следующую статью).<Method (INT)>
- Способ вызова, может принимать следующие значения:- 0 -- был активирован сам элемент
- 1 -- была активирована дополнительная кнопка слева от элемента (см. Связанные элементы).
<Object>
- Используется в некоторых вызовах (к примеру, при открытии в режиме редактирования), указывает на объект операции (часто содержимое поля для редактирования).<Result (INT)>
- (возможен аргумент-переменная (ByRef)) Переменная результата может принимать значения:- 0 (по умолчанию) -- Событие обработано и вызывать глобальное событие не требуется (цепочка вызова событий останавливается).
- 1 -- Событие не обработано, будет продолжена цепочка вызова (см. OnAttachedButtons).
Примеры
//Пример события OnAttachedButtons для таблицы строчной части документа aEl:=Form.Object; MainTab:=Form.MainTab.Value; aTab:=aEl.LineParts("Номенклатура"); aTab.CurLine:=MainTab.SelectedLine; If (Index=_ABB_DEL)or(Index=_ABB_DELONE) Then //Изменить обработку стандартного события If MainTab.SelectedLine<1 Then Exit; EndIf; If AskQuestion("Удалить выбранную строку таблицы, вы уверены?",Q_QUESTION+Q_YESNO)<>R_YES Then Exit; EndIf; aTab.Remove(aTab.CurLine); глТаблицаУкладочнойТары(aEl); Form.CallOnStatusChange(); ElseIf Index=_ABB_ADDMANY Then //Задать нестандартное событие глПодборВДокумент(aEl); Form.CallOnStatusChange(); ElseIf Index=_ABB_MASSCHNG Then //Задать нестандартное событие а:=глВыполнитьВыборВМеню("Заполнить отрицательными остатками склада@Заполнить отрицательными остатками склада без учета резерва",,2); If (а=1)or(а=2) Then If aEl.Склад.Selected()=0 Then Box("Не выбран склад!",Q_STOP); Exit; EndIf; If aTab.Size()>0 Then If AskQuestion("Очистить строчную часть перед заполнением?",Q_QUESTION+Q_YESNO)=R_YES Then aTab.ClearLines(); EndIf; EndIf; aList:=List.Create(); aTab.CopyTo(aList,1,aTab.Size(),"Номенклатура"); Tab1:=Stor.ОстаткиТМЦ.Gross("Номенклатура","Количество",,0,"Склад,Номенклатура",aEl.Склад,aList); If а=1 Then Tab2:=Stor.РезервыТМЦ.Gross("Номенклатура","Количество",,0,"Склад,Номенклатура",aEl.Склад,aList); Tab2.Select(); While Tab2.Next() Do Tab2.Количество:=-Tab2.Количество; EndDo; Tab1.FullJoin(Tab2,"Номенклатура","Количество"); EndIf; Tab1.Select(); While Tab1.Next() Do If Tab1.Количество<0 Then if aTab.FindAndGoto(Tab1.Номенклатура,,"Номенклатура")=0 Then aTab.NewLine(); aTab.Номенклатура:=Tab1.Номенклатура; EndIf; aTab.Количество:=aTab.Количество-Tab1.Количество; EndIf; EndDo; //Вызов OnInitLine для измененных строк Form.MainTab.InvokeEvent("OnInitLine","IndexFrom,IndexTo",1,MainTab.Size()); EndIf; Else //Остальные события будут обработаны стандратно Result:=1; EndIf;