Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 4
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Як створити форму налаштування відборів для ТЗ на основі ПостроителяЗапроса или ПостроителяОтчета , Собственно, Отбор по ТЗ можно выполнить на основе ПостроителяЗапроса          
alex_shkut Подменю пользователя
сообщение 19.03.24, 15:28
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Сумы
Спасибо сказали: 6 раз
Рейтинг: 5.3

Власне завдання: Створити множинний відбір для ТЗ як у списках документів і т.і.
Є форма з ТЗ.
Форма додана до Документу.
Сам відбір доступний у ПострительЗапроса - все гарно.
Як створити та відобразити форму налаштування цих відборів як у стандартних списках типу: Використання, Поле, Тип порівняння, значення?
В мене проблема сформувати та показати цю форму.
Які є ідеї?

alex_shkut @ Сегодня, 15:24 * ,
У мене є ідея винести цю форму у Обробку і там це трохи простіше.
Користувач взагалі нічого не помітить, бо явного зв'язку з Документом немає ніякого.

alex_shkut @ Сегодня, 15:27 * ,
І прошу мене не хаяти - "це папереднікі", розгрібаю г...

AnryMc Подменю пользователя
сообщение 19.03.24, 15:31
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Спасибо сказали: 118 раз
Рейтинг: 121.1

alex_shkut @ Сегодня, 16:27 * ,

  Построитель = Новый ПостроительОтчета;
   Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(МояТЗ);

   //первый отбор
       Отбор = Построитель.Отбор.Добавить("МояКолонкаОтбора1");
       Отбор.ВидСравнения = ВидСравнения.МеньшеИлиРавно; //или друге
       Отбор.Использование  = Истина;
       Отбор.Значение = ЗначениеСравнения1;

   //первый отбор
       Отбор = Построитель.Отбор.Добавить("МояКолонкаОтбора2");
       Отбор.ВидСравнения = ВидСравнения.МеньшеИлиРавно; //или друге
       Отбор.Использование  = Истина;
       Отбор.Значение = ЗначениеСравнения2;

   //первый отбор
       Отбор = Построитель.Отбор.Добавить("МояКолонкаОтбора3");
       Отбор.ВидСравнения = ВидСравнения.МеньшеИлиРавно; //или друге
       Отбор.Использование  = Истина;
       Отбор.Значение = ЗначениеСравнения3;

   ПостроительЗапроса.Выполнить();
   Результат = ПостроительЗапроса.Результат.Выгрузить();

//Результат - Куда выгружаем отобраную ТЗ


где

   
// ТаблицаОтборов - Таблица значений с колонками
// ИмяОтбора - Строка
// ВидСравнения - ВидСравнения
// Значение - Any
// Возвращает отфильтрованную таблицу значений

Для Каждого СтрокаКоллекции Из ТаблицаОтборов Цикл
       Отбор = Построитель.Отбор.Добавить(СтрокаКоллекции.ИмяОтбора);
       Отбор.ВидСравнения = СтрокаКоллекции.ВидСравнения;
       Отбор.Использование  = Истина;
       Отбор.Значение = СтрокаКоллекции.Значение;
   КонецЦикла;


Сообщение отредактировал AnryMc - 19.03.24, 15:53

alex_shkut Подменю пользователя
сообщение 19.03.24, 16:01
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Сумы
Спасибо сказали: 6 раз
Рейтинг: 5.3

AnryMc @ Сегодня, 15:31 * ,
Як виконати - я знаю. Як показати користувачу налаштування цих отборів?
Щоб у формі не було таблиці ПостроительОтчета.Отбор на все хлебало, а відкривалася окрема форма тиму стандартного налаштування отборів.
Для Каждого СтрокаКоллекции Из ТаблицаОтборов Цикл


Як налаштувати цю саму ТаблицаОтборов?
Ага, і якщо це не ПостроительОтчета, а ПостроительЗапроса?
У ПостроителяЗапроса також є Відбір.
Навіщо мені "паровозом куча непотрібного функціоналу?

alex_shkut @ Сегодня, 15:59 * ,
Якраз завдання в тому, щоб дати можливість користувачу вібрати ці самі отбори. Множинні.

Сообщение отредактировал Vofka - 20.03.24, 12:23

nik389 Подменю пользователя
сообщение 19.03.24, 16:39
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 162
Из: Украина
Спасибо сказали: 39 раз
Рейтинг: 36

alex_shkut @ Сегодня, 17:01 * ,
я робив щось подібне, через КомпоновщикНастроекКомпоновкиДанных



користувач сам може додати потрібні отбори

Сообщение отредактировал Vofka - 20.03.24, 12:23

alex_shkut Подменю пользователя
сообщение 19.03.24, 17:05
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Сумы
Спасибо сказали: 6 раз
Рейтинг: 5.3

nik389 @ Сегодня, 16:39 * ,
Щось подібне до стандартної форми настройки відборів для звичайних форм.
ПостроительЗапроса - 10%
ПостроительОтчета - 50%
СКД - 120%
Навіщо зайвий функціонал, тормоза і оперативна пам'ять для простої задачі?
Тим більше, що наступне використовує попереднє.
А досить лише ПостроительЗапроса.

nik389 Подменю пользователя
сообщение 19.03.24, 18:01
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 162
Из: Украина
Спасибо сказали: 39 раз
Рейтинг: 36

alex_shkut @ Сегодня, 18:05 * ,
ну то добре, робіть як вам зручніше, ви спитали "як показати користувачу налаштування", я навів приклад, можливо, я щось не так зрозумів і ви мали на увазі зовсім інше
щодо "тормозів та зайвого функціоналу" - це все дуже суб`єктивне. ніколи ніяких тормозів з використанням скд, у відборах, сортуванні та іншого, не спостерігав, якщо з розумом робити
тим більше у типових, це доволі розповсюджений варіант

alex_shkut Подменю пользователя
сообщение 19.03.24, 18:13
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Сумы
Спасибо сказали: 6 раз
Рейтинг: 5.3

nik389 @ Сегодня, 18:01 * ,
Я намагаюся створити функціонал отбору для ТЗ, такий як типовий для звичайних форм списків документів, тощо.
Без зайвого навантаження типу СКД и т.і.
Просто і лаконічно.

Ну ось є перші результати.
//Структура отбора
        ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(СписокВРаботе);
        Для каждого Колонка из ЭлементыФормы.ДокументСписокВРаботе.Колонки Цикл
            Если Колонка.Видимость Тогда
                Элем = мОтбор.Добавить(Колонка.Имя);
            КонецЕсли;
        КонецЦикла;


Отримав повноцінну структуру усіх можливих отборів по ТЗ.
По видимих колонках, бо буду обробляти також накопичуваний відбір "по значенню у поточній колонці".

alex_shkut Подменю пользователя
сообщение 21.03.24, 18:49
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 44
Из: Сумы
Спасибо сказали: 6 раз
Рейтинг: 5.3

alex_shkut @ 19.03.24, 18:13 * ,

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


Процедура КоманднаяПанельВРаботеНастроитьОтбор(Кнопка)

    ФормаО = Документы.ЗаказНаРемонт.ПолучитьФорму("ФормаОтбора",ЭтаФорма);
    ФормаО.ТаблицаОтбор = мОтбор;
    ФормаО.ОткрытьМодально();
    СписокВРаботе = ПолучитьТаблицуПоСостоянию(Перечисления.СтатусыРабот.ВРаботе,мОтбор);

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


Где ФормаО.ТаблицаОтбор = Тип Отбор;
Дальше разберетесь, думаю.
Прикольно, что можно использовать методы ПостроителяЗапроса, немного добавляя (убавляя) параметры - еще не пробовал, но наверное легче чем вручную формировать условия для своего запроса.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 09.12.24, 0:30
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!