|
Вывод отчета "Анализ субконто типовой" из списка номенклатуры с отбором в БП 3.0 | ☑ | ||
---|---|---|---|---|
0
K1RSAN
05.12.20
✎
15:31
|
В общем - вопрос в названии темы. В двойке всё это делалось относительно просто, в тройке попытался передать как параметры - ругается на конфликт настроек. Может тут есть люди, которые запускали этот отчет из каких-нибудь форм с разными настройками?
|
|||
1
K1RSAN
05.12.20
✎
16:31
|
В общем, нашел частично, потом методом тыка нашел, что добавить надо или изменить. На будущее, вдруг понадобится кому.
Часть кода может быть мусорной (утащено с интернета), в субботу вечером не хочется заниматься разбором полета. Потом может перепишу. Запускается кнопкой из формы списка номенклатуры &НаКлиенте Процедура Анализ(Команда) ТекНоменклатура = Элементы.Список.ТекущаяСтрока; Организация = ПолучитьОрганизациюПоУмолчанию(); //Имя вызываемого отчета карточка,анализ, ОСВ по счету . Я делал только для этих трех. ИмяОтчета = "АнализСубконтоТиповой"; // Добавляем структуру группировок ГруппировкаСчет = Новый Структура; ГруппировкаСчет.Вставить("Использование", Истина); ГруппировкаСчет.Вставить("Поле", "Счет"); ГруппировкаСчет.Вставить("Представление", "Счет"); ГруппировкаСчет.Вставить("ТипГруппировки", 0); ГруппировкаСклад = Новый Структура; ГруппировкаСклад.Вставить("Использование", Истина); ГруппировкаСклад.Вставить("Поле", "Субконто2"); ГруппировкаСклад.Вставить("Представление", "Склады"); ГруппировкаСклад.Вставить("ТипГруппировки", 0); ГруппировкаНоменклатура = Новый Структура; ГруппировкаНоменклатура.Вставить("Использование", Истина); ГруппировкаНоменклатура.Вставить("Поле", "Субконто1"); ГруппировкаНоменклатура.Вставить("Представление", "Номенклатура"); ГруппировкаНоменклатура.Вставить("ТипГруппировки", 0); ГруппировкаОтчета = Новый Массив; ГруппировкаОтчета.Добавить(ГруппировкаСчет); ГруппировкаОтчета.Добавить(ГруппировкаСклад); ГруппировкаОтчета.Добавить(ГруппировкаНоменклатура); СписокВидовСубконто = ПолучитьСписокСубконто(); //Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета) ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных; ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , НачалоГода(ТекущаяДата())); ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , КонецГода(ТекущаяДата())); ДополнительныеСвойства = ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства; ДополнительныеСвойства.Вставить("Группировка" , ГруппировкаОтчета); ДополнительныеСвойства.Вставить("СписокВидовСубконто" , СписокВидовСубконто); ДополнительныеСвойства.Вставить("ПоСубсчетам" , Истина); ДополнительныеСвойства.Вставить("ПоказательКоличество" , Истина); ДополнительныеСвойства.Вставить("ПоказательБУ" , Истина); //Заполняем дополнительные отборы (в примере только для субконто1 и субконто2) НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных")); НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор"; Если ТекНоменклатураЭтоГруппа(ТекНоменклатура) Тогда // Отбор по группе номенклатуры или самой номенклатуре ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.ВИерархии,"Субконто1", ТекНоменклатура); Иначе ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто1", ТекНоменклатура); КонецЕсли; ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Организация", Организация); //Обязателньо указываем ключ (Равным параметру "ИДРасшифровки",я указывал Имя отчета ) НастройкиРасшифровки НастройкиРасшифровки = Новый Структура; НастройкиРасшифровки.Вставить(ИмяОтчета, ПользовательскиеНастройкиКомпоновкиДанных); УсловияОтбора = Новый Структура(); УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки); //Дублируем настройки (у меня в файловой без этого не открывалось) ОбщиеНастройки = Новый Структура(); ОбщиеНастройки.Вставить("Объект" , УсловияОтбора); ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки); //Помещаем во временное хранилище (Уид можно случайный) АлресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор); //Обращаем внимания на заполнемые настройки, если вы укажете отбор = истина то затрется все выше указанные отборы ( поскольку показатели и группировки я не менял, то оставил их типоыми) ЗаполнятьТиповыеНастройки = Новый Структура; ЗаполнятьТиповыеНастройки.Вставить("Отбор" , Истина); //ЗаполнятьТиповыеНастройки.Вставить("Группировка" , Истина); // Если открыть код тут - группировки сортируются автоматически - неправильно в моем случае ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина); //ЗаполнятьТиповыеНастройки.Вставить("Показатели" , Истина); // Если открыть - показатель будет только БУ, а мне надо количество //Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками) ПараметрыОтчета = Новый Структура; ПараметрыОтчета.Вставить("РежимРасшифровки" , Истина); ПараметрыОтчета.Вставить("ВидРасшифровки" , 2); ПараметрыОтчета.Вставить("СформироватьПриОткрытии" , Ложь); ПараметрыОтчета.Вставить("ИДРасшифровки" , ИмяОтчета); ПараметрыОтчета.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройкиКомпоновкиДанных); ПараметрыОтчета.Вставить("ЗаполняемыеНастройки" , ЗаполнятьТиповыеНастройки); //Ну и открываем саму форму ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчета", ПараметрыОтчета,ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура ЗаполнитьЭлементОтбораКомпоновкиДанных(ОтборНастройкиКомпоновкиДанных,Использование,ВидСрав,ИмяПоля,ЗначениеОтбора) НовыйЭлемент = ОтборНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлемент.Использование = Использование; НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); НовыйЭлемент.ВидСравнения = ВидСрав; НовыйЭлемент.ПравоеЗначение = ЗначениеОтбора; КонецПроцедуры &НаСервере Функция ТекНоменклатураЭтоГруппа(ТекНоменклатура) Возврат ТекНоменклатура.ЭтоГруппа; КонецФункции &НаСервере Функция УстановитьПользовательскиеНастройкиОтчета(ТипОтчета,СтруктураПараметров) СтруктураНастроек = Новый Структура; ОтчетОбъект = Отчеты[ТипОтчета].Создать(); ПользовательскиеНастройки = ОтчетОбъект.КомпоновщикНастроек.ПользовательскиеНастройки; Для Каждого ЭлПараметр Из СтруктураПараметров Цикл Для Каждого ПараметрСКД Из ПользовательскиеНастройки.Элементы Цикл Если ТипЗнч(ПараметрСКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда Если строка(ПараметрСКД.Параметр) = ЭлПараметр.Ключ Тогда ПараметрСКД.Значение = ЭлПараметр.Значение; ПараметрСКД.Использование = Истина; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Возврат ПользовательскиеНастройки; КонецФункции &НаСервере Функция ПолучитьОрганизациюПоУмолчанию() Возврат Справочники.Организации.ОрганизацияПоУмолчанию(ПользователиИнформационнойБазы.ТекущийПользователь()); КонецФункции &НаСервере Функция ПолучитьСписокСубконто() СписокВидовСубконто = Новый СписокЗначений; СписокВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура); СписокВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоТиповые.Склады); Возврат СписокВидовСубконто КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |