Ересь в результатах запроса

  1. 3 мес. назад

    Господа, брейнстурм. Какая-то хрень: с некоего времени запрос перестал возвращать корректные данные. Разбил его на два - ситуация не изменилась.
    Грубо говоря - нужно из Заказов вытащить товары.

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

    При этом СписДок сформирован корректно, все документы там есть. А в итоговой нТЗ большей части документов нет.
    Это как?
    Это лыжи, или я? И если я, то где?..

    Ответы: (4) (8) (11) (12)
  2. Попробуй СписДок сделать массивом, а не СпискомЗначений.

    Ответы: (2)
  3. (1) вообще это всё изначально было одним запросом. Все условия там замечательно применялись. Потом работать перестало. Решил разделить. Т.е. этот чёртов СписДок (вместе с первым запросом) - лишняя часть, просто ради того, чтобы мне убедиться, что эти документы по условию в принципе отбираются.

  4. Ну тогда нужно думать где может сбоить и в отладке пройтись пошагово не один раз...

    Например - только ТЧ Товары, или ТЧ Услуги тоже?...

  5. (0) почему ты не используешь соединение таблиц в запросе?

    Ответы: (5)
  6. (4) чтобы отладчиком смотреть, пошагово. Собранный запрос выдаёт фигню. Я его декомпозировал, так сказать.

    Ответы: (6)
  7. (5) консоль запросов на что?

    Ответы: (7)
  8. (6) ну вообще - да. Ты прав.
    Но что это в сабже изменит?

  9. (0) потому что в тех документах не заполнена таб часть

    ну ты Дуб реально

    Ответы: (9)
  10. (8) разумеется - заполнена

  11. Или нет?..

  12. 21.04.2024 07:09:18 отредактировано Kevin

    Дуб СписДок.ЗагрузитьЗначения(нЗапрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));

    Нафига ты в список значений грузишь. Можно просто массив

    Запрос можно так сделать, если ты хочешь и первый результат получить и на всякий случай вычислить заказы без товаров, хотя.. откуда это, если ещё документы проведены. Ну ладно

    ВЫБРАТЬ
    	ЗаказПокупателя.Ссылка КАК Заказ
    ПОМЕСТИТЬ ВтЗаказы
    ИЗ
    	Документ.ЗаказПокупателя КАК ЗаказПокупателя
    ГДЕ
    	ЗаказПокупателя.Проведен
    	И ЗаказПокупателя.Дата МЕЖДУ &ДатаНач И &ДатаКон
    	И НЕ ЗаказПокупателя.Контрагент В (&СписКонтр)
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    	ЗаказПокупателяТовары.Ссылка.Контрагент КАК Контрагент,
    	ЗаказПокупателяТовары.Ссылка КАК Заказ,
    	ЗаказПокупателяТовары.Ссылка.СкладГруппа КАК Склад,
    	ЗаказПокупателяТовары.Номенклатура КАК Номенклатура
    ИЗ
    	ВтЗаказы КАК ВтЗаказы
    		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
    		ПО ВтЗаказы.Заказ = ЗаказПокупателяТовары.Ссылка
    
    СГРУППИРОВАТЬ ПО
    	ЗаказПокупателяТовары.Ссылка.Контрагент,
    	ЗаказПокупателяТовары.Ссылка,
    	ЗаказПокупателяТовары.Ссылка.СкладГруппа,
    	ЗаказПокупателяТовары.Номенклатура
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    	ВтЗаказы.Заказ КАК Заказ
    ИЗ
    	ВтЗаказы КАК ВтЗаказы
    		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
    		ПО ВтЗаказы.Заказ = ЗаказПокупателяТовары.Ссылка
    ГДЕ
    	ЗаказПокупателяТовары.Ссылка ЕСТЬ NULL
  13. Короче - mea culpa, как обычно. Всем спасибо.

или зарегистрируйтесь чтобы ответить!