|   |   | 
| 
 | СКД : Управление видимостью колонок реквизитов ресурсов через Форму Отчета | ☑ | ||
|---|---|---|---|---|
| 0
    
        bvb 01.09.25✎ 13:17 | 
        Добрый день
 Есть отчет, в нем выводится два ресурса (см. Выбранные поля) Используется Форма Отчета и управление ею через механизм : Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт Настройки.События.ПриСозданииНаСервере = Истина; Настройки.События.ПередЗагрузкойВариантаНаСервере = Истина; Настройки.События.ПриЗагрузкеВариантаНаСервере = Истина; Настройки.События.ПриЗагрузкеПользовательскихНастроекНаСервере = Истина; КонецПроцедуры Клиент хочет ЛЕГКО и ИНТРАКТИВНО управлять видимостью колонок через Форме отчета Как их вывести управление на форму отчета в виде полей флажка ? 
 | |||
| 1
    
        craxx 01.09.25✎ 13:20 | 
        (0) разверни УНФ 3 и посмотри как там реализовано     | |||
| 2
    
        toypaul гуру 01.09.25✎ 14:09 | 
        первое что пришло в голову - добавить вспомогательные параметры. далее их анализировать или в при компоновке или в каком-то событии из настроек формы. анализировать и устанавливать видимость полей.     | |||
| 3
    
        toypaul гуру 01.09.25✎ 14:10 | 
        Не помню можно такое с полями или нет, но с отборами это делается с помощью добавления в пользовательские настройки через представление - появляется флажок на форме, который включает/выключает отбор.     | |||
| 4
    
        bvb 01.09.25✎ 14:48 | 
        (3)
 Т.е. без параметров никак? А можно отослать к какому-то примеру из типовых? | |||
| 5
    
        Chameleon1980 01.09.25✎ 15:25 | 
        (4) а в (1) куда отослали?     | |||
| 6
    
        bvb 01.09.25✎ 16:58 | 
        (5) Если в 1С речь про УНФ 3.0, я там подобных отчетов не видел     | |||
| 7
    
        craxx 01.09.25✎ 20:04 | 
        (6) Ошибся. УНФ 1.6
 Пример на скрине 
 | |||
| 8
    
        toypaul гуру 02.09.25✎ 09:37 | 
        (7) В УНФ какой-то свой интерфейс в отчетах. На БСП нет такого. Если у автора не УНФ, то вряд ли он к себе такое перенесет.     | |||
| 9
    
        bvb 02.09.25✎ 12:11 | 
        Кажется я нащупал решение.
 В модуле отчета в методе ПриСозданииНаСервере добавил крымжики и процедуры ПриИзменении на ФормуОтчета МассивДобавляемыхРеквизитов = Новый Массив; МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ПоказательРуб", Новый ОписаниеТипов("Булево"))); Форма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); НовыйЭлемент = Форма.Элементы.Вставить("ПоказательРуб", Тип("ПолеФормы"), Форма.Элементы.KMS_Настройки); НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка; НовыйЭлемент.ПутьКДанным = "ПоказательРуб"; ПодключаемыеКоманды.ДобавитьКоманду (Форма, , "KMS_ОПИУ_ПоказательРуб", "(KMS)ОПИУ Показатель (Руб)"); Форма.Элементы.ПоказательРуб.УстановитьДействие("ПриИзменении", "KMS_ОПИУ_ПоказательРуб"); Сами процедуры в форме отчета вызываются - проверил. Теперь нужно разобраться, как в этих процедурах включать и выключать выбранные поля в СКД. Я полагаю нужно получить доступ к СКД через ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); | |||
| 10
    
        toypaul гуру 02.09.25✎ 12:29 | 
        (9) решил не искать легких путей? ну теперь изучай как устроена типовая форма отчета.
 нужно добраться до настроек. но точно не так ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); | |||
| 11
    
        bvb 02.09.25✎ 12:35 | 
        (10) Альтернатива какая ? 
 Допустим создал я отдельный параметр в СКД Вывести на форму его не проблема. А как его поженить с управлением полем СКД ? | |||
| 12
    
        toypaul гуру 02.09.25✎ 12:40 | 
        (11) я выше писал. отдельно расписывать лень и некогда     | |||
| 13
    
        bvb 02.09.25✎ 12:51 | 
        (12) Анализировать в ПриКомпоновке ?
 Можно кстати. Я что то сразу не додумал. Где то у меня была методичка СделайВсеВПриКомпоновкеРезультата | |||
| 14
    
        bvb 02.09.25✎ 16:33 | 
        Значения параметров получил :
 Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) ВключатьПоказательРуб = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"ВключатьПоказательРуб").Значение; ВключатьПоказательEUR = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"ВключатьПоказательEUR").Значение; КонецПроцедуры теперь нужно понять как программно снять галку у полей сабжа Вот как бы это сделать ? | |||
| 15
    
        d4rkmesa 02.09.25✎ 16:36 | 
        (0) Можно в структуре отчета СКД по кнопочке "Свойства элемента пользовательских настроек" добавить "Выбранные поля"  в "Быстрые настройки" и в шапке отчета галочки отмечать, но это не совсем красиво выглядит.     | |||
| 16
    
        d4rkmesa 02.09.25✎ 16:48 | 
        Либо программно (тут основной момент в том, что чтобы это нормально выглядело, нужно в пользовательских настройках сделать то же самое), я примерно такую процедуру воткнул перед получением настроек в ПриКомпоновкеРезультата()
 
 | |||
| 17
    
        d4rkmesa 02.09.25✎ 16:50 | 
        На примере выше колонки объединены в группу Дополнительно.     | |||
| 18
    
        bvb 04.09.25✎ 12:31 | 
        (16)  Спасибо за пример
 Я беру настройки для редактирования : Настройки = КомпоновщикНастроек.ПолучитьНастройки(); и не понимаю в каком свойстве Настроек искать данные поля. Еще нюанс : у меня эти поля заданы на уровне выбранных полей ТАБЛИЦЫ ОТЧЕТА (см. рисунок) 
 | |||
| 19
    
        Мультук гуру 04.09.25✎ 12:40 | 
        (18) 
 Левый рис Настройки.Структура -- >тут всякое, смотрим, удивляемся | |||
| 20
    
        bvb 04.09.25✎ 14:34 | 
        Получилось .
 Вот рабочий вариант : Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) //СхемаКомпоновкиДанных ВключатьПоказательРуб = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"ВключатьПоказательРуб").Значение; ВключатьПоказательEUR = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек,"ВключатьПоказательEUR").Значение; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ИдентификаторПользовательскойНастройки = Настройки.Выбор.ИдентификаторПользовательскойНастройки; ВыбраныеПоля = Настройки.Структура[0].Выбор.Элементы; Для Каждого ВыбраноеПоле ИЗ ВыбраныеПоля Цикл Если Строка(ВыбраноеПоле.Поле) = "СуммаПоказателяРуб" И ВыбраноеПоле.Использование <> ВключатьПоказательРуб Тогда ВыбраноеПоле.Использование = ВключатьПоказательРуб; КонецЕсли; Если Строка(ВыбраноеПоле.Поле) = "СуммаПоказателяEUR" И ВыбраноеПоле.Использование <> ВключатьПоказательEUR Тогда ВыбраноеПоле.Использование = ВключатьПоказательEUR; КонецЕсли; КонецЦикла; КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); КонецПроцедуры | |||
| 21
    
        bvb 04.09.25✎ 14:40 | 
        Но счастье мое не полное...
 Хочу что бы в ФормеОтчета, данные параметры компоновки отражались не как на рисунке, а красиво - галочками, в группе и цвет был синий. Хотел перехватить ПриСоздании на сервере формы отчета. Найти там поля формы, соответствующие этим параметрам и доработать их. Но их там нет. Они что появляются в ФормеОтчета позже ПриСозданииНаСервере ? 
 | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |