Заказать звонок

1C СКД Видимость колонки по условию

22.10.2018

Рассмотрим задачу, когда колонку СКД нужно выводить в зависимости от выполнения какого-то условия.

Рассмотрим на примере внешнего отчета (без формы отчета, только СКД), условие вывода колонки задано в параметре СКД с типом Булево. Все доступные параметры выведены на форму отчета с помощью свойства параметров Включать в пользовательские настройки (правой кнопкой мышки по параметру Свойства элемента пользовательских настроек) (рис. 1):

Рис. 1. Свойства параметра отчета

В списке выбранных полей отчета присутствует колонка Себестоимость, выводом которой нужно управлять (рис. 2):

Рис. 2. Выбранные поля отчета

У параметра Себестоимость, отвечающего за вывод колонки отчета СКД Себестоимость, на закладке Параметры в СКД задаем свойству Использование значение Всегда, чтобы пользователи выбирали только значение параметра и не могли управлять использованием параметра (рис. 3):

Рис. 3. Свойство параметра Использование

Далее в модуле объекта отчета определяем процедуру ПриКомпоновкеРезультата(), в функции КолонкаСебестоимостьДоступна() прописываем возможные дополнительные условия вывода колонки:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

                ПараметрыОтчета = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;

                Для Каждого ПараметрОтчета Из ПараметрыОтчета Цикл

                               Если ТипЗнч(ПараметрОтчета) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") И ПараметрОтчета.Параметр = Новый ПараметрКомпоновкиДанных("Себестоимость") Тогда

                                               Если НЕ (КолонкаСебестоимостьДоступна() И ПараметрОтчета.Значение) Тогда

                                                               ПараметрОтчета.Значение = Ложь;

                                                              

                                                               //убирем из выводимых колонок

                                                               Для Каждого ЭлКолонки Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл

                                                                               Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("Себестоимость") Тогда

                                                                                              ЭлКолонки.Использование = Ложь;

                                                                               КонецЕсли;

                                                               КонецЦикла;

                                               Иначе

                                                               //добавляем, если нет

                                                               Для Каждого ЭлКолонки Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл

                                                                               Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("Себестоимость") Тогда

                                                                                              ЭлКолонки.Использование = Истина;

                                                                               КонецЕсли;

                                                               КонецЦикла;  

                                               КонецЕсли;

                               КонецЕсли;

                КонецЦикла;

КонецПроцедуры

 

Автор статьи: Дина Королева.

 


Возврат к списку

Наши услуги и вакансии

Разработчики
на full-time
Программист 1С на 8 часов в день
от 1 600 руб/час
Позадачная
разработка 1С
Доработки и развитие любых решений на платформе 1С
Стоимость по оценке
Карьера в Neti

Вакансии разработчиков и консультантов 1С
З.П. от 100 000 рублей