При работе в конфигурации 1С:ERP Управление предприятием часто возникает задача унификации процессов. Пользователи привыкают к удобству печати этикеток и штрихкодов непосредственно из документа Приобретение товаров и услуг и закономерно задаются вопросом: как перенести этот функционал в документ Поступление товаров на склад? В данной статье мы разберем, как устроена эта подсистема и какими способами можно реализовать требуемый функционал.
Прежде чем приступать к разработке, важно понять, что в современных конфигурациях на базе БСП (Библиотеки Стандартных Подсистем) печать этикеток — это не простая печатная форма, выводящая табличный документ на экран. Это сложный механизм, который:
ПечатьЭтикетокИЦенников.Подключаемого оборудования.ZPL или TSPL) напрямую отправляются на принтер.В документе Приобретение товаров и услуг эта логика реализована через вызовы в модуле менеджера. Чтобы добавить аналогичный функционал, нам необходимо правильно зарегистрировать команду печати и обеспечить передачу данных о товарах в обработку.
Рассмотрим структуру модуля менеджера документа. В типовых решениях за регистрацию команд отвечает процедура ДобавитьКомандыПечати. Чтобы ваша команда появилась в меню «Печать», необходимо выполнить следующие шаги:
ДобавитьКомандыПечати(КомандыПечати).Для корректной работы потребуется также реализовать функцию, которая собирает данные из табличной части документа. Примерный вид кода для регистрации команды выглядит так:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Команда = КомандыПечати.Добавить();
Команда.Представление = НСтр("ru = 'Печать этикеток'");
Команда.Идентификатор = "ПечатьЭтикеток";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
КонецПроцедуры
Обратите внимание: просто добавить кнопку недостаточно. Вам нужно реализовать обработчик, который вызовет обработку ПечатьЭтикетокИЦенников и программно передаст в нее массив товаров из вашего документа. Для этого проанализируйте процедуру ДанныеДляПечатиЦенников в модуле менеджера документа, из которого вы планируете «скопировать» функционал.
Если вы не хотите менять конфигурацию и вносить правки в модули менеджера (чтобы упростить будущее обновление программы), самым надежным способом будет создание внешней печатной формы или внешней обработки.
Преимущества данного метода:
1С:ERP.При создании обработки важно использовать встроенные функции БСП для формирования макетов. Если печать уходит на принтер напрямую, ваша внешняя обработка должна корректно формировать структуру данных, которую ожидает драйвер принтера этикеток, зарегистрированный в системе.
Подключаемое оборудование. Именно там настраиваются шаблоны этикеток. Если вы создаете свою форму, убедитесь, что она использует тот же шаблон, иначе принтер может не понять команды.ДанныеДляПечатиЦенников в типовом документе. Сравните этот массив с тем, что вы планируете передавать из Поступления товаров на склад.Прямая печать. В своей реализации вы можете программно управлять этим параметром через структуру параметров печати, передаваемую в обработку.Помните, что 1С:ERP — это сложная система. Прежде чем переносить логику из одного документа в другой, убедитесь, что структура реквизитов товаров в Поступлении совпадает с ожидаемой логикой обработки ПечатьЭтикетокИЦенников. Если поля различаются, вам придется доработать запрос выбора данных, чтобы система корректно видела номенклатуру, характеристики и штрихкоды.
Работая последовательно и используя расширения конфигурации для внесения правок, вы сможете добиться требуемого результата без риска нарушения целостности типового функционала.