При работе с программным продуктом 1С:Управление торговлей 11 (УТ 11) часто возникает необходимость кастомизировать печатные формы под требования бизнеса. Одной из самых популярных задач является добавление дополнительных колонок, таких как Артикул и Код, в печатную форму «Реализация товаров и услуг». Однако при редактировании макета в режиме «1С:Предприятие» пользователи часто сталкиваются с тем, что внесенные изменения (особенно параметры) не сохраняются. В этой статье мы подробно разберем, почему это происходит, где искать «спрятанный» код печати и как правильно расширить возможности печатных форм.
Рассмотрим ситуацию: вы открываете редактирование макета, выбираете ячейку, устанавливаете ей тип Параметр, вписываете имя, нажимаете «Записать», но после переоткрытия ячейка снова становится текстовой и пустой. Выясним причину этого поведения, которое часто кажется багом системы.
Проблема кроется в особенностях работы встроенного табличного редактора платформы 1С:Предприятие 8.3. Чтобы изменение свойств ячейки (превращение ее из текста в параметр) зафиксировалось в XML-структуре макета, необходимо выполнить следующие действия:
Если закрыть окно редактирования сразу после ввода текста без подтверждения ввода (Enter) или смены фокуса, платформа может проигнорировать последние изменения свойств, считая их незавершенными.
Прежде чем приступать к программированию или ручной правке макета, проанализируем стандартные возможности УТ 11. Разработчики предусмотрели базовую настройку для вывода дополнительных данных номенклатуры. Пройдем по пути:
НСИ и администрирование — Настройка НСИ и разделов — Номенклатура — Единицы измерения
Найдите настройку «Дополнительная колонка при печати». Здесь можно выбрать одно из двух значений: Код или Артикул. Если вашей задаче достаточно выводить только одно из этих полей, то редактировать макет и код не потребуется — система сама подставит выбранное значение в стандартную колонку.
Однако, если бизнес-процесс требует вывода и Кода, и Артикула одновременно в разных колонках, нам придется перейти к модификации макета и программного кода.
В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем), к которым относится и УТ 11.5, логика печати распределена между несколькими объектами. Разберем по шагам, где искать нужные процедуры.
Основная точка входа для печати любого документа (например, РеализацияТоваровУслуг) находится в Модуле менеджера этого документа. Рассмотрим типовую структуру этого модуля:
Зачастую в самих документах кода формирования данных крайне мало. В УТ 11 основная тяжеловесная логика по сбору данных вынесена в специализированные Общие модули. Проанализируем типичные названия таких модулей:
УправлениеПечатьюУТ — общие механизмы печати торговых документов.РеализацияТоваровУслугЛогикаПечати — (или похожие названия в зависимости от версии) содержит функции формирования запросов к базе данных.Для добавления новых данных в печатную форму недостаточно просто добавить параметр Артикул в макет. Нужно, чтобы программный код передал в этот параметр данные. Посмотрим на пример того, как это выглядит в коде:
// В модуле менеджера или специализированном модуле печати
// Ищем формирование структуры данных (Query)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТовары.Номенклатура.Артикул КАК Артикул,
| ТаблицаТовары.Номенклатура.Код КАК Код,
| ТаблицаТовары.Количество КАК Количество,
| ...
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&СписокСсылок)";
Вам необходимо найти место формирования этого запроса и убедиться, что нужные поля (Код, Артикул) выбираются из справочника номенклатуры.
Редактирование макета напрямую в конфигурации или через режим «Предприятие» имеет свои минусы: при обновлении программы ваши изменения могут «слететь» или конфликтовать с новыми релизами. Мы рекомендуем использовать механизм Внешних печатных форм.
Разберем алгоритм создания ВПФ для добавления Артикула и Кода:
РеализацияТоваровУслуг.СведенияОВнешнейОбработке и процедура Печать).ПараметрАртикул и ПараметрКод.
// Пример заполнения области макета во внешней печатной форме
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Пока Выборка.Следующий() Цикл
ОбластьСтрока.Параметры.Заполнить(Выборка);
// Явное указание, если имена в запросе и макете отличаются
ОбластьСтрока.Параметры.ПараметрАртикул = Выборка.Артикул;
ОбластьСтрока.Параметры.ПараметрКод = Выборка.Код;
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
Подведем итог: если у вас не сохраняются параметры в макете, проверьте корректность завершения ввода в ячейку (Enter). Если вам нужно добавить одновременно Код и Артикул, лучше всего воспользоваться механизмом Внешних печатных форм. Это позволит сохранить конфигурацию на поддержке и обеспечит гибкость при обновлениях. Код печати в УТ 11 всегда следует искать в Модуле менеджера, но будьте готовы к тому, что основные SQL-запросы будут скрыты в недрах общих модулей с префиксом ЛогикаПечати.