Имя: Пароль:
1C
1С v8
Отбор по полю в СКД
,
0 Chuvaschow
 
09.03.17
12:35
Здравствуйте!
Уважаемые форумчане, подскажите пожалуйста.
Что имеем: вот такой запрос

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

Вот такой результат https://cloud.mail.ru/public/J7C8/ZUCgsrqVN
В документах, где оплата комбинированная (например часть наличкой, часть с карты) строки задваиваются (Индекс с 27 по 30), так как значение подставляется по двум видам оплаты.

Необходимо в запросе сделать некий отбор, чтобы в запрос из Таблицы КомбинированнаяОплата попадали только Платежные Карты.
Пытался сделать через Выбор Когда...

Подытожив: необходимо научиться делать отбор в таблице, которая учавствует в запросе.

Очень надеюсь на Вашу помощь.
1 DrShad
 
09.03.17
12:40
отбор тут ни причем, у тебя левое соединение с товарами в чеке
2 Chuvaschow
 
09.03.17
12:46
Я понимаю. В комбинированной оплате как правило 2 позиции, наличными и что-то еще. Как сделать запрос, чтобы исключалось все кроме Платежная карта?
3 Chuvaschow
 
09.03.17
13:20
Грубо говоря, есть запрос, в который мы хотим добавить следующие таблицы http://i91.fastpic.ru/big/2017/0309/d8/980f5dc102fa252373469b2c9da46dd8.jpg

Но из таблицы КомбинированнаяОплата нам нужно не все. Как отобрать?
4 Oleg333
 
09.03.17
13:51
(3) А в чем проблема в левом соединение с Документ.ЧекККМ.КомбинированнаяОплата прописать дополнительное условие?
5 Chuvaschow
 
09.03.17
13:55
Подскажите где?
6 Chuvaschow
 
09.03.17
13:56
На вкладке Связи судя по всему
7 Oleg333
 
09.03.17
13:56
Ну если я вас правильно понял, то:

ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ.КомбинированнаяОплата КАК ЧекККМКомбинированнаяОплата
ПО ЧекККМ.Ссылка = ЧекККМКомбинированнаяОплата.Ссылка И ЧекККМКомбинированнаяОплата.ТипОплаты = ""Платежная карта""
8 Oleg333
 
09.03.17
13:57
Если же левое соединение сделано не в запросе, а через связь двух наборов данных, то в условиях связи
9 Chuvaschow
 
09.03.17
14:00
Попробовал, теперь дублей по 20 штук :)
10 Oleg333
 
09.03.17
14:02
Значит что-то перемудрили с левыми соединениями
11 Chuvaschow
 
09.03.17
14:07
Да, все так.
Как просто однако все оказалось. Спасибо огромное!
12 Chuvaschow
 
09.03.17
14:23
Дабы не создавать еще пустых тем, подскажите: как эту сумму поделить на количество строк в таблице Товары? Оплата картой прошла, скажем на 600 руб., а товаров было два, значит на каждый легло по 300.
13 Chuvaschow
 
09.03.17
14:37
Ладно. Свернул ТЗ по дням без суммирования по Графе ЧекККМКомбинированнаяОплатаСумма
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс