Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как убрать ненужные колонки или строки по условию?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
Andi_x2021
Доброе время суток Всем!
Давно работаю на СКД, но так глубоко не копал sad.gif
Ситуация: Ести отчет по затратам. Писал на СКД. Давно работает. Все довольны.

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

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


Ну тогда САМЫЙ БЕСПОЛЕЗНЫЙ - при компоновке меняем в списке полей Использование
Andi_x2021
sava1 @ Сегодня, 15:50 необходимо зарегистрироваться для просмотра ссылки ,
Поле.Использование = Ложь
КАК достучаться до этих полей? перед тем как Использование?
Да и вообще то в теме я просил, есть ли в инете описание компоновщика настроек.
Его методы, свойства и т.д.
logist
Цитата(Andi_x2021 @ 15.04.21, 17:01) необходимо зарегистрироваться для просмотра ссылки
Да и вообще то в теме я просил, есть ли в инете описание компоновщика настроек.

Чуть больше чем во встроенной справке - на портале необходимо зарегистрироваться для просмотра ссылки
sava1
Цитата(Andi_x2021 @ 15.04.21, 17:01) необходимо зарегистрироваться для просмотра ссылки
Его методы, свойства и т.д.


Отладку отключили ? ставите точку останова в ПриКомпоновке - и смотрите все свойства
Andi_x2021
sava1 @ 15.04.21, 18:40 необходимо зарегистрироваться для просмотра ссылки ,
Всем спасибо!
Разобрался!!!
Vofka
Andi_x2021, было бы хорошо озвучить решение. Возможно, кому-то ещё оно пригодится когда-то.
Andi_x2021
Vofka @ Вчера, 7:48 необходимо зарегистрироваться для просмотра ссылки ,
Не вдавался более глубже, но для моей задачи получилось вот так:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    ПараметрыОтчета = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    ПолеГруппировки = Новый ПолеКомпоновкиДанных("Регистратор");
    
    Для Каждого ПараметрОтчета Из ПараметрыОтчета Цикл
        Если ПараметрОтчета.Параметр = Новый ПараметрКомпоновкиДанных("ПоДокументам") Тогда    //это галочка на форме
            Если ПараметрОтчета.Значение = Ложь Тогда
                    Если ТипЗнч(ПараметрОтчета) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") И ПараметрОтчета.Параметр = Новый ПараметрКомпоновкиДанных("ПоДокументам") Тогда
                        Если НЕ (КолонкаОборотДоступна() И ПараметрОтчета.Значение) Тогда
                            ПараметрОтчета.Значение = Ложь;
                            //убирем из выводимых колонок
                            Для Каждого ЭлКолонки Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
                                
                                Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("Регистратор") Тогда
                                    ЭлКолонки.Использование = Ложь;
                                ИначеЕсли ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("ДатаДок") Тогда
                                    ЭлКолонки.Использование = Ложь;
                                КонецЕсли;
                            КонецЦикла;
                        Иначе
                            //добавляем, если нет
                            Для Каждого ЭлКолонки Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
                                Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("Оборот") Тогда
                                    ЭлКолонки.Использование = Истина;
                                КонецЕсли;
                            КонецЦикла;  
                        КонецЕсли;
                    КонецЕсли;
            КонецЕсли;                      
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.