Имя: Пароль:
1C
1С v8
Программное открытие Оборотно-сальдовой ведомости - не могу передать группировки
↓ (Волшебник 22.04.2023 22:31)
0 OnePrg
 
22.04.23
22:36
&НаКлиенте
Процедура ОткрытьОтчет(Парам) Экспорт 
	
	ИмяОтчета = Парам.ИмяОтчета;
	
	//Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета) 
	ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
	ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Счет"				  , Парам.Счет);
	ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" 		, Парам.НачалоПериода);
	ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода"		  , Парам.КонецПериода);
	ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация"   		, Парам.Организация);
	ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ВыводитьЗаголовок" 	, Истина);
	
	//Заполняем дополнительные отборы (в примере только для субконто1 и субконто2)
	НовыйОтбор										= ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
	НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор";															  
	Если Парам.Свойство("Субконто1") Тогда
		ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто1", Парам.Субконто1);
	КонецЕсли;
	Если Парам.Свойство("Субконто2") Тогда
		ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто1", Парам.Субконто2);
	КонецЕсли;				  
	
	Если ИмяОтчета = "ОборотноСальдоваяВедомостьПоСчету" Тогда						  
		ГруппировкаКомпоновкиДанных1 = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
		ГруппировкаКомпоновкиДанных1.Использование 		= Истина;
		ПолеГруппировкиКомпоновкиДанных = ГруппировкаКомпоновкиДанных1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
		ПолеГруппировкиКомпоновкиДанных.Использование 	= Истина;
		ПолеГруппировкиКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("Склады");

		ГруппировкаКомпоновкиДанных2 = ГруппировкаКомпоновкиДанных1.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
		ГруппировкаКомпоновкиДанных2.Использование 		= Истина;
		ПолеГруппировкиКомпоновкиДанных2 = ГруппировкаКомпоновкиДанных2.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
		ПолеГруппировкиКомпоновкиДанных2.Использование 	= Истина;
		ПолеГруппировкиКомпоновкиДанных2.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
	КонецЕсли;
	
	//Обязателньо указываем ключ (Равным параметру "ИДРасшифровки",я указывал Имя отчета ) НастройкиРасшифровки
	НастройкиРасшифровки = Новый Структура;
	НастройкиРасшифровки.Вставить(ИмяОтчета, ПользовательскиеНастройкиКомпоновкиДанных);
	
	УсловияОтбора = Новый Структура();
	УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
	
	//Дублируем настройки (у меня в файловой без этого не открывалось)
	ОбщиеНастройки = Новый Структура();
	ОбщиеНастройки.Вставить("Объект"			  , УсловияОтбора);
	ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
	
	//Помещаем во временное хранилище (Уид можно случайный)
	АлресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор);
	
	//Обращаем внимания на заполнемые настройки, если вы укажете отбор = истина то затрется все выше указанные отборы ( поскольку показатели и группировки я не менял, то оставил их типоыми) 
	ЗаполнятьТиповыеНастройки = Новый Структура;
	ЗаполнятьТиповыеНастройки.Вставить("Отбор"		  , Ложь);
	ЗаполнятьТиповыеНастройки.Вставить("Группировка"	, ИмяОтчета <> "ОборотноСальдоваяВедомостьПоСчету");
	ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина);
	ЗаполнятьТиповыеНастройки.Вставить("Показатели"	 , Истина);
	
	//Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками)	 
	ПараметрыОтчета = Новый Структура;
	ПараметрыОтчета.Вставить("ВидРасшифровки"		 , 1);
	ПараметрыОтчета.Вставить("АдресНастроек"		  , АлресХранилища);
	ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
	ПараметрыОтчета.Вставить("ИДРасшифровки"		  , ИмяОтчета);
	ПараметрыОтчета.Вставить("РежимРасшифровки"	   , Истина);
	ПараметрыОтчета.Вставить("ЗаполняемыеНастройки"   , ЗаполнятьТиповыеНастройки);
	
	//Ну и открываем саму форму
	ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчета", ПараметрыОтчета,ЭтаФорма,Истина);			
	
КонецПроцедуры


отчет открывается, формируется, но группировок нет
1 Волшебник
 
22.04.23
22:31
Запустите Отладчик и посмотрите, где теряются группировки
2 Волшебник
 
22.04.23
22:37
исправьте ошибку в имени переменной "АлресХранилища"
3 Волшебник
 
22.04.23
22:38
ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;


Плохое имя переменной
4 Волшебник
 
22.04.23
22:40
Вместо одной Процедура ОткрытьОтчет(Парам) Экспорт

сделайте несколько процедур, например

Процедура ОткрытьКарточкаСчета(Парам) Экспорт
Процедура ОткрытьОСВпоСчету(Парам) Экспорт
2 + 2 = 3.9999999999999999999999999999999...