|
Условие в СКД 1С (УТ 11.4) | ☑ | ||
---|---|---|---|---|
0
Nemirov
09.03.21
✎
08:37
|
Здравствуйте!!! Подскажите пожалуйста. Есть у меня запрос в СКД, из табличной части документа вывожу в отчет по заданному периоду номенклатуру, количество и статью. Далее необходимо из регистра цены номенклатуры
вывести цену по срезу последних(розничную). Как мне сделать условие что бы номенклатура сравнивалась с номенклатурой из тч документа? Грубое условие пробовал, но бывает такое что нет цены и номенклатура просто не выводится в отчет. Я студент еще, за ранее извиняюсь если я где-то не понятно объяснил. С СКД только начинаю работать. Нашел через КОГДА ТОГДА, но не могу правильный синтаксис условия найти. Помогите. ВЫБРАТЬ СписаниеНедостачТоваровТовары.Ссылка КАК ДокументыСписаниеНедостач, СписаниеНедостачТоваровТовары.Номенклатура КАК НоменклатураДокументовСписанияИзлишковИНедостач, СписаниеНедостачТоваровТовары.Количество КАК КоличествоСписания, СписаниеНедостачТоваровТовары.Ссылка.СтатьяРасходов КАК СтатьяРасходовСписания, ВложенныйЗапрос.ВидЦены КАК ВидЦеныСписание, ВложенныйЗапрос.Цена * СписаниеНедостачТоваровТовары.Количество КАК ЦенаСписанния ИЗ Документ.СписаниеНедостачТоваров.Товары КАК СписаниеНедостачТоваровТовары, (ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Период КАК Период, ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ГДЕ ЦеныНоменклатурыСрезПоследних.Период МЕЖДУ &ДатаНач И &ДатаКон) КАК ВложенныйЗапрос ГДЕ СписаниеНедостачТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон И СписаниеНедостачТоваровТовары.Ссылка.Склад = &Склад И ВложенныйЗапрос.Номенклатура = СписаниеНедостачТоваровТовары.Номенклатура И ВложенныйЗапрос.ВидЦены = &ВидЦены |
|||
1
ДенисЧ
09.03.21
✎
08:37
|
ИЗ
Документ.СписаниеНедостачТоваров.Товары КАК СписаниеНедостачТоваровТовары, (ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Период КАК Период, ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ГДЕ ЦеныНоменклатурыСрезПоследних.Период МЕЖДУ &ДатаНач И &ДатаКон) КАК ВложенныйЗапрос |
|||
2
ДенисЧ
09.03.21
✎
08:38
|
За такую конструкцию студентов нужно расстреливать, пока они не пришли в продакшен
|
|||
3
Nemirov
09.03.21
✎
08:43
|
(2) На ошибках учатся) нууу с каплями для глаз может поможете?
|
|||
4
Ненавижу 1С
гуру
09.03.21
✎
08:49
|
(0)
ИЗ Документ.СписаниеНедостачТоваров.Товары КАК СписаниеНедостачТоваровТовары ЛЕВОЕ Соединение РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон,ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СписаниеНедостачТоваровТовары.Номенклатура правда цены будут конечные на период если нужно на дату документа - запрос немного сложнее |
|||
5
Nemirov
09.03.21
✎
09:07
|
(4) Спасибо
|
|||
6
Bro
09.03.21
✎
09:34
|
А можно нескромный вопрос? Не срача ради, реально интересно. А если предполагается, что в СписаниеНедостачТоваров за период между &ДатаНач и &ДатаКон мало номенклатуры (скажем штук 100). А в ЦеныНоменклатуры номенклатуры дофига (скажем 100к), если запрос сгенериться как есть, то что файловая СУБД, что Postgres же по идее реально материализуют подзапрос чтения цен номенклатуры на дату окончания (на все 100к), ну и соответственно потом будут join'ить эту таблицу со списанием недостач товаров. Не правильнее ли в условие СрезПоследних протолкнуть Номенклатура В (подзапрос из списания недостач товаров)? Ну или сначала во времянку положить результат чтения списания недостач товаров. Тогда по индексу из ЦенНоменклатуры будут читаться только нужные 100 записей. Или предполагается что используется MS SQL и он все прожует? (но он на самом деле весьма капризный, надо смотреть что именно СрезПоследних генерит, вряд ли LATERAL JOIN).
|
|||
7
Ненавижу 1С
гуру
09.03.21
✎
09:53
|
(6) правильно протолкнуть условие
|
|||
8
Nemirov
09.03.21
✎
10:03
|
(7) Ну еще хуже что в моем корявом запросе что в вашем исправленном, если нет номенклатуры с нужным видом цены в регистре, то не вся номенклатура выводится которая в тч документа.
|
|||
9
Bro
09.03.21
✎
10:08
|
(8) Это с чего вдруг, там же вроде как LEFT JOIN.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |