Печать реализаций из отчета продажи


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

В отчете задаете необходимые отборы. Обязательно должно присутствовать поле (группировка) "Регистратор" или поле "Документ продажи".

Нажимаете действия\Печать документов. Остается только выбрать печатные формы и нажать "Выполнить." Выбор печатных форм доступен как внешних так и типовых. Можно выбрать несколько форм одновременно.

Разработку можно использовать как пример для интеграции в любой типовой отчет на базе универсального и не только.

Достаточно скопировать из него форму "Печать Документов" и следующий код:

 

Процедура КоманднаяПанельФормыПечатьДокументов(Кнопка)  Для каждого ТекущийПоказатель из УниверсальныйОтчет.Показатели.Строки Цикл       // Группа показателей   Если ТекущийПоказатель.Строки.Количество() > 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.открыть(); КонецПроцедуры  

Файлы обработки:

-