В конфигурации Управление торговлей 11 первая вкладка карточки номенклатуры реализована не через стандартное размещение элементов на форме, а через программный вывод табличного документа. Это архитектурное решение позволяет динамически изменять состав полей в зависимости от функциональных опций и вида номенклатуры. Если вам потребовалось добавить дополнительную область в эту карточку, давайте разберем, как устроен этот механизм и где именно нужно вносить изменения.
Первая вкладка карточки представляет собой поле, в которое программно выводится сформированный табличный документ. Процесс сборки карточки выглядит следующим образом:
НастройкиВидимостиИЗаголовков.ТабличныйДокументКарточкиНоменклатуры.ПолучитьОбласть() программа извлекает нужные блоки и последовательно выводит их в документ методом Вывести().Чтобы найти место, куда «вклиниться», первым делом обратите внимание на модуль менеджера справочника Номенклатура. Именно там сосредоточена логика формирования табличного документа. Ищите функцию с названием ТабличныйДокументКарточкиНоменклатуры.
Если вы хотите добавить свою область, вам не обязательно править типовой макет напрямую, что крайне не рекомендуется для сохранения возможности автоматического обновления конфигурации. Лучший путь — использование расширения конфигурации.
Многие разработчики сталкиваются с трудностью поиска конкретной области в коде. Чтобы эффективно найти, где используется та или иная область (например, ОсновныеПараметрыУчетаЗаголовок), используйте следующие приемы:
Пример кода, отвечающего за получение области, выглядит следующим образом:
// В коде модуля менеджера это выглядит примерно так:
ОбластьЗаголовок = Макет.ПолучитьОбласть("ОсновныеПараметрыУчетаЗаголовок");
// Далее происходит заполнение параметров области
ОбластьЗаголовок.Параметры.Заголовок = НСтр("ru = 'Дополнительная информация'");
// И вывод в результирующий табличный документ
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
Рассмотрим по шагам, как добавить собственную область, не нарушая типовую структуру:
Шаг 1: Создание расширения. Создайте расширение конфигурации и добавьте в него справочник Номенклатура.
Шаг 2: Дополнение макета. В расширении можно добавить свой макет или расширить существующий, добавив в него новую область с нужными вам полями.
Шаг 3: Переопределение логики. Используя расширение, вы можете применить метод После к процедуре заполнения табличного документа. Таким образом, после того как типовая логика отработает и выведет все стандартные блоки, ваш код выведет вашу дополнительную область.
Шаг 4: Работа с расшифровкой. Если ваша дополнительная информация требует интерактивности (например, при клике должно открываться другое окно), обязательно задайте для ячеек табличного документа свойство Расшифровка. Программно это делается так:
// Пример задания расшифровки для ячейки
ОбластьМояОбласть.Области.МояЯчейка.Расшифровка = НоменклатураСсылка;
Использование этого подхода гарантирует, что ваша доработка будет легко поддерживаться при обновлении конфигурации Управление торговлей. Всегда отдавайте предпочтение расширениям, так как они позволяют гибко дополнять функционал, не снимая конфигурацию с поддержки.
Разбирая код в модуле менеджера, вы увидите, как ТабличныйДокумент последовательно собирается из отдельных «кирпичиков» (областей). Добавляя свой «кирпичик» в конце этой цепочки, вы получите желаемый результат — новую информацию на первой вкладке, которая будет выглядеть органично и соответствовать стилистике типовой карточки Номенклатуры.