Имя: Пароль:
1C
 
Получение документов, которые сделали движения по регистру в минус
0 breezee
 
07.06.19
12:15
Коллеги, здравствуйте
Накидал запрос, который выводит документы, которые пишут в минус по регистру "ТоварыНаСкладах" (документы отобраны заранее, находятся в параметре &МассивТН) Это массив, в котором только документы Требование-накладная (ссылки на документы, конечно).
У меня какое-то ощущение, что я что-то сделал не так.
Я не могу понять что, но что-то было в памяти о том, что есть особенность при работе с остатками и оборотами (про то что начальный остаток и конечный обязательно в СКД надо выводить). Можете, пожалуйста, посмотреть запрос и сказать, есть ли какие-то подводные камни в нём? Запрос будет выполняться под пользователем с полными правами
ВЫБРАТЬ
    ТребованиеНакладнаяМатериалы.Ссылка КАК ДокументТребованиеНакладная,
    ТребованиеНакладнаяМатериалы.Номенклатура,
    ТребованиеНакладнаяМатериалы.СерияНоменклатуры,
    ТребованиеНакладнаяМатериалы.Ссылка.Склад
ПОМЕСТИТЬ ВТ_ТребованийНакладных
ИЗ
    Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
ГДЕ
    ТребованиеНакладнаяМатериалы.Ссылка В(&МассивТН)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК ТН,
    ТоварыНаСкладахОстаткиИОбороты.Период,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.СерияНоменклатуры КАК СерияНоменклатуры,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход
ИЗ
    ВТ_ТребованийНакладных КАК ВТ_ТребованийНакладных
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
                ,
                ,
                Регистратор,
                ,
                (Склад, Номенклатура, СерияНоменклатуры) В
                    (ВЫБРАТЬ
                        ВТ_ТребованийНакладных.Склад,
                        ВТ_ТребованийНакладных.Номенклатура,
                        ВТ_ТребованийНакладных.СерияНоменклатуры
                    ИЗ
                        ВТ_ТребованийНакладных КАК ВТ_ТребованийНакладных)) КАК ТоварыНаСкладахОстаткиИОбороты
        ПО ВТ_ТребованийНакладных.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
            И ВТ_ТребованийНакладных.СерияНоменклатуры = ТоварыНаСкладахОстаткиИОбороты.СерияНоменклатуры
ГДЕ
    ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ТребованиеНакладная
    И ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток < 0
    И ТоварыНаСкладахОстаткиИОбороты.Регистратор В
            (ВЫБРАТЬ
                ВТ_ТребованийНакладных.ДокументТребованиеНакладная
            ИЗ
                ВТ_ТребованийНакладных КАК ВТ_ТребованийНакладных)
1 breezee
 
07.06.19
12:16
(0) Запрос не на СКД, фразу про СКД вспомнил просто...
2 breezee
 
07.06.19
12:19
Соединение по складу между таблицами увидел что не добавил сейчас, поправил
3 Nuobu
 
07.06.19
12:21
Единственное - не знаю, зачем тут левое соединение, Если есть отбор  в параметрах таблицы в секции "ГдЕ"?
4 breezee
 
07.06.19
12:26
(3) Согласен, переделал на внутреннее
5 Nuobu
 
07.06.19
13:53
(4) Не, ты не понял.
У тебя отбор стоит в параметрах виртуальной таблицы.
Тебе вообще соединение не нужно.
Юзай просто ТоварыНаСкладах вообще без соединения.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший