Передача параметров из одного внешнего отчета в другой(тоже внешний)

1. SprayTM 11.10.19 06:13 Сейчас в теме +0.23 $m
Доброго времени суток. Столкнулся с такой проблемой: нужно отрыть один внешний отчет через другой с передачей нужных параметров из первого. Как это можно реализовать правильно на обычных формах?

ИначеЕсли ВнешняяРасшифровкаАнализЦенКонтрагентов Тогда
			
			Если НЕ Расшифровка.Свойство("Номенклатура") Тогда
					Возврат;
			КонецЕсли;

			ВнешнийОтчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Анализ цен");
			
			Если ВнешнийОтчет.Пустая() Тогда                	
				Предупреждение("В справочнике ""Внешние отчеты"" не найден отчет с наименованием ""Анализ цен""");			
			Иначе
				ДвоичныеДанные = ВнешнийОтчет.ХранилищеВнешнейОбработки.Получить();		
				
				ИмяФайла = ПолучитьИмяВременногоФайла("epf");
				ДвоичныеДанные.Записать(ИмяФайла);	
				ОтчетАнализЦен = ВнешниеОтчеты.Создать(ИмяФайла, Ложь);
				
				НачалоПериода = ОтчетАнализЦен.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаОтчета"));
				Номенклатура  = ОтчетАнализЦен.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Номенклатура"));
				
				Форма = ОтчетАнализЦен.ПолучитьФорму();
				
				Если НачалоПериода <> Неопределено Тогда
					Если ТипЗнч(НачалоПериода.Значение) = Тип("СтандартнаяДатаНачала") Тогда
						НачалоПериода.Значение.Дата = НачалоДня(ТекущаяДата() - 60*60*24*90);
						НачалоПериода.Использование = Истина;
					КонецЕсли;
				КонецЕсли;
				
				Если Номенклатура <> Неопределено Тогда
					Номенклатура.Значение      = Расшифровка.Номенклатура;
					Номенклатура.Использование = Истина;
				КонецЕсли;
				
				Форма.ОбновитьОтчет();
				Форма.Открыть();
				
				УдалитьФайлы(ИмяФайла);
				Возврат;
			КонецЕсли;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Fe9_min 50 11.10.19 08:23 Сейчас в теме
(1) через механизм "временного хранилища" точно можно
ht tp://1s-portal.ru/index.php/stati/common-questions/27-project/110-vremennoe-hranilishe-v-1s-82.html
7. Xershi 1493 11.10.19 11:52 Сейчас в теме
(1) обработка выбора не подходит?
3. razars 14 11.10.19 09:05 Сейчас в теме
Параметры СКД передаются как Отбор в ПраметрахФормы. Не знаю, поможет тебе этот пример или нет. Но на управляемых я бы так сделал. Должно +- также и на обычном.
НачалоПериода = ОтчетАнализЦен.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаОтчета"));

Номенклатура = ОтчетАнализЦен.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Номенклатура"));


Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", Номенклатура);
Отбор.Вставить("НачалоПериода ", НачалоПериода);


ПараметрыФормы = Новый Структура("Отбор,СформироватьПриОткрытии", Отбор, Истина);
ОткрытьФорму("ВнешнийОтчет."+ИмяФайла+".Форма",ПараметрыФормы,,Истина);
Показать
5. SprayTM 11.10.19 11:41 Сейчас в теме
(3)а если их передавать не через СКД, а с формы первого отчета?
6. razars 14 11.10.19 11:50 Сейчас в теме
(5) Так это и есть для формы. Или у вас вопрос, как получить значение выбранного поля для расшифровки?
9. SprayTM 11.10.19 12:00 Сейчас в теме
(6)мне нужно чтобы по выбраной номенклатуре отрывался другой отчет АнализЦен этой номенклатуры с настройками группировок и полей пользователя + передача параметра КонецПериода во второй отчет как НаДату
10. SprayTM 11.10.19 12:34 Сейчас в теме
или можно через построитель, если есть варианты. в реквизитах АнализЦен он есть
4. GG_Dots 41 11.10.19 09:06 Сейчас в теме
Да несколько вариантов есть:
- можешь сделать прикольно через хранилище настроек :

ОбщиНастройкиПользователя = Новый Структура;
ОбщиНастройкиПользователя.Вставить("ТвойПараметр", ТвоеЗначение);
ХранилищеОбщихНастроек.Сохранить("ВнешниеОтчеты", "ДляМоегоОтчета123", ОбщиНастройкиПользователя);	


А во внешнем отчете проверить есть ли такая настройка в системе и получить её если есть:

ОбщиНастройкиПользователя = ХранилищеОбщихНастроек.Загрузить("ВнешниеОтчеты", "ДляМоегоОтчета123");
	
	Если Не ОбщиНастройкиПользователя = Неопределено Тогда 
		
		ЛюбимыйКлуб       								   = ОбщиНастройкиПользователя.ЛюбимыйКлуб;
		
	КонецЕсли;

Ну это не самый правильный вариант конечно, но будет работать точно:)

https://craft1c.ru/khranilishheobshhikhnastroek/
11. AlexandrSmith 69 14.10.19 10:18 Сейчас в теме
для обычных форм

Значение расшифровки - поле для передачи параметров из отчета
Дальше используем элементы внешней формы.

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

			Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
			Форма.ЭлементыФормы.номенклатура.значение = ЗначениеРасшифровки;
			Форма.ЭлементыФормы.ФлПроверитьПлатежи.значение = ПроверитьПлатежи;

			Форма.Открыть();
		исключение
			сообщить("Не удалось открыть Отчет по номенклатуре!");
		КонецПопытки;
	КонецЕсли;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот