Внешний отчет из формы документа с передачей параметра

Аватар пользователя
Администратор
Сообщений: 163
Зарегистрирован: 27 фев 2011, 17:40
Откуда: откуда и все :)
СообщениеДобавлено: 05 дек 2020, 17:45
Задача:
На форму документа повесить кнопку вызывающую отчет подключенный к внешним отчетам конфигурации.
Передать ему параметры периода и создав новый параметр отбора, сформировать отчет при открытии.

Решение:
Код висящий на кнопке
Код: выделить все
Процедура кнАналитикаНажатие(Элемент)
   // Наименование отчета как оно задано в списке внешних отчетов
   ТекЭлем= Справочники.ВнешниеОбработки.НайтиПоНаименованию("Заявка на поставку. Аналитика");
   ИмяФайлаОтчета = ПолучитьИмяВременногоФайла("erf");
   ДвоичныеДанные = ТекЭлем.ХранилищеВнешнейОбработки.Получить(); 
   ДвоичныеДанные.Записать(ИмяФайлаОтчета);
   ТекОтчет = ВнешниеОтчеты.Создать(ИмяФайлаОтчета); // Получаем объект - внешний отчет.
   ЭлементыОтбора = ТекОтчет.КомпоновщикНастроек.Настройки.Отбор.Элементы;
   ЭлементыОтбора.Очистить(); // На всякий случай
   
   ПериодОтчета = ТекОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПериодОтчета");
   
   ПериодОтчета.Значение.ДатаНачала = НачалоГода(Дата);
   ПериодОтчета.Значение.ДатаОкончания = КонецГода(Дата);
        //Как вариант, можно использовать и вариант отчета использовав варианты стандартного периода. Для меня - фигня полная.
   //ТекПараметры.ПериодОтчета.Значение.Вариант = ВариантСтандартногоПериода.ЭтотГод;
   
   ЭлементОтбора = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); // Создаём НОВЫЙ элемент отбора. Отбор должен существовать в возможных.
   ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЗаказПоставщику");
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
   ЭлементОтбора.ПравоеЗначение = Ссылка;
   ЭлементОтбора.Использование = Истина;   
   
   ТекФорма = ТекОтчет.ПолучитьФорму();
   ТекФорма.Открыть();
   
КонецПроцедуры


Для формирования отчета "ПриОткрытии" (обычные формы)
Код: выделить все
Процедура ПриОткрытии()
   ОтчетОбъект.СкомпоноватьРезультат(ЭлементыФормы.Результат);
КонецПроцедуры

В управляемых формах или описательном интерфейсе.
Код: выделить все
&НаКлиенте
Процедура ПриОткрытии(Отказ) // На вкус и цвет ... использовать по желанию и только в среде windows
   Wsh = Новый COMОбъект("Wscript.shell");
   Wsh.SendKeys("^{Enter}");
КонецПроцедуры
Проблема, это задача в решении которой никто не заинтересован.
СВС
Цитата

Вернуться в Для программиста

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Яндекс.Метрика
cron