Имя: Пароль:
1C
 
Как можно сформировать отчет скд с параметрами текущего документа?
0 kenzori
 
03.06.25
11:46
При формировании отчета нужно передать параметры текущего документа во внешний отчет на скд, и на основе этих параметров должен формироваться отчет, как это можно реализовать, пробую параметры формы передавать и форму открывать, но параметры не заполняются
&НаКлиенте
Процедура СформироватьОтчет(Команда)
	Если Не СсылкаНаОбработку() Тогда
		Возврат;
	КонецЕсли;
	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
	ПараметрыФормы.Вставить("ДатаС", Период);
	ПараметрыФормы.Вставить("ДатаПо", Период);
	ПараметрыФормы.Вставить("Организация", Объект.Организация);
	ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
	
	КлючВарианта = ПолучитьКлючВариантаОтчета();
	Если КлючВарианта <> Неопределено Тогда
		ПараметрыФормы.Вставить("КлючВарианта", КлючВарианта);
	КонецЕсли;
		ОткрытьФорму("ВнешнийОтчет.ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП.Форма", ПараметрыФормы);		
		
   
КонецПроцедуры

&НаСервере
Функция ПолучитьКлючВариантаОтчета()
	СписокВариантов = ХранилищеВариантовОтчетов.ПолучитьСписок("ВнешнийОтчет.ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП");
	Если СписокВариантов.Количество() = 0 Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Возврат СписокВариантов[0].Значение;
КонецФункции

&НаСервере
Функция СсылкаНаОбработку()
	ОтчетСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Отчет о распределении использованных диафрагм на выпуск ВП");
	Если ОтчетСсылка.Пустая() Тогда
		Сообщить("Не удалось найти отчет 'Отчет о распределении использованных диафрагм на выпуск ВП'");
		Возврат Ложь;
	КонецЕсли;
	
	ДвоичныеДанные = ОтчетСсылка.ХранилищеОбработки.Получить();
	АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
	
	ВнешниеОтчеты.Подключить(АдресХранилища, "ОтчетОРаспределенииИспользованныхДиафрагмНаВыпускВП");
	
	Возврат Истина;
КонецФункции
1 mikecool
 
03.06.25
11:47
в ПриКомпоновкеРезультата()
2 Волшебник
 
03.06.25
11:49
	ПараметрыФормы.Вставить("ДатаС", Период);
	ПараметрыФормы.Вставить("ДатаПо", Период);

Здесь одно и то же с точностью до секунды?
3 kenzori
 
03.06.25
11:51
(1) создал реквизиты в отчете и параметры устанавливаю или как-то подругому надо?    
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
            
                        
            
            Настройки = КомпоновщикНастроек.ПолучитьНастройки();
            
            Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Ссылка", Ссылка);
            Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаС", ДатаС);
            Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Организация", Организация);
            Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Подразделение", Подразделение);
            
            КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    
КонецПроцедуры
4 kenzori
 
03.06.25
11:51
(2) Мне бы хотя-бы чтоб что-то одно передавалось, но оно не передается
5 Мультук
 
гуру
03.06.25
12:01
(4)

1) Передаётся, вы просто не там ловите

google:
1С Форма Открыть Передать  параметры

https://infostart.ru/1c/articles/86853/

"Как передаются параметры в управляемых формах"

2)
google:
1с открыть отчет с параметрами

https://fastcode.im/Templates/7996/otkryt-otchet-skd-s-peredachej-parametrov-i-otborami

Не смотрел по ссылке, наверное работает (с)

3) Смотрим в типовые. Там тоже куча  решений
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший