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