Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Что добавить в запрос?

v7: Что добавить в запрос?
Я
   teploset
 
09.03.21 - 13:58
Есть рабочий вполне запрос, в котором выбираются данные по заданному контрагенту ("ВыбКонтр"). Если же ВыбКонтр это группа, то в результирующей таблице ничего не показывается. Подскажите, пожалуйста, как надо изменить запрос, чтобы выводились в таблицу ВСЕ контрагенты выбранной группы?
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ОбработкаДок)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Контр = Документ.РеализацияУслуг.Контрагент, Документ.ПриходныйОрдер.Контрагент;
    |СуммаРеал = Документ.РеализацияУслуг.Сумма;
    |СуммаПрихОрд = Документ.ПриходныйОрдер.Сумма;
    |Функция СуммаРеалСумма = Сумма(СуммаРеал);
    |Функция СуммаПрихОрдСумма = Сумма(СуммаПрихОрд);
    |Группировка Контр;
    |Условие(Контр = ВыбКонтр);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры Группировка Контр без групп все ВошедшиеВЗапрос;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("ОбработкаДок");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        Контраг = Запрос.ЗначениеУпорядочивания(1);
        СальдоКон = СальдоНач + Запрос.СуммаРеалСумма - Запрос.СуммаПрихОрдСумма;
        // Заполнение полей Контр
        Таб.ВывестиСекцию("Контр");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("ОбработкаДок", "");
   Davalebor
 
1 - 09.03.21 - 14:04
Создать список значений, в него поместить ВыбКонтр .
Условие в запросе поменять на  |Условие(Контр в СписокКонтрагентов);
   Builder
 
2 - 09.03.21 - 14:04
Дожили....
|Условие(Контр В ВыбКонтр);
   Builder
 
3 - 09.03.21 - 14:06
(1) Список значений тут не нужен.
   teploset
 
4 - 09.03.21 - 14:08
(2) Дружище, спасибо! Всего один символ заменил (= на В) и все заработало, совсем глаз замылился :)
   Davalebor
 
5 - 09.03.21 - 14:09
(3) А если выбконтр будет все-таки элементом справочника, а не группой?
Я так понял, что выбрать могут или элемент или группу.
   vladko
 
6 - 09.03.21 - 14:10
Можно красиво сделать:
//............
|Группировка Контр;
|"//}}ЗАПРОС

; 
Если ВыбКонтр.ЭтоГруппа() = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
|Условие(Контр В ВыбКонтр)
|"
;
Иначе
ТекстЗапроса = ТекстЗапроса + "
|Условие(Контр = ВыбКонтр)
|"
;
КонецЕсли;
   Builder
 
7 - 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) у кого как..
   Arbuz
 
12 - 10.03.21 - 16:26
(11) ... пуще прежнего

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.