Вход | Регистрация
 

Условие в СКД 1С (УТ 11.4)

Условие в СКД 1С (УТ 11.4)
Я
   Nemirov
 
09.03.21 - 08:37
Здравствуйте!!! Подскажите пожалуйста. Есть у меня запрос в СКД, из табличной части документа вывожу в отчет по заданному периоду номенклатуру, количество и статью. Далее необходимо из регистра цены номенклатуры
вывести цену по срезу последних(розничную). Как мне сделать условие что бы номенклатура сравнивалась с номенклатурой из тч документа? Грубое условие пробовал, но бывает такое что нет цены и номенклатура просто не выводится в отчет.
Я студент еще, за ранее извиняюсь если я где-то не понятно объяснил. С СКД только начинаю работать. Нашел через КОГДА ТОГДА, но не могу правильный синтаксис условия найти. Помогите.

ВЫБРАТЬ
    СписаниеНедостачТоваровТовары.Ссылка КАК ДокументыСписаниеНедостач,
    СписаниеНедостачТоваровТовары.Номенклатура КАК НоменклатураДокументовСписанияИзлишковИНедостач,
    СписаниеНедостачТоваровТовары.Количество КАК КоличествоСписания,
    СписаниеНедостачТоваровТовары.Ссылка.СтатьяРасходов КАК СтатьяРасходовСписания,
    ВложенныйЗапрос.ВидЦены КАК ВидЦеныСписание,
    ВложенныйЗапрос.Цена * СписаниеНедостачТоваровТовары.Количество КАК ЦенаСписанния
ИЗ
    Документ.СписаниеНедостачТоваров.Товары КАК СписаниеНедостачТоваровТовары,
    (ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Период КАК Период,
        ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
        ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
        ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    ГДЕ
        ЦеныНоменклатурыСрезПоследних.Период МЕЖДУ &ДатаНач И &ДатаКон) КАК ВложенныйЗапрос
ГДЕ
    СписаниеНедостачТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
    И СписаниеНедостачТоваровТовары.Ссылка.Склад = &Склад
    И ВложенныйЗапрос.Номенклатура = СписаниеНедостачТоваровТовары.Номенклатура
    И ВложенныйЗапрос.ВидЦены = &ВидЦены
   ДенисЧ
 
1 - 09.03.21 - 08:37
ИЗ
    Документ.СписаниеНедостачТоваров.Товары КАК СписаниеНедостачТоваровТовары,
    (ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Период КАК Период,
        ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
        ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
        ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    ГДЕ
        ЦеныНоменклатурыСрезПоследних.Период МЕЖДУ &ДатаНач И &ДатаКон) КАК ВложенныйЗапрос
   ДенисЧ
 
2 - 09.03.21 - 08:38
За такую конструкцию  студентов нужно расстреливать, пока они не пришли в продакшен
   Nemirov
 
3 - 09.03.21 - 08:43
(2) На ошибках учатся) нууу с каплями для глаз может поможете?
   Ненавижу 1С
 
4 - 09.03.21 - 08:49
(0)
ИЗ
Документ.СписаниеНедостачТоваров.Товары КАК СписаниеНедостачТоваровТовары
ЛЕВОЕ Соединение
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон,ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
ПО
ЦеныНоменклатурыСрезПоследних.Номенклатура = СписаниеНедостачТоваровТовары.Номенклатура

правда цены будут конечные на период
если нужно на дату документа - запрос немного сложнее
   Nemirov
 
5 - 09.03.21 - 09:07
(4) Спасибо
   Bro
 
6 - 09.03.21 - 09:34
А можно нескромный вопрос? Не срача ради, реально интересно. А если предполагается, что в СписаниеНедостачТоваров за период между &ДатаНач и &ДатаКон мало номенклатуры (скажем штук 100). А в ЦеныНоменклатуры номенклатуры дофига (скажем 100к), если запрос сгенериться как есть, то что файловая СУБД, что Postgres же по идее реально материализуют подзапрос чтения цен номенклатуры на дату окончания (на все 100к), ну и соответственно потом будут join'ить эту таблицу со списанием недостач товаров. Не правильнее ли в условие СрезПоследних протолкнуть Номенклатура В (подзапрос из списания недостач товаров)? Ну или сначала во времянку положить результат чтения списания недостач товаров. Тогда по индексу из ЦенНоменклатуры будут читаться только нужные 100 записей. Или предполагается что используется MS SQL и он все прожует? (но он на самом деле весьма капризный, надо смотреть что именно СрезПоследних генерит, вряд ли LATERAL JOIN).
   Ненавижу 1С
 
7 - 09.03.21 - 09:53
(6) правильно протолкнуть условие
   Nemirov
 
8 - 09.03.21 - 10:03
(7) Ну еще хуже что в моем корявом запросе что в вашем исправленном, если нет номенклатуры с нужным видом цены в регистре, то не вся номенклатура выводится которая в тч документа.
   Bro
 
9 - 09.03.21 - 10:08
(8) Это с чего вдруг, там же вроде как LEFT JOIN.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.