|
программные группировки в ОСВ по счету БП 3.0 | ☑ | ||
---|---|---|---|---|
0
happysan
28.03.16
✎
22:34
|
Командой вызываю ОСВ по счету из формы документа, но не удаётся настроить группировки - контрагенты и договоры, кто-нибудь в курсе как реализовать? БП 3.0.
&НаКлиенте Процедура ЗаполнитьЭлементОтбораКомпоновкиДанных(ОтборНастройкиКомпоновкиДанных,Использование,ВидСрав,ИмяПоля,ЗначениеОтбора) НовыйЭлемент = ОтборНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлемент.Использование = Использование; НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); НовыйЭлемент.ВидСравнения = ВидСрав; НовыйЭлемент.ПравоеЗначение = ЗначениеОтбора; КонецПроцедуры &НаКлиенте Процедура гк_ОСВпоСчету76(Команда) ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных; ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Счет" , ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.РасчетыСРазнымиДебиторамиИКредиторами")); ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , НачалоКвартала(Объект.Дата)); ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , КонецКвартала(Объект.Дата)); ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация" , Объект.Организация); ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ПоСубсчетам" , Истина); НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных")); НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор"; ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто1", Объект.Контрагент); ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто2", Объект.ДоговорКонтрагента); НастройкиРасшифровки = Новый Структура; НастройкиРасшифровки.Вставить("ОборотноСальдоваяВедомостьПоСчету", ПользовательскиеНастройкиКомпоновкиДанных); УсловияОтбора = Новый Структура(); УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки); ОбщиеНастройки = Новый Структура(); ОбщиеНастройки.Вставить("Объект" , УсловияОтбора); ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки); АдресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор); ЗаполнятьТиповыеНастройки = Новый Структура; ЗаполнятьТиповыеНастройки.Вставить("Отбор" , Ложь); ЗаполнятьТиповыеНастройки.Вставить("Группировка" , Ложь); ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина); ЗаполнятьТиповыеНастройки.Вставить("Показатели" , Истина); ПараметрыОтчета = Новый Структура; ПараметрыОтчета.Вставить("ВидРасшифровки" , 1); ПараметрыОтчета.Вставить("АдресНастроек" , АдресХранилища); ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина); ПараметрыОтчета.Вставить("ИДРасшифровки" , "ОборотноСальдоваяВедомостьПоСчету"); ПараметрыОтчета.Вставить("РежимРасшифровки" , Истина); ПараметрыОтчета.Вставить("ЗаполняемыеНастройки" , ЗаполнятьТиповыеНастройки); ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма.ФормаОтчета", ПараметрыОтчета, ЭтаФорма); КонецПроцедуры |
|||
1
DrShad
28.03.16
✎
23:17
|
Сфрормируй обычный отчет и при компоновке результата смотри коллекции элементов настроек
|
|||
2
Armando
28.03.16
✎
23:43
|
||||
3
happysan
29.03.16
✎
07:13
|
Говорят же: "Утро вечера мудренее!". Придумал более короткий путь:
&НаСервере Процедура Команда1НаСервере(ОбъектФормы) ОСВОбъект = ДанныеФормыВЗначение(ОбъектФормы, Тип("ОтчетОбъект.ОборотноСальдоваяВедомостьПоСчету")); ОСВОбъект.НачалоПериода = ТекущаяДата(); ОСВОбъект.КонецПериода = ТекущаяДата(); ЗначениеВДанныеФормы(ОСВОбъект, ОбъектФормы); КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) ФормаОСВ = ПолучитьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету.ФормаОбъекта"); ОбъектФормы = ФормаОСВ.Отчет; Команда1НаСервере(ОбъектФормы); КопироватьДанныеФормы(ОбъектФормы, ФормаОСВ.Отчет); ФормаОСВ.Модифицированность = Истина; ФормаОСВ.Открыть(); КонецПроцедуры |
|||
4
happysan
29.03.16
✎
07:14
|
Здесь можно в коде заполнять и таб.часть отчета "Группировка", "Отбор" и т.д.
|
|||
5
happysan
29.03.16
✎
07:14
|
Всем спасибо за участие!
|
|||
6
happysan
29.03.16
✎
08:01
|
(4) На счёт таб.части "Отборы" - её нет)
|
|||
7
happysan
29.03.16
✎
08:11
|
(6) Но с отборами вышел из положения примерно так:
ОСВОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].Использование = Истина; ОСВОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы[1].ПравоеЗначение = Контрагент; |
|||
8
happysan
29.03.16
✎
09:19
|
Но только если очищать отборы, то отладчиком вижу, что они очистились, но при запуске ОСВ запоминаются пользовательские последние настройки, то есть не удаётся пока их очистить.
|
|||
9
happysan
29.03.16
✎
15:54
|
Вот результат:
&НаКлиенте Процедура ОСВпоСчету76(Команда) ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных; ДополнительныеСвойства = ПользовательскиеНастройки.ДополнительныеСвойства; ДополнительныеСвойства.Вставить("ВключатьОбособленныеПодразделения", Ложь); ДополнительныеСвойства.Вставить("Периодичность", 0); ДополнительныеСвойства.Вставить("ВыводитьЕдиницуИзмерения", Ложь); ДополнительныеСвойства.Вставить("ПоСубсчетам", Истина); ДополнительныеСвойства.Вставить("Счет", ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.РасчетыСРазнымиДебиторамиИКредиторами")); ДополнительныеСвойства.Вставить("ПоказательВалютнаяСумма", Ложь); ДополнительныеСвойства.Вставить("ВыводитьЗаголовок", Истина); ДополнительныеСвойства.Вставить("РежимРасшифровки", Истина); ДополнительныеСвойства.Вставить("ВыводитьПодвал", Ложь); ДополнительныеСвойства.Вставить("НачалоПериода", НачалоКвартала(ТекущаяДата())); ДополнительныеСвойства.Вставить("КонецПериода", КонецКвартала(ТекущаяДата())); ДополнительныеСвойства.Вставить("ПоказательБУ", Истина); ДополнительныеСвойства.Вставить("Организация", Объект.Организация); ПараметрыФормы = Новый Структура(); ПараметрыФормы.Вставить("ВидРасшифровки", 2); ПараметрыФормы.Вставить("ИДРасшифровки", "ОборотноСальдоваяВедомостьПоСчету"); ПараметрыФормы.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройки); ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина); ПараметрыФормы.Вставить("ЗаполняемыеНастройки", Новый Структура("ВыводимыеДанные, Группировка, Отбор, Показатели", Истина, Истина, Истина, Ложь)); ФормаОСВ = ПолучитьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма", ПараметрыФормы, ЭтаФорма, Истина); ОбъектФормы = ФормаОСВ.Отчет; ЗаполнениеНастроекОСВНаСервере(ОбъектФормы); КопироватьДанныеФормы(ОбъектФормы, ФормаОСВ.Отчет); ФормаОСВ.Открыть(); СписокДоговоров = ПолучитьСписокДоговоров(); ФормаОСВ.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].Использование = Истина; ФормаОСВ.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ФормаОСВ.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы[2].ПравоеЗначение = СписокДоговоров; ФормаОСВ.СформироватьОтчетНаСервере(); КонецПроцедуры &НаСервере Процедура ЗаполнениеНастроекОСВНаСервере(ОбъектФормы) ОСВОбъект = ДанныеФормыВЗначение(ОбъектФормы, Тип("ОтчетОбъект.ОборотноСальдоваяВедомостьПоСчету")); ОСВОбъект.Группировка.Очистить(); НовыеГруппировкаКонтрагенты = ОСВОбъект.Группировка.Добавить(); НовыеГруппировкаКонтрагенты.Использование = Истина; НовыеГруппировкаКонтрагенты.Поле = "Субконто1"; НовыеГруппировкаКонтрагенты.Представление = "Контрагенты"; НовыеГруппировкаКонтрагенты.ТипГруппировки = 0; НовыеГруппировкаДоговоры = ОСВОбъект.Группировка.Добавить(); НовыеГруппировкаДоговоры.Использование = Истина; НовыеГруппировкаДоговоры.Поле = "Субконто2"; НовыеГруппировкаДоговоры.Представление = "Договоры"; НовыеГруппировкаДоговоры.ТипГруппировки = 0; ЗначениеВДанныеФормы(ОСВОбъект, ОбъектФормы); КонецПроцедуры &НаСервере Функция ПолучитьСписокДоговоров() ОбъектЗНЗ = РеквизитФормыВЗначение("Объект"); СписокДоговоров = Новый СписокЗначений; ТЗ = ОбъектЗНЗ.гк_Расшифровка.Выгрузить(, "Субконто2"); ТЗ.Свернуть("Субконто2"); СписокДоговоров.ЗагрузитьЗначения(ТЗ.ВыгрузитьКолонку("Субконто2")); Возврат СписокДоговоров; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |