В отчете задаете необходимые отборы. Обязательно должно присутствовать поле (группировка) "Регистратор" или поле "Документ продажи".
Нажимаете действия\Печать документов. Остается только выбрать печатные формы и нажать "Выполнить." Выбор печатных форм доступен как внешних так и типовых. Можно выбрать несколько форм одновременно.
Разработку можно использовать как пример для интеграции в любой типовой отчет на базе универсального и не только.
Достаточно скопировать из него форму "Печать Документов" и следующий код:
Процедура КоманднаяПанельФормыПечатьДокументов(Кнопка) Для каждого ТекущийПоказатель из УниверсальныйОтчет.Показатели.Строки Цикл // Группа показателей Если ТекущийПоказатель.Строки.Количество() > 0 И ТекущийПоказатель.Использование > 0 Тогда КоличествоПоказателейВГруппе = 0; Для каждого Показатель из ТекущийПоказатель.Строки Цикл Если Показатель.Использование > 0 Тогда УниверсальныйОтчет.ПостроительОтчета.ВыбранныеПоля.Добавить(Показатель.Имя); КонецЕсли; КонецЦикла; ИначеЕсли ТекущийПоказатель.Использование > 0 Тогда // Показатель УниверсальныйОтчет.ПостроительОтчета.ВыбранныеПоля.Добавить(ТекущийПоказатель.Имя); КонецЕсли; КонецЦикла; УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ДатаНач", ?(УниверсальныйОтчет.ДатаНач = Дата('00010101000000'), УниверсальныйОтчет.ДатаНач, Новый Граница(НачалоДня(УниверсальныйОтчет.ДатаНач), ВидГраницы.Включая))); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ДатаКон", ?(УниверсальныйОтчет.ДатаКон = Дата('00010101000000'), УниверсальныйОтчет.ДатаКон, Новый Граница(КонецДня(УниверсальныйОтчет.ДатаКон), ВидГраницы.Включая))); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ДатаНачала", ?(УниверсальныйОтчет.ДатаНач = Дата('00010101000000'), УниверсальныйОтчет.ДатаНач, НачалоДня(УниверсальныйОтчет.ДатаНач))); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ДатаКонца", ?(УниверсальныйОтчет.ДатаКон = Дата('00010101000000'), Дата("39991231"), КонецДня(УниверсальныйОтчет.ДатаКон))); УниверсальныйОтчет.ПостроительОтчета.Выполнить(); РезультатОтчета1 = УниверсальныйОтчет.ПостроительОтчета.Результат; Таб1 = РезультатОтчета1.Выгрузить(); //Запр=УниверсальныйОтчет.ПостроительОтчета.ПолучитьЗапрос(); //Сообщить(Запр.Текст); //Для каждого КЗ Из Запр.Параметры Цикл // // сообщить("* "+КЗ.Ключ+" - "+ КЗ.Значение +" - "+ ТипЗнч(КЗ.Значение) + ?(ТипЗнч(КЗ.Значение)=Тип("Граница"),КЗ.Значение.Значение,"")); // //КонецЦикла; Если Таб1.Количество()=0 Тогда Предупреждение("Нет данных. Количество строк в таблице = 0"); возврат; КонецЕсли; ЕстьКолонкаРегистратор=не Таб1.Колонки.Найти("Регистратор")=Неопределено; ЕстьКолонкаДокументПродажи=не Таб1.Колонки.Найти("ДокументПродажи")=Неопределено; ЕстьКолонкаКонтрагент=не Таб1.Колонки.Найти("Контрагент")=Неопределено; Если ЕстьКолонкаРегистратор и ЕстьКолонкаДокументПродажи Тогда Предупреждение("Нет данных. Нет колонки Регистратор и колонки ДокументПродажи"); возврат; КонецЕсли; ЭтотОбъект.НайденныеОбъекты.Очистить(); НайденныеОбъекты1 = ЭтотОбъект.НайденныеОбъекты.Выгрузить(); Для каждого СтрокаТаб Из Таб1 Цикл Если ЕстьКолонкаДокументПродажи и ЗначениеЗаполнено(СтрокаТаб.ДокументПродажи) и ТипЗнч(СтрокаТаб.ДокументПродажи)=Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда НовСтрока=НайденныеОбъекты1.Добавить(); НовСтрока.Объект = СтрокаТаб.ДокументПродажи; НовСтрока.Менеджер= СтрокаТаб.ДокументПродажи.Ответственный; НовСтрока.Пометка= Истина; НовСтрока.Контрагент= СтрокаТаб.ДокументПродажи.Контрагент; КонецЕсли; Если ЕстьКолонкаРегистратор и ЗначениеЗаполнено(СтрокаТаб.Регистратор) и ТипЗнч(СтрокаТаб.Регистратор)=Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда НовСтрока=НайденныеОбъекты1.Добавить(); НовСтрока.Объект = СтрокаТаб.Регистратор; НовСтрока.Менеджер= СтрокаТаб.Регистратор.Ответственный; НовСтрока.Пометка= Истина; НовСтрока.Контрагент= СтрокаТаб.Регистратор.Контрагент; КонецЕсли; КонецЦикла; НайденныеОбъекты1.Свернуть("Объект,Менеджер,Пометка,Контрагент",""); ЭтотОбъект.НайденныеОбъекты.Загрузить(НайденныеОбъекты1); Форма1 = получитьформу("ПечатьДокументов"); Форма1.открыть(); КонецПроцедуры