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

12.12.20

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

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

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

 

 

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

 

SizovE

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159722    876    399    

862

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    8741    implecs_team    6    

47

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    7015    56    obmailok    21    

79

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

31.01.2024    3159    5    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    10841    23    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    8060    PROSTO-1C    15    

68
Оставьте свое сообщение