При переходе на версии программы 1С:Управление торговлей (начиная с релиза 11.3) пользователи часто сталкиваются с неприятным сюрпризом: при попытке напечатать товарные этикетки со штрихкодами на обычном офисном принтере А4 пропадают привычные настройки количества колонок и строк. В результате каждая этикетка выводится на отдельный лист, что делает невозможным использование стандартной самоклеящейся бумаги формата А4 (например, популярной разметки на 65 наклеек).
В этой статье мы подробно разберем, почему разработчики 1С приняли такое решение, проанализируем технические ограничения платформы и рассмотрим практические способы решения этой проблемы.
В современных релизах конфигурации Управление торговлей 11 разработчики разделили логику формирования ценников и этикеток на уровне программного кода:
Самый простой способ, не требующий изменения конфигурации, — обмануть систему, создав макет этикетки под видом ценника. Разберем этот процесс по шагам:
При использовании этого метода возникает одно неудобство: по умолчанию при печати ценников программа подставляет количество "1" для каждой позиции, в то время как для этикеток количество должно автоматически браться из табличной части документа (например, из приходной накладной). Чтобы решить эту проблему, рассмотрим два варианта:
Количество ценников на основе данных исходного документа.Если вам критически важно использовать именно шаблон с типом "Этикетка", можно переложить задачу компоновки на физический принтер или его виртуальный драйвер. Рассмотрим подробнее, как настроить этот процесс:
Важное примечание: данный способ имеет погрешность позиционирования. Из-за принудительного масштабирования полей драйвером принтера границы штрихкодов могут смещаться относительно физических просечек на листе А4, поэтому потребуется детальная калибровка полей в настройках печати самого принтера.
Если вы хотите, чтобы стандартный механизм печати этикеток располагал их на А4 в несколько колонок без смены назначения шаблона на ценник, можно прибегнуть к программной доработке. Настройки компоновки листа хранятся в справочнике ШаблоныЭтикетокИЦенников в реквизите типа ХранилищеЗначения.
Проанализируем ситуацию: в этом хранилище находится сериализованная структура параметров страницы. Мы можем написать внешнюю обработку, которая программно извлечет эту структуру, установит нужные свойства колонок и запишет её обратно. Посмотрим на пример кода:
// Пример программного изменения параметров страницы шаблона
ШаблонОбъект = ВыбранныйШаблон.ПолучитьОбъект();
ПараметрыСтраницы = ШаблонОбъект.НастройкиСтраницы.Получить();
Если ПараметрыСтраницы = Неопределено Тогда
ПараметрыСтраницы = Новый Структура;
КонецЕсли;
// Задаем принудительно количество колонок и строк для листа А4
ПараметрыСтраницы.Вставить("КоличествоКолонок", 5);
ПараметрыСтраницы.Вставить("КоличествоСтрок", 13);
ПараметрыСтраницы.Вставить("ВыводитьНаОдинЛист", Истина);
// Записываем измененные настройки обратно в базу данных
ШаблонОбъект.НастройкиСтраницы = Новый ХранилищеЗначения(ПараметрыСтраницы);
ШаблонОбъект.Записать();
После выполнения этого кода стандартный механизм печати этикеток начнет компоновать их на листе А4 в несколько колонок, обходя визуальные ограничения интерфейса формы настройки.
Если типовые инструменты не удовлетворяют потребностям автоматизации вашего склада или магазина, наиболее правильным с точки зрения обновляемости системы решением будет использование внешней обработки печати этикеток. В ней можно реализовать собственный алгоритм распределения объектов по листу и полностью вернуть удобный интерфейс выбора количества колонок "на лету" перед отправкой на принтер без изменения типовой конфигурации 1С.