|
Создание списка значений и добавление фильтра при создании отчета | ☑ | ||
---|---|---|---|---|
0
Dasvi
16.06.22
✎
12:44
|
Доброго всем времени суток!
В общем чувствую что делаю все не так Есть функция УстановитьПараметрыЗапроса(Запрос) В ней есть один из указаных параметров: Если ЗначениеЗаполнено(Отдел) Тогда Текст = Текст + ?(Текст = "", "", " И ") + " | Субконто2.Менеджер.Отдел = &Отдел | "; Запрос.УстановитьПараметр("Отдел", Отдел); КонецЕсли; В форме соответственно есть поле с выбором отдела которая привязана к Справочники.Отделы Так же есть Функция с ПолучтьНаСервере() в ней мы производим фильрацию реализаций и из подходящих нам составляем Отчет На данный момент с помощью этих фильтров модно выбрать только один "Отдел","Организацию" и тд. Пользователь выбирает их и соответсвенно формирует Отчет , происходит магия, отчет на экране , все четко , с добавлением новых фильров я разобрался, осталась еще одна проблема Но задача в том что бы добавить возможность поиска по нескольким отделам, пользователь может выбрать несколько отделов, другие фильры , магия , и отчет соответсвенно Проблема как раз в том что у меня никак не получается это реализовать, как я понял мне нужно создать функцию в которой можно будет сформировать Список Значений с выбранными отделами и далее уже этот список добавить в : Если ЗначениеЗаполнено(Отдел) Тогда Текст = Текст + ?(Текст = "", "", " И ") + " | Субконто2.Менеджер.Отдел = &Отдел | "; Запрос.УстановитьПараметр("Отдел", Отдел); КонецЕсли; будет ли это корректно ? По ощущениям работать вроде как и может, а вроде как и нет До этого создавал массив, запихивал туда несколько отделов и циклом запускал здесь на месте формирования запроса Если ЗначениеЗаполнено(Отдел) Тогда Текст = Текст + ?(Текст = "", "", " И ") + " | Субконто2.Менеджер.Отдел = &Отдел | "; Запрос.УстановитьПараметр("Отдел", Отдел); КонецЕсли; но это так не работает потому что в итоге он формирует по последнему отделу в массиве Фильтрация в Выбрать Из выглядит примерно так: ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &ДатаОстатков, | Счет = &СчетНОМЕР | ИЛИ Счет = &СчетНОМЕР ИЛИ Счет = &СчетНОМЕР, | , " + ДобавитьУсловияЗапроса(Запрос) + ") КАК ХозрасчетныйОстатки) КАК ТаблОстатков | Это один пример из других, формируюся таблицы, обьединяются и происходит выгрузка , сам код этот я не писал , дали пару задач сказали делать) И на этой я остановился конкретно Может не совсем корректно изложил суть вопроса, спрашивайте готов на все ответить, про СКД знаю , но еще не изучал, тк как перешел на 1с ку неделю назад, в выходные как раз займусь основательным изучением СКД и Формированием Запросов |
|||
1
Dasvi
16.06.22
✎
12:45
|
Забыл написать функцию в которой выбираются отделы , максимально сырая , буду править но пока что она на таком этапе:
&НаКлиенте Процедура ДобавитьОтдел(Команда) Отделы = Новый СписокЗначений; Отделы.Добавить(Отдел); ВыбраноеЗначение = ВыбратьИзСписка(Отделы); Если ВыбраноеЗначение <> Неопределено Тогда Сообщить(ВыбраноеЗначение.Значение); КонецЕсли; КонецПроцедуры |
|||
2
Мультук
гуру
16.06.22
✎
13:02
|
(1) Псевдокод
ГДЕ Субконто2.Менеджер.Отдел = &Отдел //=== Запрос.УстановитьПараметр("Отдел", Отдел); Меняем на список ГДЕ Субконто2.Менеджер.Отдел В (&СписокОтделов) //=== СписокОтделов = Новый СписокЗначений; СписокОтделов.Добавить(Отдел); СписокОтделов.Добавить(Отдел2); СписокОтделов.Добавить(Отдел3); Запрос.УстановитьПараметр("СписокОтделов", СписокОтделов); P.S. На форме можно завести реквизит с типом СписокЗначений P.P.S. Всякие эксперименты лучше делать во внешних обработках/отчетах Они сохраняются ГОРАЗДО быстрее чем конфигурация, не нужно перезапускать 1С предприятие |
|||
3
Dasvi
16.06.22
✎
14:11
|
(2) Сделал практически так как Вы предлагаете:
Если ЗначениеЗаполнено(Отдел) Тогда Текст = Текст + ?(Текст = "", "", " И ") + " | Субконто2.Менеджер.Отдел В (&СписокОтделов) | "; СписокОтделов = Новый СписокЗначений; СписокОтделов.Добавить(Отдел); ВыбраноеЗначение = ВыбратьИзСписка(СписокОтделов); Запрос.УстановитьПараметр("СписокОтделов", СписокОтделов); КонецЕсли; Но теперь ругается на то что нельзя выполнять это на клиенте, это фиксится изменением &НаСервере/&НаСервере&НаКлиенте? Иль же все не так просто? Да и с точки зрения оптимизации корректно ли это? |
|||
4
Dasvi
16.06.22
✎
14:12
|
(3) А не , добавлением этого (&НаСервере/&НаСервере&НаКлиенте?) не фиксится -_-
|
|||
5
Dasvi
16.06.22
✎
14:13
|
Получается нужно формировать список значений на клиенте, далее перекидывать его в Список Значений на Сервере который и будет использрован в данном фильтре, правильтно понимаю?
|
|||
6
Dasvi
16.06.22
✎
14:17
|
В общем то он ругается на то , что метод недоступен на сервере " ВыбраноеЗначение = ВыбратьИзСписка(СписокОтделов); "
|
|||
7
Dasvi
16.06.22
✎
14:40
|
(3) Разобрался, я затупок нужно просто удалить ВыбраноеЗначение = ВыбратьИзСписка(СписокОтделов);
|
|||
8
Dasvi
16.06.22
✎
14:46
|
(2) Спасибо все работает на Ура,
Если ЗначениеЗаполнено(Отдел) Тогда Текст = Текст + ?(Текст = "", "", " И ") + " | Субконто2.Менеджер.Отдел В (&СписокОтделов) | "; СписокОтделов = Новый СписокЗначений; СписокОтделов.Добавить(Отдел); СписокОтделов.Добавить(Отдел2); Запрос.УстановитьПараметр("СписокОтделов", СписокОтделов); КонецЕсли; В форме создано 2 поле Отдел и Отдел2 , с привязкой к реквизитам Отдел и Отдел2 Есть ли возможность Создать Поле с выбором нескольких "Отделов" на случай если пользователь захочет их штук 10 выбрать ? Что бы не создавать те же самые 10 полей выбора ? Или же как то програмно каждый раз когда в 1 поле пользователь выбирает нужный отдел , добавлять второе поле с выбором уже другого отдела и тд |
|||
9
Мультук
гуру
16.06.22
✎
15:03
|
(8)
1) Есть типовые конфигурации. Там тоже не всегда все идеально, но по большей части "как в учебнике". Берем, ставим демо-базу и смотрим "как оно там у взрослых". В 90% ответы там есть. 2) Идем на сайт курсы-по-1с.рф Регистрируемся. Жмем на ссылка "Бесплатно" У них же есть куча платных курсов 3) Тратим каждый день 1-2 часа на самообучение. Изучаем объектную модель. Формы, запросы, таблицыЗначений, справочники, документы и т.п. 4) Смотрим примеры на https://helpf.pro/ Примеры старые, но *базовые вещи* актуальны до сих пор |
|||
10
Dasvi
16.06.22
✎
15:15
|
(9) Понял, Спасибо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |