Версия для печати темы (https://pro1c.org.ua/index.php?s=1a2ad2462f5c9d6eba1393d80ca5ffb8&showtopic=65873)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Как убрать ненужные колонки или строки по условию?

Автор: Andi_x2021 15.04.21, 13:09

Доброе время суток Всем!
Давно работаю на СКД, но так глубоко не копал sad.gif
Ситуация: Ести отчет по затратам. Писал на СКД. Давно работает. Все довольны.

Запрос построен на рег. бухгалтерии. Выборка идет по всем затратным счетам, где есть
субконто "СтатьиЗатрат" (с иерархией, что самое главное).
Одному бухгалтеру неудобно, что отчет очень широкий (счетов и субсчетов много).
Просит по условию скрыть колонки по счетам, оставив только Общий итог.
Другой попросил по условию не выводить документы (Регистраторы).
Галочки в настройках я то поставил. А вот обработать их я могу только через
"КомпоновщикНастроек.ПользовательскиеНастройки.Элементы", в процедуре "ПриКомпоновкеРезультата".
И вот дальше у меня как раз проблемма sad.gif
Много посмотрел статей, форумов. Для моего случая ничего не нашел.
Подскажите плз, какие нибудь ссылки, примеры и т.д.
Думаю, что сам могу разобраться, знать бы куда копать!
Платформа 8.3.17, конфигурация Бухгалтерия 2.0.
Заранее спасибо!

Автор: sava1 15.04.21, 13:17

Несколько вариантов с разными настройками полей

Автор: Andi_x2021 15.04.21, 15:13

sava1 @ Сегодня, 13:17 * ,
Спасибо, конечно. Но это еще один бесполезный совет...

Автор: logist 15.04.21, 15:42

Цитата(Andi_x2021 @ 15.04.21, 16:13) *
Но это еще один бесполезный совет...

огласите сразу весь список бесполезных советов))

Автор: sava1 15.04.21, 15:50

Цитата(Andi_x2021 @ 15.04.21, 16:13) *
sava1 @ Сегодня, 13:17 * ,
Спасибо, конечно. Но это еще один бесполезный совет...


Ну тогда САМЫЙ БЕСПОЛЕЗНЫЙ - при компоновке меняем в списке полей Использование

Автор: Andi_x2021 15.04.21, 16:01

sava1 @ Сегодня, 15:50 * ,
Поле.Использование = Ложь
КАК достучаться до этих полей? перед тем как Использование?
Да и вообще то в теме я просил, есть ли в инете описание компоновщика настроек.
Его методы, свойства и т.д.

Автор: logist 15.04.21, 16:11

Цитата(Andi_x2021 @ 15.04.21, 17:01) *
Да и вообще то в теме я просил, есть ли в инете описание компоновщика настроек.

Чуть больше чем во встроенной справке - на портале https://pro1c.org.ua/redirect.php?https://its.1c.ua/#dev

Автор: sava1 15.04.21, 18:40

Цитата(Andi_x2021 @ 15.04.21, 17:01) *
Его методы, свойства и т.д.


Отладку отключили ? ставите точку останова в ПриКомпоновке - и смотрите все свойства

Автор: Andi_x2021 25.04.21, 11:29

sava1 @ 15.04.21, 18:40 * ,
Всем спасибо!
Разобрался!!!

Автор: Vofka 26.04.21, 7:48

Andi_x2021, было бы хорошо озвучить решение. Возможно, кому-то ещё оно пригодится когда-то.

Автор: Andi_x2021 27.04.21, 12:26

Vofka @ Вчера, 7:48 * ,
Не вдавался более глубже, но для моей задачи получилось вот так:

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua