Установка нескольких фильтров/отбора СКД в табличной форме, хранение в табличной части для отправки push/email уведомлений (ОтборКомпоновкиДанных, КомпоновщикНастроек, ДинамическийСписок)

12.12.20

Разработка - СКД

Рассмотрим, как организовать установку фильтров/отбора СКД (динамического списка) на push/email уведомления в подсистеме EDIbot (WebApp) для 1С в табличной части "События уведомлений".

Вот итоговый скрин-шот интерфейса, который мы хотим получить при вводе/установки фильтров для каждого события уведомления нашего webapp-приложения:

 

 

Однако, как оказалось, не так просто реализовать подобный интерфейс ввода фильтров СКД.

Поэтому расскажу как сделать все по шагам:

1. Добавляем для хранения поле "Отбор" в табличную часть, тип ХранилищеЗначения.

2. Создаем реквизит формы "Доступный отбор" типа динамический список, и устанавливаем ему нужный текст запроса для отбора.

3. Добавляем реквизит формы "ОтборФорма" для табличной части объекта, где будем хранить отбор компоновки данных:

 

 

4. Добавляем заполнение поля формы "ОтборФорма" в процедуру ПриЧтенииНаСервере :

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    
    Для Каждого СтрокаТЧ Из ТекущийОбъект.СобытияУведомлений Цикл
        
        МассивСтрок = Объект.СобытияУведомлений.НайтиСтроки(Новый Структура("НомерСтроки", СтрокаТЧ.НомерСтроки));
        Если МассивСтрок.Количество()=0 Тогда
            Продолжить;
        КонецЕсли;
        
        СтрокаФормы = МассивСтрок[0];
        
        СтрокаФормы.ОтборФорма     = СтрокаТЧ.Отбор.Получить();        
                    
    КонецЦикла;

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

5. Добавляем сохранение поля формы "ОтборФорма" в базу:

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	Для Каждого СтрокаТЧ Из ТекущийОбъект.СобытияУведомлений Цикл
		
		МассивСтрок = Объект.СобытияУведомлений.НайтиСтроки(Новый Структура("НомерСтроки", СтрокаТЧ.НомерСтроки));
		Если МассивСтрок.Количество()=0 Тогда
			Продолжить;
		КонецЕсли;
		
		СтрокаФормы = МассивСтрок[0];
		
		СтрокаТЧ.Отбор 	= Новый ХранилищеЗначения(СтрокаФормы.ОтборФорма);
				
	КонецЦикла;

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

6. Дальше, самое интересное, чтобы при открытии отбора Вы увидели все доступные поля для отбора, то мы должны взять наш реквизит формы "Доступный отбор" с текстом запроса и скопировать в него текущий отбор формы по строке:

&НаКлиенте
Процедура СобытияУведомленийПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	СтрокаТЧ = Элементы.СобытияУведомлений.ТекущиеДанные;
	Если СтрокаТЧ=Неопределено Тогда		
		Возврат;
	КонецЕсли;	
	
	ДоступныйОтбор.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();
	КомпоновкаДанныхКлиентСервер.СкопироватьТолькоОтборКомпоновкиДанных(СтрокаТЧ.ОтборФорма, ДоступныйОтбор.КомпоновщикНастроек.Настройки.Отбор);
	СтрокаТЧ.ОтборФорма = ДоступныйОтбор.КомпоновщикНастроек.Настройки.Отбор; 	

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

7. А при окончании редактирования создать новый компоновщик и скопировать туда только настройки отбора из поля "ОтборФорма". В противном случае, Вы столкнетесь с проблемой изменения отбора в других строчках при изменении в текущей строке: 

&НаКлиенте
Процедура СобытияУведомленийПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	СтрокаТЧ = Элементы.СобытияУведомлений.ТекущиеДанные;
	Если СтрокаТЧ=Неопределено Тогда		
		Возврат;
	КонецЕсли;	
	
	КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; 
	КомпоновкаДанныхКлиентСервер.СкопироватьТолькоОтборКомпоновкиДанных(СтрокаТЧ.ОтборФорма, КомпоновщикНастроек.Настройки.Отбор);
	СтрокаТЧ.ОтборФорма = КомпоновщикНастроек.Настройки.Отбор;

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

 ) вот и всё, отбор настроен, сохраняется, восстанавливается и позволяет редактировать. 

 

Надеюсь, моя публикация была Вам полезна и сэкономит Ваше время, ссылка на все публикации SizovE.

Подписывайтесь на мой канал (наверху), будет много интересного бесплатного контента :)

 

Вступайте в нашу телеграмм-группу Инфостарт

SizovE

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    255022    1403    421    

1153

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    6313    329    shapa_pro    25    

69

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    18580    ovetgana    112    

111

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    10789    krasnoshchekovpavel    5    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    10325    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    16426    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.

24.12.2024    14075    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    10848    AlexeyPROSTO_1C    1    

32
Для отправки сообщения требуется регистрация/авторизация