Как изменить количество ценников на одном листе в 1С:Управление торговлей 10.3?

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

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

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

Выясняем причину: почему выводится ровно 15 ценников?

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

На самом деле причина проблемы носит исключительно программный характер. В типовом коде обработки ПечатьЦенников жестко прописано ограничение на количество выводимых строк и столбцов на одной странице табличного документа. Разработчики фирмы 1С зафиксировали сетку размещения элементов: 5 колонок по горизонтали и 3 строки по вертикали. Как только программа заполняет эту сетку (5 × 3 = 15 ценников), она принудительно выполняет команду перехода на следующую страницу.

Проанализируем фрагмент стандартного программного кода, отвечающий за эту логику:


Если ТекСтолбец = 5 Тогда 
    ТекСтрока = ТекСтрока + 1; 
    ТекСтолбец = 0; 
КонецЕсли; 

Если ТекСтрока = 3 Тогда 
    ТекСтрока = 0; 
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); 
КонецЕсли;

Как мы видим, метод ВывестиГоризонтальныйРазделительСтраниц() срабатывает строго при достижении переменной ТекСтрока значения 3. Программа обнуляет счетчик строк и начинает заполнять новый лист А4, даже если физические размеры макета ценника позволяют разместить на одном листе 4, 5 или даже 6 строк с ценниками.

Теперь, когда техническая причина нам ясна, рассмотрим практические пути решения этой задачи.

Способ 1. Модернизация программного кода в Конфигураторе

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

Рассмотрим этот процесс по шагам:

  1. Запустите базу данных 1С:Предприятие в режиме Конфигуратор.
  2. Откройте дерево метаданных (сочетание клавиш Ctrl + Shift + T или меню «Конфигурация» -> «Открыть конфигурацию»).
  3. В дереве конфигурации перейдите в ветку Обработки и найдите обработку с именем ПечатьЦенников (в некоторых отраслевых или измененных версиях она может называться ПечатьЭтикетокИЦенников).
  4. Нажмите на нее правой кнопкой мыши и выберите пункт Открыть модуль объекта (или перейдите на вкладку «Формы», откройте основную форму обработки и перейдите в ее модуль).
  5. Используя поиск по тексту (клавиши Ctrl + F), найдите процедуру или функцию, отвечающую за вывод ценников на печать. Обычно она называется ПечатьЦенника() или СформироватьПечатнуюФорму().
  6. Найдите блок кода, содержащий условие Если ТекСтрока = 3 Тогда.
  7. Измените числовое значение на необходимое вам. Например, если ваши ценники имеют высоту около 4-5 см, то на листе формата А4 свободно поместится 5 или 6 рядов. Измените строку кода следующим образом:
    
    Если ТекСтрока = 5 Тогда // Увеличили количество строк до 5
        ТекСтрока = 0; 
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); 
    КонецЕсли;
    
  8. Аналогичным образом, если ценники по ширине занимают меньше места и по горизонтали их помещается больше 5 штук, отредактируйте условие для переменной ТекСтолбец:
    
    Если ТекСтолбец = 6 Тогда // Разрешаем выводить до 6 колонок по горизонтали
        ТекСтрока = ТекСтрока + 1; 
        ТекСтолбец = 0; 
    КонецЕсли;
    
  9. Сохраните изменения в конфигурации (клавиша F7) и запустите программу в режиме пользователя для проверки результата.

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

Способ 2. Использование внешней обработки печати

Использование внешних обработок — это наиболее безопасный и профессиональный подход в экосистеме 1С. Вы не вносите никаких изменений в саму конфигурацию, сохраняя возможность ее автоматического обновления, но при этом получаете нужный функционал.

Проанализируем алгоритм работы с внешними печатными формами:

  1. Необходимо скачать или разработать внешнюю обработку печати ценников для вашей версии конфигурации УТ 10.3. В интернете на профильных ресурсах для разработчиков доступно огромное количество бесплатных и оптимизированных обработок. Многие из них обладают гибким интерфейсом, где параметры «Количество строк по вертикали» и «Количество колонок по горизонтали» вынесены в пользовательские настройки прямо на форму.
  2. Подключите внешнюю обработку к вашей базе данных. Для этого перейдите в меню: Сервис -> Дополнительные отчеты и обработки -> Дополнительные внешние обработки.
  3. Нажмите кнопку «Добавить», введите наименование (например, «Печать ценников (настраиваемая)») и выберите файл внешней обработки с расширением .epf с вашего компьютера.
  4. Укажите разделы интерфейса или документы, из которых будет вызываться эта обработка, и сохраните изменения.

Используя внешнюю обработку с возможностью ручного задания сетки (например, 6х4 или 5х5), вы сможете гибко адаптировать печать под любые изменения размеров ценников в будущем без необходимости открывать Конфигуратор.

Способ 3. Оптимизация параметров страницы и полей принтера

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

  1. Откройте обработку печати ценников в режиме пользователя, заполните список товаров и сформируйте печатную форму на экране (так, чтобы перед вами открылся сформированный табличный документ).
  2. В главном системном меню программы перейдите по пути: Файл -> Параметры страницы...
  3. В открывшемся диалоговом окне обратите внимание на группу параметров «Поля». По умолчанию там могут стоять значения по 10 мм для левого, правого, верхнего и нижнего краев. Установите все эти поля в минимальные значения — например, 2 или 3 мм (или даже 0, если ваш лазерный принтер поддерживает печать без полей).
  4. В поле «Масштаб» обязательно выберите опцию «По ширине листа». Это позволит программе автоматически вписать заданное количество колонок ценников в границы печатной области листа А4, не обрезая правый край.
  5. Нажмите кнопку «ОК» для сохранения параметров и отправьте документ на печать.

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

Резюме и практические рекомендации

Подведем итог проделанной работы. Проблема с выводом ровно 15 ценников на листе А4 в УТ 10.3 обусловлена жестким ограничением в коде типовой обработки. Чтобы решить ее:

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

← На главную