| 
    
        
     
     | 
    
  | 
Создание списка значений и добавление фильтра при создании отчета | ☑ | ||
|---|---|---|---|---|
| 
    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) Понял, Спасибо)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |