Хотелось бы услышать мнения уважаемого сообщества по следующему вопросу.
Процедура модуля может выполняться в разных режимах: в режиме обычной процедуры, либо в режиме события, предопределенного, либо вызываемого из формул элементов. Вот пример:
Процедур СостояниеТЗНаФорме()
Сообщить("Номер строки="+тзНаФорме.НомерСтроки);
Сообщить("Текущая строка="+тзНаФорме.ТекущаяСтрока());
КонецПроцедуры
Такая процедура может выдать разные варианты в зависимости от того, вызвана она из другой процедуры, либо вызвана, например, по щелчку на таблице значений.
То же самое и для этой процедуры, вызываемой извне через
КонтекстФормы.СостояниеТЗНаФорме(). Мы можем захотеть ее вызвать как метод объекта, тогда
НомерСтроки не должен портиться. Либо мы вызываем ее как процедуру контекста извне.
Но в 1С++ начиная с версии 2.0.3.1 такая запись приведет к тому, что процедура будет выполнена как будто извне, то есть с переустановкой
НомераСтроки.
Для разделения таких вариантов можно реализовать разные способы вызова процедур/функций. Думаю, что вызов через точку должен работать просто как вызов метода объекта, без дополнителбных действий.
КонтекстФормы.СостояниеТЗНаФорме();
Для вызова процедуры, как события контекста можно сделать разные варианты:
1. Самый простой.
Система.StartBatch(КонтекстФормы);
КонтекстФормы.СостояниеТЗНаФорме();
Система.EndBatch(КонтекстФормы);
2. Вызвать как событие.
КонтекстФормы.__ВызватьСобытие("СостояниеТЗНаФорме");
либо
КонтекстФормы.__ВыполнитьПроцедуруФункцию("СостояниеТЗНаФорме");
3. Через вспомогательный флаг.
КонтекстФормы.__ИсполнятьПроцедурыВБатче(1);
КонтекстФормы.СостояниеТЗНаФорме();
4. Еще один вариант.
КонтекстФормы.__ВыполнитьСледующуюПроцедуруВБатче(1);
КонтекстФормы.СостояниеТЗНаФорме();
Можно, конечно, реализовать и все четыре варианта.
- уже реализованы и, по сути - это системные методы 1С. Сейчас для пользовательских методов конткста они вызываются автоматически. Для встроенных методов контекстов (например, НоваяСтрока()) они могут вызываться вручную.
Я же предлагаю никогда не вызывать их автоматически, а реализовать один или несколько удобных механизмов их вызова.