Как перенести артикул товара на отдельную строку при печати ценников в 1С 7.7 Торговля и склад?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

При оформлении витрин и печати ценников в типовой конфигурации 1С:Торговля и склад 7.7 (редакция 9.2) часто возникает задача разделить вывод наименования товара и его артикула. По умолчанию система выводит артикул сразу после полного наименования через пробел, что делает ценник перегруженным и нечитаемым. Рассмотрим, почему простое редактирование кода не всегда дает результат и как правильно настроить перенос артикула на отдельную строку.

Разберем весь процесс последовательно: от программного формирования строки с разделителем до редактирования макета и поиска фактического файла обработки печати.

Шаг 1. Определение фактического файла печатной формы

Главная причина, по которой изменения в конфигураторе не отражаются на печатной форме ценника, заключается в механизме подключения печатных форм в платформе 1С 7.7. Типовая конфигурация может вызывать печать из встроенных метаданных либо из внешних файлов обработок (с расширением .ert), расположенных в каталогах информационной базы.

Проанализируем, откуда именно вызывается печать ценников в вашей системе:

  1. Печать из формы списка справочника «Номенклатура»: как правило, в типовой конфигурации используется внешняя обработка PRPRICE.ERT, расположенная в каталоге ExtForms информационной базы. Если править конфигурацию или другие файлы, результат печати из справочника не изменится.
  2. Печать из документов («Поступление ТМЦ», «Переоценка розница», «Перемещение ТМЦ»): обычно задействуется обработка печати printcen.ert из подкаталога ExtForms\PrnForms либо встроенная обработка ПечатьЦенников.

Чтобы изменения вступили в силу, откроем в конфигураторе через пункт меню Файл > Открыть именно тот файл .ert, который физически используется при печати.

Шаг 2. Программное добавление переноса строки в коде

В платформе 1С 7.7 для добавления переноса строки внутри текстового выражения используется предопределенная системная переменная РазделительСтрок (эквивалент комбинации символов Симв(13) + Симв(10) — CR/LF).

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


ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");

Заменим пробел перед артикулом на системную переменную РазделительСтрок:


ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, РазделительСтрок + СокрЛП(Докум.Номенклатура.Артикул), "");

Разберем, как работает эта конструкция: если в базе включена константа ПоказыватьАртикул, то к полному наименованию товара добавляется символ перевода строки и затем артикул без лишних пробелов с помощью функции СокрЛП(). Если константа выключена, артикул к наименованию не добавляется.

Шаг 3. Настройка свойств ячейки и высоты строки в макете

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

Выполним настройку макета (вкладка Таблица в открытой обработке):

  1. Выделим ячейку, в которую выводится параметр ПечНаименованиеТМЦ (или ПечНаименование).
  2. Нажмем правую кнопку мыши и выберем Свойства (или нажмем клавиши Alt + Enter).
  3. В открывшемся окне перейдем на вкладку Текст.
  4. В поле Положение (или Контроль) выберем режим Переносить вместо значения Авто или Обрезать.
  5. Проверим высоту строки таблицы: выделим номер строки секции слева, откроем свойства строки и установим флаг Автовысота. Если ячейка объединена по вертикали или горизонтали, автоматический расчет высоты в платформе 7.7 не работает — в этом случае вручную увеличим высоту строки секции, потянув за нижнюю границу номера строки вниз, чтобы поместились обе строки текста.

Шаг 4. Альтернативный вариант: вывод артикула в отдельную ячейку макета

Склеивание наименования и артикула в одну строку с разделителем имеет недостаток: невозможно задать для артикула отдельный размер шрифта, начертание или особое выравнивание. Более надежный и гибкий способ — разделить вывод на две независимые ячейки макета.

Рассмотрим, как реализовать этот вариант по шагам:

  1. В макете ценника добавим под ячейкой с наименованием новую строку секции и вставим ячейку с типом Выражение, указав в качестве текста параметр ПечАртикул.
  2. В модуле печатной формы разделим переменные:

ПечНаименование = СокрЛП(Докум.Номенклатура.ПолнНаименование);
ПечАртикул      = ?(Константа.ПоказыватьАртикул = 1, "Арт: " + СокрЛП(Докум.Номенклатура.Артикул), "");

В процедуре вывода секции ценника (например, ДобавитьЦенник) обе переменные будут подставлены в свои ячейки. Это гарантирует аккуратный внешний вид ценника без риска смещения или обрезания текста при длинных наименованиях товаров.

Шаг 5. Использование типа ячейки «Шаблон»

Еще один удобный способ в 1С 7.7 — использование типа ячейки Шаблон прямо в макете без модификации кода конкатенации строк в модуле:

  1. В свойствах ячейки макета на вкладке Основное установим тип Шаблон.
  2. В поле ввода текста ячейки напишем выражения в квадратных скобках, разделив их нажатием клавиш Ctrl + Enter:

[СокрЛП(Докум.Номенклатура.ПолнНаименование)]
[?(Константа.ПоказыватьАртикул = 1, "Арт. " + СокрЛП(Докум.Номенклатура.Артикул), "")]

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

← На главную