Вывод отчета через команды печати
От заказчика поступило пожелание, чтобы доработанный отчет реестр документов выводился через меню Печать из списка документов требования-накладные:
![](https://geniy1s.ru/wp-content/uploads/2024/05/image-93.png)
Отчет был внешним:
![](https://geniy1s.ru/wp-content/uploads/2024/05/image-94.png)
Решено было написать небольшое расширение модуля менеджера документа Требование-накладная:
&После("ДобавитьКомандыПечати") Процедура дор_ДобавитьКомандыПечати(КомандыПечати) // Реестр документов КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "Реестр"; КомандаПечати.Представление = НСтр("ru = 'Реестр документов (доработанный)'"); КомандаПечати.ЗаголовокФормы= НСтр("ru = 'Реестр документов ""Требование-накладная""'"); КомандаПечати.Обработчик = "дор_К.ВыполнитьКомандуОткрытияРеестраДокументов"; КомандаПечати.СписокФорм = "ФормаСписка"; КомандаПечати.Порядок = 120; КонецПроцедуры
Сами процедуры я взял из форума, немного адаптировав.
Клиентский модуль дор_К:
Функция ВыполнитьКомандуОткрытияРеестраДокументов(ОписаниеКоманды) Экспорт ОткрытьВнешнийОтчетОбработку("РеестрТребованийДоработанный", Новый Структура(), "erf"); КонецФункции &НаКлиенте Процедура ОткрытьВнешнийОтчетОбработку(ИмяОтчетаОбработки, ПараметрыОтчетаОбработки, Расширение = "epf") Экспорт ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение); УИД = Новый УникальныйИдентификатор; Адрес = дор_С.ПолучитьАдресВнешнейОбработкиНаСервере(УИД, ИмяОтчетаОбработки, Расширение); ИмяОбработки = дор_С.ПодключитьВнешнююОбработку(Адрес, Расширение); Если Расширение = "epf" Тогда ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОтчетаОбработки, , УИД); Иначе ОткрытьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", ПараметрыОтчетаОбработки, , УИД); КонецЕсли; КонецПроцедуры
Серверный модуль дор_С:
&НаСервере Функция ПолучитьАдресВнешнейОбработкиНаСервере(УИД, ИмяОтчетаОбработки, Расширение = "epf") Экспорт СпрСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяОтчетаОбработки); Если Не ЗначениеЗаполнено(СпрСсылка) Тогда ВызватьИсключение "Не найден внешний отчет/обработка с именем объекта: " + ИмяОтчетаОбработки; КонецЕсли; ХранилищеОбработки = СпрСсылка.ХранилищеОбработки.Получить(); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение); ХранилищеОбработки.Записать(ИмяВременногоФайла); Двоичное = Новый ДвоичныеДанные(ИмяВременногоФайла); Адрес = ПоместитьВоВременноеХранилище(Двоичное, УИД); Возврат Адрес; КонецФункции &НаСервере Функция ПодключитьВнешнююОбработку(АдресХранилища, Расширение = "epf") Экспорт Если Расширение = "epf" Тогда Возврат ВнешниеОбработки.Подключить(АдресХранилища); Иначе Возврат ВнешниеОтчеты.Подключить(АдресХранилища); КонецЕсли; КонецФункции
Из недостатков — при открытии внешнего отчета в первый раз ругается, но потом открывает нормально.
Среда: 3.1.29.38 Объем: 0.7 час
![](https://geniy1s.ru/wp-content/uploads/2024/05/image-95.png)
Свежие комментарии