Имя: Пароль:
1C
1С v8
Сравнить ТЧ двух документов
0 DreamMaster
 
26.06.13
11:39
Всем доброго времени суток. Столкнулся с простой задачей, но решить её у меня не получается. Есть документы заказа, есть документы реализации. Необходимо запросом вытянуть список заказов, у которых в заказе есть товар "Т", но в реализации его нет.

Думаю,что должно быть что-то вроде: (но данный код выдает не верное значение)
ВЫБРАТЬ
   РеализацияТоваровТовары.Ссылка,
   РеализацияТоваровТовары.Ссылка.Сделка,
   ЗаказПокупателяТовары.Номенклатура,
   ЗаказПокупателяТовары.Количество
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
       ПО ЗаказПокупателяТовары.Ссылка = РеализацияТоваровТовары.Ссылка.Сделка
           И ЗаказПокупателяТовары.Номенклатура = РеализацияТоваровТовары.Номенклатура
ГДЕ
   ЗаказПокупателяТовары.Номенклатура = &Номенклатура
   И РеализацияТоваровТовары.Ссылка.Сделка.Дата >= &Дата
   И ЗаказПокупателяТовары.Ссылка.Проведен
   И РеализацияТоваровТовары.Номенклатура ЕСТЬ NULL
1 1Cv8_accepted
 
26.06.13
11:45
Выбери, дополнительно к полям, в одном подзапросе 1 (единицу), в другом 2 (двойку). В общем запросе складывай их и по результату (1, 2 или 3) получишь отсутствующие/присутствующие позиции.
2 Лефмихалыч
 
26.06.13
11:45
левое соединение + есть NULL в предложении ГДЕ
3 drcrasher
 
26.06.13
11:46
(1) нафига клюшечный вариант то?

полное соединение в руки
4 1Cv8_accepted
 
26.06.13
11:47
(3) Привычка! ))
5 Slon747
 
26.06.13
11:48
Почему не работает?
Вроде как правильно.
6 DreamMaster
 
26.06.13
11:50
(1) Напишите пожалуйста подробнее
(2) увы с полным также
(5) ну он выдает пустое значение (хотя документ есть)
7 hhhh
 
26.06.13
11:51
(6) а зачем сравнивать табличные части? Это же бред. ЕСть регистр ЗаказыПокупателей: закз делает приход по регистру, реализация - расход. Нужно просто взять остаток по этому регистру - это и есть то, что надо.
8 Slon747
 
26.06.13
11:52
(6) Так если нужно получить заказы, то и выбирать нужно заказы, а не реализации
9 DreamMaster
 
26.06.13
11:53
(7) Надо решить именно эту задачу
(8) не имеет разницы. Необходимо получить любой из этих документов. Главное, чтобы в заказе был товар, а в реализации его небыло
10 palpetrovich
 
26.06.13
11:57
Автор, конфа какая? ...есть подозрение что на лицо очередная попытка изобрести велосипед
Открой отчет "Анализ заказов покупателей"
:)
11 Serg_1960
 
26.06.13
12:01
Как всегда конфигурация автором не озвучена. А мы теперь гадай - может быть у автора сделка не в реквизитах документа, а в табличной части указывается и запрос полный бред выдаёт :(
12 palpetrovich
 
26.06.13
12:06
кстати, банальный код, изложенный ниже, покажет все НЕЗАКРЫТЫЕ заказы, т.е. не только "список заказов, у которых в заказе есть товар "Т", но в реализации его нет." , но и случае, когда была ЧАСТИЧНАЯ реализация

ВЫБРАТЬ
   ЗаказыПокупателейОстатки.ЗаказПокупателя,
   ЗаказыПокупателейОстатки.Номенклатура,
   ЗаказыПокупателейОстатки.КоличествоОстаток
ИЗ
   РегистрНакопления.ЗаказыПокупателей.Остатки(&Дата, ) КАК ЗаказыПокупателейОстатки
13 DreamMaster
 
26.06.13
12:16
8.2 УТ (самописка)
Тут не велосипед. Просто для решение задачи мне необходим список таких документов по определенному товару. Регистры мне не нужны. Нужны именно документы (имею ввиду использование документов а не регистров)
14 hhhh
 
26.06.13
12:32
(13) но ведь этот регистр ЗаказыПокупателей именно для этого и придуман. Именно учитывать документы. Чтобы такие как вы не занимались фигней, а просто работали.
15 Emilio
 
26.06.13
12:39
(0) и такой запрос будет отрабатывать вечность. тебе ответ дали в (14)
зачем вообще трогать соединения? все можно сделать без соединений.
при выборе из РН у тебя во-первых и в главных исчезнет одно условие:
ЗаказПокупателяТовары.Ссылка.Проведен
16 Gisborn
 
26.06.13
12:49
Касательно запроса в (0): вот эти строки в ГДЕ обуславливают пустой результат:  
И РеализацияТоваровТовары.Ссылка.Сделка.Дата >= &Дата
И РеализацияТоваровТовары.Номенклатура ЕСТЬ NULL
17 craxx
 
26.06.13
12:50
(0) Написать хэш-функцию от ТЧ и сравнивать значения хэшей.
18 Slon747
 
26.06.13
13:18
(16) точно! что касается проверки даты
19 tesei
 
26.06.13
14:18
(1-18) Слишком сложно. Объединить таблицы, поле дельта =  количество для заказа , -количество для реализации. Далее обрабатываем строки где дельта > 0.