Каждый практикующий специалист или пользователь, работающий в сфере розничной и оптовой торговли, рано или поздно сталкивается с необходимостью массовой печати ценников. В конфигурации «1С:Управление торговлей» редакции 10.3 (которая функционирует на обычных формах) для этого предусмотрена стандартная обработка. Однако пользователи часто сталкиваются с крайне неэффективным поведением системы: сколько бы элементов мы ни отправляли на печать, на одном листе формата А4 размещается ровно 15 ценников. Они занимают ровно половину страницы, а нижняя часть листа остается абсолютно пустой, уходя в корзину вместе с дорогостоящей бумагой.
Давайте подробно разберем, почему программа ведет себя подобным образом, и рассмотрим по шагам несколько надежных способов обойти это ограничение, чтобы задействовать всю полезную площадь печатного листа.
Многие пользователи ошибочно полагают, что проблема кроется в некорректных настройках принтера, масштабировании страницы или полях документа. Они пытаются уменьшать масштаб в параметрах печати, но это приводит лишь к уменьшению размера самих ценников, в то время как пустая область внизу страницы так и остается незаполненной.
На самом деле причина проблемы носит исключительно программный характер. В типовом коде обработки ПечатьЦенников жестко прописано ограничение на количество выводимых строк и столбцов на одной странице табличного документа. Разработчики фирмы 1С зафиксировали сетку размещения элементов: 5 колонок по горизонтали и 3 строки по вертикали. Как только программа заполняет эту сетку (5 × 3 = 15 ценников), она принудительно выполняет команду перехода на следующую страницу.
Проанализируем фрагмент стандартного программного кода, отвечающий за эту логику:
Если ТекСтолбец = 5 Тогда
ТекСтрока = ТекСтрока + 1;
ТекСтолбец = 0;
КонецЕсли;
Если ТекСтрока = 3 Тогда
ТекСтрока = 0;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Как мы видим, метод ВывестиГоризонтальныйРазделительСтраниц() срабатывает строго при достижении переменной ТекСтрока значения 3. Программа обнуляет счетчик строк и начинает заполнять новый лист А4, даже если физические размеры макета ценника позволяют разместить на одном листе 4, 5 или даже 6 строк с ценниками.
Теперь, когда техническая причина нам ясна, рассмотрим практические пути решения этой задачи.
Этот способ идеально подходит для тех компаний, у которых база данных 1С находится на доработке (снята с полной поддержки) или в штате есть специалист, умеющий работать в режиме Конфигуратора. Мы можем вручную скорректировать лимиты вывода строк и столбцов под индивидуальные размеры вашего ценника.
Рассмотрим этот процесс по шагам:
ПечатьЦенников (в некоторых отраслевых или измененных версиях она может называться ПечатьЭтикетокИЦенников).ПечатьЦенника() или СформироватьПечатнуюФорму().Если ТекСтрока = 3 Тогда.
Если ТекСтрока = 5 Тогда // Увеличили количество строк до 5
ТекСтрока = 0;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТекСтолбец:
Если ТекСтолбец = 6 Тогда // Разрешаем выводить до 6 колонок по горизонтали
ТекСтрока = ТекСтрока + 1;
ТекСтолбец = 0;
КонецЕсли;
Важное примечание: Если конфигурация находится на стандартной поддержке, внесение изменений непосредственно в основную ветку метаданных сделает процесс последующего обновления программы более трудоемким. Если вы хотите сохранить типовую базу в исходном виде, лучше воспользоваться вторым способом.
Использование внешних обработок — это наиболее безопасный и профессиональный подход в экосистеме 1С. Вы не вносите никаких изменений в саму конфигурацию, сохраняя возможность ее автоматического обновления, но при этом получаете нужный функционал.
Проанализируем алгоритм работы с внешними печатными формами:
.epf с вашего компьютера.Используя внешнюю обработку с возможностью ручного задания сетки (например, 6х4 или 5х5), вы сможете гибко адаптировать печать под любые изменения размеров ценников в будущем без необходимости открывать Конфигуратор.
Даже если мы изменим программный код или воспользуемся внешней обработкой, ценники все равно могут непроизвольно переноситься на следующий лист из-за слишком больших технологических отступов, установленных по умолчанию. Давайте разберем по шагам, как настроить параметры страницы табличного документа, чтобы минимизировать пустые области:
2 или 3 мм (или даже 0, если ваш лазерный принтер поддерживает печать без полей).Уменьшение технологических полей позволяет высвободить до 1.5–2 сантиметров полезного пространства по высоте и ширине листа, что зачастую как раз и позволяет уместить дополнительный ряд ценников на одной странице.
Подведем итог проделанной работы. Проблема с выводом ровно 15 ценников на листе А4 в УТ 10.3 обусловлена жестким ограничением в коде типовой обработки. Чтобы решить ее:
ПечатьЦенника().Применяя данные подходы, вы сможете существенно сократить расход бумаги и оптимизировать процесс подготовки ценников к раскладке на витринах торгового зала.