|   |   | 
| 
 | v7: Что добавить в запрос? | ☑ | ||
|---|---|---|---|---|
| 0
    
        teploset 09.03.21✎ 13:58 | 
        Есть рабочий вполне запрос, в котором выбираются данные по заданному контрагенту ("ВыбКонтр"). Если же ВыбКонтр это группа, то в результирующей таблице ничего не показывается. Подскажите, пожалуйста, как надо изменить запрос, чтобы выводились в таблицу ВСЕ контрагенты выбранной группы?
 Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(ОбработкаДок) |Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы все; |Обрабатывать НеПомеченныеНаУдаление; |Контр = Документ.РеализацияУслуг.Контрагент, Документ.ПриходныйОрдер.Контрагент; |СуммаРеал = Документ.РеализацияУслуг.Сумма; |СуммаПрихОрд = Документ.ПриходныйОрдер.Сумма; |Функция СуммаРеалСумма = Сумма(СуммаРеал); |Функция СуммаПрихОрдСумма = Сумма(СуммаПрихОрд); |Группировка Контр; |Условие(Контр = ВыбКонтр); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Группировка Контр без групп все ВошедшиеВЗапрос; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ОбработкаДок"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл Контраг = Запрос.ЗначениеУпорядочивания(1); СальдоКон = СальдоНач + Запрос.СуммаРеалСумма - Запрос.СуммаПрихОрдСумма; // Заполнение полей Контр Таб.ВывестиСекцию("Контр"); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("ОбработкаДок", ""); | |||
| 1
    
        Davalebor 09.03.21✎ 14:04 | 
        Создать список значений, в него поместить ВыбКонтр . 
 Условие в запросе поменять на |Условие(Контр в СписокКонтрагентов); | |||
| 2
    
        Builder 09.03.21✎ 14:04 | 
        Дожили....
 |Условие(Контр В ВыбКонтр); | |||
| 3
    
        Builder 09.03.21✎ 14:06 | 
        (1) Список значений тут не нужен.     | |||
| 4
    
        teploset 09.03.21✎ 14:08 | 
        (2) Дружище, спасибо! Всего один символ заменил (= на В) и все заработало, совсем глаз замылился :)     | |||
| 5
    
        Davalebor 09.03.21✎ 14:09 | 
        (3) А если выбконтр будет все-таки элементом справочника, а не группой?
 Я так понял, что выбрать могут или элемент или группу. | |||
| 6
    
        vladko 09.03.21✎ 14:10 | 
        Можно красиво сделать:
 //............ |Группировка Контр; |"//}}ЗАПРОС ; Если ВыбКонтр.ЭтоГруппа() = 1 Тогда ТекстЗапроса = ТекстЗапроса + " |Условие(Контр В ВыбКонтр) |" ; Иначе ТекстЗапроса = ТекстЗапроса + " |Условие(Контр = ВыбКонтр) |" ; КонецЕсли; | |||
| 7
    
        Builder 09.03.21✎ 14:12 | 
        (5) (6)  Йо, ну откройте СП уже....
 Условие В будет работать во всех случаях - группа или элемент. | |||
| 8
    
        Злопчинский 09.03.21✎ 17:06 | 
        а вот если внезапно списокЗначений ВыбКонтр получится пустым - то запрос свернет всех контрагентов. в ряде случаев - это по логике неправильно.
 поэтому Если СписокКонтрагентов.РазмерСписка()=0 Тогда Условие(Контр = СписокКонтрагентов); Иначе Условие(Контр в СписокКонтрагентов); КонецЕсли; | |||
| 9
    
        Волшебник 09.03.21✎ 18:02 | 
        на дворе стоял 2021 год...     | |||
| 10
    
        Злопчинский 09.03.21✎ 18:48 | 
        (9) ..а снеговик тормозит по прежнему...     | |||
| 11
    
        Ёпрст гуру 09.03.21✎ 19:09 | 
        (10) у кого как..     | |||
| 12
    
        Arbuz 10.03.21✎ 16:26 | 
        (11) ... пуще прежнего     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |