__ВызыватьМетодыКакСобытия / __CallMethodsAsEvents
Синтаксис:
__ВызыватьМетодыКакСобытия(<Флаг>)
Параметр:
Флаг - необязательный параметр. Число: 0 - отключает, 1 - включает вызов методов как событий.
Возвращает:
Предыдущее установленное значение.
Описание:
Вызов методов как событий влияет на установку номера строки для таблиц, расположенных на форме контекста, а также на подключение таблиц-шаблонов для объектов типа "Таблица", используемых в этом контексте (метод Таблица.ИсходнаяТаблица()).
Вызов метода влияет только на тот контекст, для которого он вызван. До вызова этого метода соответствующий ему флаг установлен в <1>.
Комментарий:
Вызов метода (процедуры или функции) контекста может иметь разный результат в зависимости от того, был ли этот метод вызван из другого метода контекста, либо этот же метод вызван извне, например, по нажатию кнопки на форме. Например, для метода СообщитьНомерСтроки():
Процедура СообщитьНомерСтроки()
Сообщить(тзНаФорме.НомерСтроки());
КонецПроцедуры
Процедура СменитьИСообщить()
тзНаФорме.ПолучитьСтрокуПоНомеру(1);
СообщитьНомерСтроки();
КонецПроцедуры
Вызов же того же метода контекста извне может иметь даже более непредсказуемый результат:
Процедура СменитьИСообщитьДляКонтекста(Конт)
Конт.тзНаФорме.ТекущаяСтрока(2);
Конт.тзНаФорме.ПолучитьСтрокуПоНомеру(1);
Конт.СообщитьНомерСтроки();
КонецПроцедуры
В результате вызова данной процедуры может вывестись как 1, так и 2. В зависимости от версии TurboBL (или 1С++), которую вы используете.
Для устранения данной неоднозначности и был добавлен метод групповых контекстов __ВызыватьМетодыКакСобытия(). Результатом вызова
Конт.__ВызыватьМетодыКакСобытия(0);
СменитьИСообщитьДляКонтекста(Конт);
Конт.__ВызыватьМетодыКакСобытия(1);
СменитьИСообщитьДляКонтекста(Конт);
будет
Цитата:1
2
Заметил, что доку не до конца залил. Каюсь. Буду исправляться.