Возможно приемы описанные ниже уже были описаны раньше, или всем известны и очевидны, но я в статьях, на формуах я их не встречал. Поэтому считаю целесообразным написать, вдруг кому пригодятся.
Всем известно что при внесении изменений в типовые конфигурации выгоднее руководствоваться принципом "Добавлять - лучше чем изменять". При небольших изменениях, например пользовательского интерфейса для облегчения последующего обновления лучше делать изменения программно. Это очевидно. И при открытии формы вставлять код, делающий изменения на форме, в процедуру события "При открытии".
В типовых конфигурациях 1С можно отказать от вставки кода в обработчик события "При открытии" :) Почти все типы форм основных документов, справочников при открытии вызывают процедуры общих модулей, в которые параметром передается открывшаяся форма.
В форме документа и элемента справочника - "УстановитьДоступностьПоляВводаНомера"
В форме списка и выбора документов - "УстановитьОтборПоОрганизации"
Добавив в эти процедуры всего одну строчку кода вызывающую нашу процедуры - получаем псевдо подписку на событие "При открытии" большинства форм документов и справочников конфигурации не внося в сами формы ни строчки кода. т.е не изменяя их. В самой процедуре определяем какая форма открылась например получив основной реквизит формы ,или любым другим способом и выполняем с формой все что необходимо - добавляем столбцы ТЧ, кнопки, переопределяем обработчики событий формы и элементов формы и т.д
Также можно не вносить изменения в обработчики событий элементов формы, а переопределять их, добавив свою процедуру в модуль формы, вызывающую, и первоначальную процедуру-обработчик события, и дополнительно выполняющую необходимые нам действия. При обновлении эта процедура останется в модуле как добавленная, а типовую процедуру-обработчик события можно безблезненно обновить.
Вот... :)
Добавлено 02.06.2009
Сегодня tsd при обсуждении механизма редактирования добавленных реквизитов объектов предложил еще один вариант организации "псевдо подписки на открытие формы" и нетолько.
За что ему бааальььшооооеее спасибо :)
А именно.
В своих последних типовых конфигурациях на 8 платформе фирма 1С реализовала такую полезную весчь как "Советы". Как любые ленивые программисты - программисты фирмы 1С реализовали кнопку "Советы" программно. Т.е перед открытием формы вызывается процедура общего модуля "РаботаСДиалогами" - "УстановитьПодменюСоветы". Параметром ей передается "КоманднаяПанель". У передаваемой командной панели есть свойство "ИсточникДействия" - типа "Форма". Собственно она то нам и нужна!!! :)
Об обработчике нажатия кнопки "Советы" программисты 1С тоже позаботились. Процедура - обработчик нажатия в форме вызывает также процедуру общего модуля "РаботаСДиалогами" - "ОткрытьСоветы". Форму в этой процедуре уже (наверное...) не получить, но и не больно то хотелось. Эта процедура нам может понадобиться для размещения обработчиков событий нажатия НАМИ созданных новых кнопок. Определять что за кнопка можно например по имени.
Таким образом мы, как не менее ленивые, чем программисты фирмы 1С можем использовать данный механизм не только для "псевдо подписки" на открытие формы, но и в некоторых случаях разместить обработчики событий элементов формы вне модуля формы. (Эхх, если бы это реализовали на уровне платформы....) Разумно применяя данную методику можно значительно снизить количество изменений типовых объектов конфигураций.
Вот... :)