Имя: Пароль:
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
Вместо одной Процедура ОткрытьОтчет(Парам) Экспорт

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

Процедура ОткрытьКарточкаСчета(Парам) Экспорт
Процедура ОткрытьОСВпоСчету(Парам) Экспорт
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший