Краткий конспект и набор функций для вызова отчета на СКД
встроенного в конфигурацию (расширение) с передачей параметров
Параметры и отбор передаются в "отбор"
https://its.1c.ru/db/metod8dev/content/4143/hdoc
&НаКлиенте
Процедура ДО_Информация_О_ДР(Команда)
отбор=новый структура("ИнтервалОтДней,ИнтервалДоДней",7,14);
парам=новый Структура("СформироватьПриОткрытии,отбор",истина,отбор);
ОткрытьФорму("Отчет.Информация_О_ДР.ФормаОбъекта",парам);
КонецПроцедуры
&НаКлиенте //вызов после нажатия кнопки
Процедура TSOFT_РезервыТоваровБП_ЧейРезервПосле(Команда)
Перем ФормаОтчёта, КомпоновщикНастроек, Период, ПараметрыФормы;
ФормаОтчёта = ПолучитьФорму("Отчет.Helmer_РезервыТоваровБП_Отчет.Форма");
КомпоновщикНастроек = ФормаОтчёта.Отчет.КомпоновщикНастроек;
//Период = Новый СтандартныйПериод();
//Период.ДатаНачала = ТекущаяДата();
//Период.ДатаОкончания =КонецДня(ТекущаяДата());
Период= КонецДня(ТекущаяДата());//смотри картинку ниже в СКД параметр Дата типа Дата
УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, "Период", Период);
//смотри картинку ниже в СКД Отбор должен называться так же "Номенклатура
УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, "Номенклатура", элементы.СписокНоменклатуры.ТекущиеДанные.Ссылка);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "По номенклатуре");
ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки);
ОткрытьФорму("Отчет.Helmer_РезервыТоваровБП_Отчет.Форма", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
Что бы 1с не вылетал с ошибкой при нажатии кнопки изменить вариант
ИТС: Если для отчета на СКД определена собственная основная форма, то для него также следует определить собственную форму настроек (либо в свойствах этого отчета указать общую форму ВспомогательнаяФормаНастроекОтчета). Это требование также распространяется на дополнительные и внешние отчеты, использующиеся в конфигурации с «Полным» вариантом внедрения формы отчета.
формы нет!
эти процедуры располагаюся в модуле формы там же процедура обработки нажатии кнопки (см. выше) TSOFT_РезервыТоваровБП_ЧейРезервПосле
&НаКлиенте
Процедура УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, ИмяПараметра, Значение)
Перем ПараметрДанных, Настройки, ПользовательскиеНастройки, ПользовательскийПараметр;
Настройки = КомпоновщикНастроек.Настройки;
ПараметрДанных = Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
Если ЗначениеЗаполнено(ПараметрДанных.ИдентификаторПользовательскойНастройки) Тогда
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
ПользовательскийПараметр = ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
ПользовательскийПараметр.Использование = Истина;
ПользовательскийПараметр.Значение = Значение;
КонецЕсли;
КонецПроцедуры // УстановитьПользовательскийПараметрСКД
&НаКлиенте
Процедура УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, ИмяОтбора, Значение, ВидСравнения = Неопределено)
Перем ПолеКД, Элем, ЭлементОтбора, Настройки,
ПользовательскиеНастройки, ПользовательскийОтбор;
Настройки = КомпоновщикНастроек.Настройки;
ПолеКД = Новый ПолеКомпоновкиДанных(ИмяОтбора);
Для Каждого Элем Из Настройки.Отбор.Элементы Цикл
Если Элем.ЛевоеЗначение = ПолеКД Тогда
ЭлементОтбора = Элем;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЭлементОтбора = Неопределено Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) Тогда
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
ПользовательскийОтбор = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
ПользовательскийОтбор.Использование = (Значение <> Неопределено);
ПользовательскийОтбор.ВидСравнения = ?(ВидСравнения <> Неопределено, ВидСравнения, ВидСравненияКомпоновкиДанных.Равно);
ПользовательскийОтбор.ПравоеЗначение = Значение;
КонецЕсли;
КонецПроцедуры // УстановитьПользовательскийОтборСКД
---------------------------------------------
Публикация №000000088