Власне завдання: Створити множинний відбір для ТЗ як у списках документів і т.і.
Є форма з ТЗ.
Форма додана до Документу.
Сам відбір доступний у ПострительЗапроса - все гарно.
Як створити та відобразити форму налаштування цих відборів як у стандартних списках типу: Використання, Поле, Тип порівняння, значення?
В мене проблема сформувати та показати цю форму.
Які є ідеї?
alex_shkut @ Сегодня, 15:24
,
У мене є ідея винести цю форму у Обробку і там це трохи простіше.
Користувач взагалі нічого не помітить, бо явного зв'язку з Документом немає ніякого.
alex_shkut @ Сегодня, 15:27
,
І прошу мене не хаяти - "це папереднікі", розгрібаю г...
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(МояТЗ);
//первый отбор
Отбор = Построитель.Отбор.Добавить("МояКолонкаОтбора1");
Отбор.ВидСравнения = ВидСравнения.МеньшеИлиРавно; //или друге
Отбор.Использование = Истина;
Отбор.Значение = ЗначениеСравнения1;
//первый отбор
Отбор = Построитель.Отбор.Добавить("МояКолонкаОтбора2");
Отбор.ВидСравнения = ВидСравнения.МеньшеИлиРавно; //или друге
Отбор.Использование = Истина;
Отбор.Значение = ЗначениеСравнения2;
//первый отбор
Отбор = Построитель.Отбор.Добавить("МояКолонкаОтбора3");
Отбор.ВидСравнения = ВидСравнения.МеньшеИлиРавно; //или друге
Отбор.Использование = Истина;
Отбор.Значение = ЗначениеСравнения3;
ПостроительЗапроса.Выполнить();
Результат = ПостроительЗапроса.Результат.Выгрузить();
//Результат - Куда выгружаем отобраную ТЗ
// ТаблицаОтборов - Таблица значений с колонками
// ИмяОтбора - Строка
// ВидСравнения - ВидСравнения
// Значение - Any
// Возвращает отфильтрованную таблицу значений
Для Каждого СтрокаКоллекции Из ТаблицаОтборов Цикл
Отбор = Построитель.Отбор.Добавить(СтрокаКоллекции.ИмяОтбора);
Отбор.ВидСравнения = СтрокаКоллекции.ВидСравнения;
Отбор.Использование = Истина;
Отбор.Значение = СтрокаКоллекции.Значение;
КонецЦикла;
AnryMc @ Сегодня, 15:31
,
Як виконати - я знаю. Як показати користувачу налаштування цих отборів?
Щоб у формі не було таблиці ПостроительОтчета.Отбор на все хлебало, а відкривалася окрема форма тиму стандартного налаштування отборів.
Для Каждого СтрокаКоллекции Из ТаблицаОтборов Цикл
alex_shkut @ Сегодня, 17:01
,
я робив щось подібне, через КомпоновщикНастроекКомпоновкиДанных
користувач сам може додати потрібні отбори
nik389 @ Сегодня, 16:39
,
Щось подібне до стандартної форми настройки відборів для звичайних форм.
ПостроительЗапроса - 10%
ПостроительОтчета - 50%
СКД - 120%
Навіщо зайвий функціонал, тормоза і оперативна пам'ять для простої задачі?
Тим більше, що наступне використовує попереднє.
А досить лише ПостроительЗапроса.
alex_shkut @ Сегодня, 18:05
,
ну то добре, робіть як вам зручніше, ви спитали "як показати користувачу налаштування", я навів приклад, можливо, я щось не так зрозумів і ви мали на увазі зовсім інше
щодо "тормозів та зайвого функціоналу" - це все дуже суб`єктивне. ніколи ніяких тормозів з використанням скд, у відборах, сортуванні та іншого, не спостерігав, якщо з розумом робити
тим більше у типових, це доволі розповсюджений варіант
nik389 @ Сегодня, 18:01
,
Я намагаюся створити функціонал отбору для ТЗ, такий як типовий для звичайних форм списків документів, тощо.
Без зайвого навантаження типу СКД и т.і.
Просто і лаконічно.
Ну ось є перші результати.
//Структура отбора
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(СписокВРаботе);
Для каждого Колонка из ЭлементыФормы.ДокументСписокВРаботе.Колонки Цикл
Если Колонка.Видимость Тогда
Элем = мОтбор.Добавить(Колонка.Имя);
КонецЕсли;
КонецЦикла;
alex_shkut @ 19.03.24, 18:13
,
//Структура отбора
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(СписокВРаботе);
мОтбор = ПостроительЗапроса.Отбор;
Для каждого Колонка из ЭлементыФормы.ДокументСписокВРаботе.Колонки Цикл
Если Колонка.Видимость Тогда
мОтбор.Добавить(Колонка.Имя);
КонецЕсли;
КонецЦикла;
Процедура КоманднаяПанельВРаботеНастроитьОтбор(Кнопка)
ФормаО = Документы.ЗаказНаРемонт.ПолучитьФорму("ФормаОтбора",ЭтаФорма);
ФормаО.ТаблицаОтбор = мОтбор;
ФормаО.ОткрытьМодально();
СписокВРаботе = ПолучитьТаблицуПоСостоянию(Перечисления.СтатусыРабот.ВРаботе,мОтбор);
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua