Имя: Пароль:
1C
 
Помогите с обработкой запроса, или с ним
0 Klesk
 
23.12.21
18:03
не могу разобраться, в консоли вроде всё как надо, а в обработке, несколько раз перебирает нумератор, как то не так обхожу?

https://i116.fastpic.org/big/2021/1223/b4/a1543c38d0333a86e34cb91b2e4a29b4.jpeg

Запрос=Новый Запрос;
    Запрос.МенеджерВременныхТаблиц=МенеджерВременныхТаблиц;
    Запрос.Текст="ВЫБРАТЬ
    |    Документы.Период КАК Дата,
    |    НумераторПКО.Организация КАК Организация,
    |    Документы.Документ,
    |    НумераторПКО.Номер КАК Номер,
    |    НумераторПКО.Склад КАК Склад,
    |    НумераторПКО.Ссылка КАК Нумератор,
    |    Документы.ВидОплаты,
    |    Документы.СуммаДокумента,
    |    Документы.Операция,
    |    Документы.ДокументДС
    |ИЗ
    |    Документы КАК Документы
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.НумераторПКО КАК НумераторПКО
    |        ПО (НумераторПКО.Дата = Документы.Период)
    |            И (НумераторПКО.Организация = Документы.Организация)
    |            И (НумераторПКО.Склад = Документы.Склад)
    |ГДЕ
    |    НЕ НумераторПКО.НомерДляБП
    |    И НумераторПКО.Проведен
    |
    |УПОРЯДОЧИТЬ ПО
    |    Документы.Период,
    |    Нумератор
    |ИТОГИ
    | Период, Нумератор
    |ПО
    |    Период,Нумератор;    

    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ Документы";

ВыборкаПоПериоду    = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПоПериоду.Следующий() Цикл        
        ВыборкаПоНумератору =ВыборкаПоПериоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаПоНумератору.Следующий() Цикл
            Сообщить(ВыборкаПоНумератору.Нумератор);
1 Базис
 
naïve
23.12.21
18:05
Откуда ты читаешь данные?
2 Klesk
 
23.12.21
18:44
Ну Если это    существенно

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РеализацияТоваровУслугИзменения.Ссылка
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Изменения КАК РеализацияТоваровУслугИзменения
        |ГДЕ
        |    РеализацияТоваровУслугИзменения.Узел = &Узел";
    
    Запрос.УстановитьПараметр("Узел", Объект.Узел);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаРеализации = РезультатЗапроса.Выбрать();
    
    

    Пока ВыборкаРеализации.Следующий() Цикл
    МойОбъект=    ВыборкаРеализации.Ссылка;

Если Не Отказ Тогда
    ПериодРеализации=НачалоДня(МойОбъект.Дата);     
    Узел=Объект.Узел;
    МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
    Запрос=Новый Запрос;
    Запрос.МенеджерВременныхТаблиц=МенеджерВременныхТаблиц;
    Запрос.Текст="ВЫБРАТЬ
    |    НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Ссылка.ДатаПробитияЧека, ДЕНЬ) КАК Период,
    |    ПриходныйКассовыйОрдер.Ссылка.Организация КАК Организация,
    |    ""ПриходНал"" КАК Операция,
    |    РеализацияТоваровУслуг.Склад,
    |    РеализацияТоваровУслуг.Ссылка КАК Документ,
    |    ПриходныйКассовыйОрдер.Ссылка КАК ДокументДС,
    |    ПриходныйКассовыйОрдер.Ссылка.Касса КАК ВидОплаты,
    |    ПриходныйКассовыйОрдер.Ссылка.СуммаДокумента КАК СуммаДокумента
    |ПОМЕСТИТЬ Документы
    |ИЗ
    |    Документ.ПриходныйКассовыйОрдер.Изменения КАК ПриходныйКассовыйОрдер
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |        ПО ПриходныйКассовыйОрдер.Ссылка.ДокументОснование = РеализацияТоваровУслуг.Ссылка
    |ГДЕ
    |    ПриходныйКассовыйОрдер.Ссылка.Проведен
    |    И ПриходныйКассовыйОрдер.Ссылка.ПробитЧек
    |    И ПриходныйКассовыйОрдер.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента)
    |    И ПриходныйКассовыйОрдер.Узел = &Узел
    |    И НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Ссылка.ДатаПробитияЧека, ДЕНЬ) = &ПериодРеализации
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    НАЧАЛОПЕРИОДА(РасходныйКассовыйОрдер.Ссылка.Дата, ДЕНЬ),
    |    ВозвратТоваровОтКлиента.Организация,
    |    ""ВозвратНал"",
    |    ВозвратТоваровОтКлиента.Склад,
    |    ВозвратТоваровОтКлиента.Ссылка,
    |    РасходныйКассовыйОрдер.Ссылка,
    |    РасходныйКассовыйОрдер.Ссылка.Касса,
    |    РасходныйКассовыйОрдер.Ссылка.СуммаДокумента
    |ИЗ
    |    Документ.РасходныйКассовыйОрдер.Изменения КАК РасходныйКассовыйОрдер
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтКлиента КАК ВозвратТоваровОтКлиента
    |        ПО РасходныйКассовыйОрдер.Ссылка.ДокументОснование = ВозвратТоваровОтКлиента.Ссылка
    |ГДЕ
    |    РасходныйКассовыйОрдер.Ссылка.Проведен
    |    И РасходныйКассовыйОрдер.Ссылка.ПробитЧек
    |    И РасходныйКассовыйОрдер.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту)
    |    И РасходныйКассовыйОрдер.Узел = &Узел
    |    И НАЧАЛОПЕРИОДА(РасходныйКассовыйОрдер.Ссылка.Дата, ДЕНЬ) = &ПериодРеализации
    |    И НАЧАЛОПЕРИОДА(ВозвратТоваровОтКлиента.Ссылка.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(ВозвратТоваровОтКлиента.ДокументРеализации.Дата, ДЕНЬ)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    НАЧАЛОПЕРИОДА(ОперацияПоПлатежнойКарте.Ссылка.Дата, ДЕНЬ),
    |    ОперацияПоПлатежнойКарте.Ссылка.Организация,
    |    ""ПриходБезНал"",
    |    РеализацияТоваровУслуг.Склад,
    |    РеализацияТоваровУслуг.Ссылка,
    |    ОперацияПоПлатежнойКарте.Ссылка,
    |    ОперацияПоПлатежнойКарте.Ссылка.ЭквайринговыйТерминал,
    |    ОперацияПоПлатежнойКарте.Ссылка.СуммаДокумента
    |ИЗ
    |    Документ.ОперацияПоПлатежнойКарте.Изменения КАК ОперацияПоПлатежнойКарте
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |        ПО ОперацияПоПлатежнойКарте.Ссылка.ДокументОснование = РеализацияТоваровУслуг.Ссылка
    |ГДЕ
    |    ОперацияПоПлатежнойКарте.Ссылка.Проведен
    |    И ОперацияПоПлатежнойКарте.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента)
    |    И ОперацияПоПлатежнойКарте.Узел = &Узел
    |    И НАЧАЛОПЕРИОДА(ОперацияПоПлатежнойКарте.Ссылка.Дата, ДЕНЬ) = &ПериодРеализации
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    НАЧАЛОПЕРИОДА(ОперацияПоПлатежнойКарте.Ссылка.Дата, ДЕНЬ),
    |    ВозвратТоваровОтКлиента.Организация,
    |    ""ВозвратБезНал"",
    |    ВозвратТоваровОтКлиента.Склад,
    |    ВозвратТоваровОтКлиента.Ссылка,
    |    ОперацияПоПлатежнойКарте.Ссылка,
    |    ОперацияПоПлатежнойКарте.Ссылка.ЭквайринговыйТерминал,
    |    ОперацияПоПлатежнойКарте.Ссылка.СуммаДокумента
    |ИЗ
    |    Документ.ОперацияПоПлатежнойКарте.Изменения КАК ОперацияПоПлатежнойКарте
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтКлиента КАК ВозвратТоваровОтКлиента
    |        ПО ОперацияПоПлатежнойКарте.Ссылка.ДокументОснование = ВозвратТоваровОтКлиента.Ссылка
    |ГДЕ
    |    ОперацияПоПлатежнойКарте.Ссылка.Проведен
    |    И ОперацияПоПлатежнойКарте.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту)
    |    И ОперацияПоПлатежнойКарте.Узел = &Узел
    |    И НАЧАЛОПЕРИОДА(ОперацияПоПлатежнойКарте.Ссылка.Дата, ДЕНЬ) = &ПериодРеализации
    |    И НАЧАЛОПЕРИОДА(ВозвратТоваровОтКлиента.Ссылка.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(ВозвратТоваровОтКлиента.ДокументРеализации.Дата, ДЕНЬ)    
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Документы.Период КАК Период,
    |    Документы.Организация КАК Организация,
    |    Документы.Склад КАК Склад
    |ИЗ
    |    Документы КАК Документы
    |
    |СГРУППИРОВАТЬ ПО
    |    Документы.Период,
    |    Документы.Организация,
    |    Документы.Склад
    |
    |УПОРЯДОЧИТЬ ПО
    |    Период,
    |    Организация,
    |    Склад";
    
    Запрос.УстановитьПараметр("Узел",Объект.Узел);
    Запрос.УстановитьПараметр("ПериодРеализации",ПериодРеализации);
3 azernot
 
23.12.21
19:11
ВыборкаПоПериоду    = Запрос.ВыполнитьПакет()[0].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
4 Ёпрст
 
23.12.21
20:13
(2) запрос в цикле как-то не алё.
Менеджер временных таблиц там не нужен
И где в (2) итоги и обход ?
5 Klesk
 
26.12.21
21:51
ну да, всё коряво, но все работает, ошибка была в другом. всем спасибо.
6 Мимохожий Однако
 
26.12.21
22:36
(5) Исчерпывающий ответ )
Программист всегда исправляет последнюю ошибку.