Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 14:36

Инвентаризация

Автор Clot, 05 сен 2017, 16:24

0 Пользователей и 1 гость просматривают эту тему.

Clot

Пишу запрос. Как получить из Документ.ИнвентаризацияТоваров.Состав выборку полей Ссылка.Склад, Ссылка.Дата, Номенклатура, Количество таким образом, чтобы в случае отсутствия товара на складе в день проведения инвентаризации возвращалось Количество=0? Необходимо как-то различать случаи, когда 1)товара не было в инвентаризацию, 2)инвентаризация не проводилась. Список Номенклатуры в параметре запроса.

ilyay

Полное соединение с проверкой на null?

Clot

Цитата: ilyay от 05 сен 2017, 17:35
Полное соединение с проверкой на null?
Сделал так, но меня не покидает чувство, будто есть способ сделать проще и эффективнее. Без полного соединения, которое Хрусталева советует избегать.

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

СГРУППИРОВАТЬ ПО
ИнвентаризацияТоваровНаСкладе.Склад.Подразделение,
Номенклатура.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Подразделение КАК Подразделение,
ВТ.Номенклатура КАК Номенклатура,
ВТ.День,
ЕСТЬNULL(ИнвентаризацияТоваровНаСкладеТовары.Количество, 0) КАК ИнвКоличество
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары
ПО (ВТ.День = НАЧАЛОПЕРИОДА(ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата, ДЕНЬ))
И ВТ.Подразделение = ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Склад.Подразделение
И ВТ.Номенклатура = ИнвентаризацияТоваровНаСкладеТовары.Номенклатура

УПОРЯДОЧИТЬ ПО
Подразделение,
Номенклатура
АВТОУПОРЯДОЧИВАНИЕ

ilyay

не вижу полного соединения, вижу декартово произведение и левое соединение.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск