Часто при разработке дополнительных возможностей в конфигурациях 1С, работающих на платформе 1С:Предприятие 8.3, возникает задача программного вызова печатной формы. Если у вас есть список ссылок на документы и зарегистрированная в системе внешняя печатная форма, вы можете вывести её на печать, не открывая форму самого документа. Давайте разберем, как это реализовать с помощью механизмов Библиотеки стандартных подсистем (БСП).
Современные конфигурации 1С используют подсистему Печать. Если ваша внешняя печатная форма (ВПФ) корректно зарегистрирована в справочнике Дополнительные отчеты и обработки, она уже интегрирована в общую систему печати. Чтобы программно вызвать печать такой формы, нам не нужно обращаться к ней напрямую или пытаться копировать её код. Мы воспользуемся стандартной формой ОбщаяФорма.ПечатьДокументов.
Основная идея заключается в том, чтобы передать в эту форму структуру параметров, которая укажет системе, какой именно объект мы хотим напечатать и какую команду печати применить. Это позволяет соблюдать стандарты разработки и обеспечивает правильную работу всех механизмов, включая формирование табличного документа.
Для решения задачи нам потребуется выполнить несколько шагов: найти ссылку на внешнюю обработку в справочнике и передать её в форму ПечатьДокументов с нужными параметрами.
Рассмотрим пример кода, который необходимо разместить в обработчике команды (например, по нажатию кнопки в форме списка):
&НаКлиенте
Процедура БланкПриемки(Команда)
// Проверяем, что в списке есть выбранная строка
Если НЕ Элементы.Заказы.ТекущиеДанные = Неопределено Тогда
// Указываем идентификатор вашей ВПФ, заданный при регистрации
Идентификатор = "682963d6-523b-11ea-82f3-a4bf01020939";
СтруктураВнешнейПечатнойФормы = НайтиВнешнююПечатнуюФорму(Идентификатор);
ОбъектыНазначения = Новый Массив;
ОбъектыНазначения.Добавить(Элементы.Заказы.ТекущиеДанные.Ссылка);
// Подготавливаем параметры для открытия общей формы печати
ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
ПараметрыОткрытия.ИсточникДанных = СтруктураВнешнейПечатнойФормы.Ссылка;
// Заполняем параметры источника: Идентификатор команды и массив объектов
ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = "БланкПриемкиЗаказаПоставщика";
ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ОбъектыНазначения;
// Открываем стандартную форму печати
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
КонецЕсли;
КонецПроцедуры
Теперь рассмотрим серверную функцию, которая поможет нам получить ссылку на внешнюю обработку:
&НаСервереБезКонтекста
Функция НайтиВнешнююПечатнуюФорму(Идентификатор)
// Получаем ссылку из справочника дополнительных отчетов и обработок
СсылкаВнешнейПечатнойФормы = Справочники.ДополнительныеОтчетыИОбработки.ПолучитьСсылку(New УникальныйИдентификатор(Идентификатор));
СтруктураВнешнейПечатнойФормы = Новый Структура;
СтруктураВнешнейПечатнойФормы.Вставить("Ссылка", СсылкаВнешнейПечатнойФормы);
СтруктураВнешнейПечатнойФормы.Вставить("Наименование", СсылкаВнешнейПечатнойФормы.Наименование);
Возврат СтруктураВнешнейПечатнойФормы;
КонецФункции
ОбъектыНазначения). Даже если у вас всего один документ, БСП ожидает коллекцию, что позволяет системе корректно обрабатывать пакетную печать.СведенияОВнешнейОбработке внутри модуля вашей внешней печатной формы.ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ...) является лучшей практикой. Это позволяет не зависеть от внутренней реализации печати внутри самой обработки и гарантирует поддержку функционала БСП (печать на принтер, сохранение в PDF, отправка по почте).Дополнительные отчеты и обработки настроена для использования в списке документов нужного типа. Если она там не отображается, возможно, в настройках обработки не указаны объекты назначения.Применяя этот подход, вы обеспечите стабильную работу печатных форм в вашей системе, минимизируете количество ошибок и сделаете код более читаемым и поддерживаемым. Проанализировав эти шаги, вы сможете легко интегрировать вызов любой внешней печатной формы в ваш интерфейс списка документов.