Как добавить печать этикеток в документ «Поступление товаров на склад» в 1С:ERP?

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

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

Понимание архитектуры подсистемы печати

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

В документе Приобретение товаров и услуг эта логика реализована через вызовы в модуле менеджера. Чтобы добавить аналогичный функционал, нам необходимо правильно зарегистрировать команду печати и обеспечить передачу данных о товарах в обработку.

Реализация через модуль менеджера (Типовой подход)

Рассмотрим структуру модуля менеджера документа. В типовых решениях за регистрацию команд отвечает процедура ДобавитьКомандыПечати. Чтобы ваша команда появилась в меню «Печать», необходимо выполнить следующие шаги:

  1. Откройте модуль менеджера вашего документа.
  2. Найдите процедуру ДобавитьКомандыПечати(КомандыПечати).
  3. Добавьте вызов команды, аналогичный тому, который используется в документах с поддержкой печати этикеток.

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


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    Команда = КомандыПечати.Добавить();
    Команда.Представление = НСтр("ru = 'Печать этикеток'");
    Команда.Идентификатор = "ПечатьЭтикеток";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
КонецПроцедуры

Обратите внимание: просто добавить кнопку недостаточно. Вам нужно реализовать обработчик, который вызовет обработку ПечатьЭтикетокИЦенников и программно передаст в нее массив товаров из вашего документа. Для этого проанализируйте процедуру ДанныеДляПечатиЦенников в модуле менеджера документа, из которого вы планируете «скопировать» функционал.

Создание внешней печатной формы (Рекомендуемый способ)

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

Преимущества данного метода:

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

Практические советы по отладке

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

Помните, что 1С:ERP — это сложная система. Прежде чем переносить логику из одного документа в другой, убедитесь, что структура реквизитов товаров в Поступлении совпадает с ожидаемой логикой обработки ПечатьЭтикетокИЦенников. Если поля различаются, вам придется доработать запрос выбора данных, чтобы система корректно видела номенклатуру, характеристики и штрихкоды.

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

← На главную