Как изменить макет печатной формы в УТ 11 и добавить в него новые колонки (Артикул и Код)

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе с программным продуктом 1С:Управление торговлей 11 (УТ 11) часто возникает необходимость кастомизировать печатные формы под требования бизнеса. Одной из самых популярных задач является добавление дополнительных колонок, таких как Артикул и Код, в печатную форму «Реализация товаров и услуг». Однако при редактировании макета в режиме «1С:Предприятие» пользователи часто сталкиваются с тем, что внесенные изменения (особенно параметры) не сохраняются. В этой статье мы подробно разберем, почему это происходит, где искать «спрятанный» код печати и как правильно расширить возможности печатных форм.

Почему не сохраняются параметры в макете в режиме «Предприятие»

Рассмотрим ситуацию: вы открываете редактирование макета, выбираете ячейку, устанавливаете ей тип Параметр, вписываете имя, нажимаете «Записать», но после переоткрытия ячейка снова становится текстовой и пустой. Выясним причину этого поведения, которое часто кажется багом системы.

Проблема кроется в особенностях работы встроенного табличного редактора платформы 1С:Предприятие 8.3. Чтобы изменение свойств ячейки (превращение ее из текста в параметр) зафиксировалось в XML-структуре макета, необходимо выполнить следующие действия:

  1. После ввода имени параметра в поле свойств ячейки обязательно нажмите клавишу Enter.
  2. Переключите фокус на любую другую ячейку макета перед тем, как нажать общую кнопку «Записать и закрыть».
  3. Убедитесь, что имя параметра не содержит пробелов и спецсимволов. Имя должно соответствовать правилам именования переменных в 1С (начинаться с буквы, не содержать пробелов).

Если закрыть окно редактирования сразу после ввода текста без подтверждения ввода (Enter) или смены фокуса, платформа может проигнорировать последние изменения свойств, считая их незавершенными.

Проверяем стандартные настройки системы

Прежде чем приступать к программированию или ручной правке макета, проанализируем стандартные возможности УТ 11. Разработчики предусмотрели базовую настройку для вывода дополнительных данных номенклатуры. Пройдем по пути:

НСИ и администрирование — Настройка НСИ и разделов — Номенклатура — Единицы измерения

Найдите настройку «Дополнительная колонка при печати». Здесь можно выбрать одно из двух значений: Код или Артикул. Если вашей задаче достаточно выводить только одно из этих полей, то редактировать макет и код не потребуется — система сама подставит выбранное значение в стандартную колонку.

Однако, если бизнес-процесс требует вывода и Кода, и Артикула одновременно в разных колонках, нам придется перейти к модификации макета и программного кода.

Где находится код, отвечающий за печать в УТ 11

В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем), к которым относится и УТ 11.5, логика печати распределена между несколькими объектами. Разберем по шагам, где искать нужные процедуры.

Основная точка входа для печати любого документа (например, РеализацияТоваровУслуг) находится в Модуле менеджера этого документа. Рассмотрим типовую структуру этого модуля:

  1. Процедура ДобавитьКомандыПечати: Здесь регистрируются все доступные печатные формы для объекта.
  2. Процедура Печать: Это экспортная процедура, которая вызывается платформой при нажатии кнопки печати. В ней происходит определение того, какая именно форма выбрана, и вызывается соответствующий обработчик.

Зачастую в самих документах кода формирования данных крайне мало. В УТ 11 основная тяжеловесная логика по сбору данных вынесена в специализированные Общие модули. Проанализируем типичные названия таких модулей:

Для добавления новых данных в печатную форму недостаточно просто добавить параметр Артикул в макет. Нужно, чтобы программный код передал в этот параметр данные. Посмотрим на пример того, как это выглядит в коде:


// В модуле менеджера или специализированном модуле печати
// Ищем формирование структуры данных (Query)
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ТаблицаТовары.Номенклатура.Артикул КАК Артикул,
    |   ТаблицаТовары.Номенклатура.Код КАК Код,
    |   ТаблицаТовары.Количество КАК Количество,
    |   ...
    |ИЗ
    |   Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары
    |ГДЕ
    |   ТаблицаТовары.Ссылка В (&СписокСсылок)";

Вам необходимо найти место формирования этого запроса и убедиться, что нужные поля (Код, Артикул) выбираются из справочника номенклатуры.

Использование внешних печатных форм (ВПФ) — лучший путь

Редактирование макета напрямую в конфигурации или через режим «Предприятие» имеет свои минусы: при обновлении программы ваши изменения могут «слететь» или конфликтовать с новыми релизами. Мы рекомендуем использовать механизм Внешних печатных форм.

Разберем алгоритм создания ВПФ для добавления Артикула и Кода:

  1. Создайте новую внешнюю обработку в конфигураторе.
  2. Добавьте в нее макет, скопировав его из типового документа РеализацияТоваровУслуг.
  3. В модуле объекта внешней обработки реализуйте обязательные функции согласно стандартам БСП (функция СведенияОВнешнейОбработке и процедура Печать).
  4. В макете добавьте новые колонки, назовите ячейки ПараметрАртикул и ПараметрКод.
  5. В коде формирования печатной формы найдите цикл обхода товаров и заполните эти параметры:

// Пример заполнения области макета во внешней печатной форме
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Пока Выборка.Следующий() Цикл
    ОбластьСтрока.Параметры.Заполнить(Выборка);
    // Явное указание, если имена в запросе и макете отличаются
    ОбластьСтрока.Параметры.ПараметрАртикул = Выборка.Артикул;
    ОбластьСтрока.Параметры.ПараметрКод = Выборка.Код;
    ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;

Резюме

Подведем итог: если у вас не сохраняются параметры в макете, проверьте корректность завершения ввода в ячейку (Enter). Если вам нужно добавить одновременно Код и Артикул, лучше всего воспользоваться механизмом Внешних печатных форм. Это позволит сохранить конфигурацию на поддержке и обеспечит гибкость при обновлениях. Код печати в УТ 11 всегда следует искать в Модуле менеджера, но будьте готовы к тому, что основные SQL-запросы будут скрыты в недрах общих модулей с префиксом ЛогикаПечати.

← На главную