Всем добрый день.
Есть внешний отчет, обычное приложение. Параметры отчета заполняются на форме (Скрин 1) и передаются в СКД программно (Скрины 2). При формировании расшифровки отчёт не формируется, т.к. в расшифровку не передаются заполненные параметры в форме отчёта. Как передать параметры в расшифровку?
(2)Кода формирования отчета нет, всё через СКД.
Если удаляю форму объекта, и она формируется программно, то всё работает, но тогда приходится для заполнения параметров лезть в настройки.
- вот это интересует.
Я просто не понимаю куда вы их потом засовываете.
Настройки = КомпановщикНастроек.ПолучитьНастройки();
Настройки.параметры..............
(7)Код написанный ручками весь на скрине, этого достаточно чтоб отчёт сформировался правильно, остальное делает СКД. Не формируется расшифровка, не берёт параметры из первоначального отчёта.
(6) в старых неуправляемых формах на форму отчета можно добавить таблицу, в данных указать путь к пользовательским настройкам, в параметрах сделать один параметр с типом "период", в параметры начала и окончания периода прописать &Период.ДатаНачала и ДатаКонца (подробнее к справке 1С - я не запоминаю детали), в параметре "период" сделать видимость в пользовательских настройках. В итоге при открытии формы будет одна строчка с параметром "Период" и возможностью внести туда любые данные.
С другой стороны, можно проверять, есть ли данные расшифровки при компоновке результата и не помещать туда параметры - они там и так должны быть.
Да, на старых никчемных формах все это сложно. На управляемых формах просто создаешь вариант, добавляешь туда параметры и прочие элементы и они сами отрисуются на форме.
(9)Да, этот способ я знаю. Но нашим пользователям, как и мне, не очень нравится таблица параметров на форме. По этому и пытался изобразить нечто схожее с управляемым приложением. ))
Проблема была та же: два поля на форме Сценарий и Период, при открытии расшифровки не заполненные поля на форме не позволяли сформировать отчет, пока по новому не заполнить.
Решение:
- Создал два параметра на форме: Параметр1 (тип Сценарий) и Параметр2 (тип Период)
-
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Параметры.Параметр1) Тогда
Отчет.Сценарий = Параметры.Параметр1;
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.Параметр2) Тогда
Отчет.ПериодПланирования = Параметры.Параметр2;
КонецЕсли;
КонецПроцедуры
Показать
- на Форме в Реквизите Результат
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
СтандартнаяОбработка = Ложь;
Оп = Новый ОписаниеОповещения("РезультатОбработкаРасшифровки_Продолжение", ЭтаФорма, Расшифровка);
ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));
ОбработкаРасшифровки.ПоказатьВыборДействия(Оп, Расшифровка);
КонецПроцедуры
- и Обработка Оповещения
&НаКлиенте
Процедура РезультатОбработкаРасшифровки_Продолжение(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры) Экспорт
Если ВыполненноеДействие <> ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет Тогда
Парам = Новый Структура;
Парам.Вставить("Параметр1", Отчет.Сценарий);
Парам.Вставить("Параметр2", Отчет.ПериодПланирования);
Парам.Вставить("СформироватьПриОткрытии", Истина);
Парам.Вставить("Расшифровка", Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, ДополнительныеПараметры, ПараметрВыполненногоДействия));
ОткрытьФорму("Отчет.МойОтчет.Форма", Парам, , Истина);
КонецЕсли;
КонецПроцедуры