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