Каталог решений - Как размещать на формах типовых объектов свои элементы, не изменяя сами объекты (Обычное приложение)

Как размещать на формах типовых объектов свои элементы, не изменяя сами объекты (Обычное приложение)

Как размещать на формах типовых объектов свои элементы, не изменяя сами объекты (Обычное приложение)

В наличии

В типовых конфигурация вполне можно попробовать организовать свою подписку на событие формы "При открытии".

Категория:

Описание

По поводу обновления доработанных конфигураций есть немало статей. Немало внимания уделяется, пожалуй, самому сложному – обновлению измененных форм.

Я бы хотел рассказать про возможность, с помощью которой можно легко размещать на формах типовых объектов (справочников, документов) свои реквизиты, не редактирую сами формы вообще. // Рассматриваются конфигурации БП2 и ЗУП2, в остальных, думаю, можно сделать аналогичным способом.

Данный метод не подходит, если необходимо серьезно изменить форму, добавить свои обработчики событий. В таком случае вам следут обратиться к статье TormozIt – «Методика переопределения и вызова обработчиков событий формы в 1С 8».

Мы рассматриваем простой пример, когда вы добавляете в документ и его ТЧ несколько реквизитов и просто хотите, чтобы они показывались на форме объекта.

Чтобы не трогать саму форму, мы вполне можем добавить в ее модуль нужные поля ввода и колонки в табличное поле, связанное с ТЧ, программно:

Колонка = Форма.ЭлементыФормы.ИмяТП.Колонки.Добавить("ИмяКолонки", "ЗаголовокКолонки");

Колонка.УстановитьЭлементУправления(Тип("ПолеВвода"));

Колонка.Данные = "ИмяКолонки";

И поместить вызов этой процедуры в обработчике «При открытии».

Если бы в платформе была подписка на событие формы «При открытии», мы могли бы использовать ее, и нам бы не пришлось менять модуль формы.

 Поскольку данной функциональности в платформе нет, будем использовать обходной способ.

Способ заключается в том, что почти в любой типовой форме справочника или документа присутствует обработчик «При открытии».

В нем, в частности, используется механизм нумерации объектов:

МеханизмНумерацииОбъектов.УстановитьДоступностьПоляВводаНомера(Метаданные(), ЭтаФорма, ЭлементыФормы.ДействияФормы.Кнопки.Подменю,ЭлементыФормы.Номер);

По большому счету рассматривать этот факт можно так:  имеется общая процедура, которая вызывается из почти всех типовых форм, и одним из параметров которой является сама форма.

Исключения – например, справочник Сотрудники Организаций, где код является табельным номером, и данный механизм нумерации не используется.

Этот факт идеально подходит для наших целей.

Все что нам остается – разместить в конце этой процедуры примерно такой код:

модСобственныеПроцедурыИФункции .ДоработатьФормуПриОткрытии(ФормаОбъекта);

И в этой процедуре из собственного модуля мы спокойно можем размещать элементы на форме или колонки в ТП, менять привязки, изменять текст шапки какого-нибудь типового элемента и т.д.

Приведу простейший пример, когда это может быть использовано.

В типовой конфигурации вам требуется добавить в табличные части N документов реквизит «СвойРеквизит1». Вам необходимо, чтобы пользователь видел его и мог заполнить.

Добавление колонок в ТП мы сделаем, используя данный метод, поэтому для изменения формы N документов нам потребуется изменить только один типовой модуль.

Данный метод, безусловно, не является универсальным, но в некоторых случаях может облегчить жизнь.

has been added to your cart:
Оформление заказа