Difference between revisions of "Студия/OnAttachedButtons"
(Created page with "{{infobox function |name=OnAttachedButtons |element=Текстовое поле, Редактируемое поле, Поле со списком, Список значени...") |
(No difference)
|
Revision as of 08:52, 20 August 2020
| 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;