База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как добавить условие проверки движений по регистру склада на «Приход»?
- В этой теме 1 ответ, 2 участника, последнее обновление 13 часов, 52 минуты назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
25 сентября 2026 в 8:45 #38724
Добавить в запрос условие проверять движения по регистру на складе с признаком приход ВЫБРАТЬ
DISTINCT Реализация.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Доки
ИЗ
Документ.перемещениетоваров КАК Реализация
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Перемещениетоваров.Товары КАК РеализацияТовары
ПО РеализацияТовары.Ссылка = Реализация.Ссылка
ГДЕ
Реализация.Проведен
И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Реализация.статус <> Значение(Перечисление.СтатусыПеремещенийТоваров.Принято)
И РеализацияТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
;ВЫБРАТЬ
ВТ_Доки.Ссылка КАК Ссылка
ИЗ
ВТ_Доки КАК ВТ_Доки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор
ГДЕ
ТоварыНаСкладах.Регистратор ЕСТЬ NULL -
25 сентября 2026 в 8:45 #38725
Условие по виду движения нужно добавить в секцию
ПОлевого соединения, а не вГДЕ.Иначе, если поставить
ВидДвижения = ПриходвГДЕ, левое соединение фактически превратится во внутреннее, и документы без движений не попадут в результат.Запрос для поиска перемещений, у которых отсутствует движение Приход по регистру
ТоварыНаСкладах:1С (Код)12345678910111213141516171819202122232425262728|ВЫБРАТЬ РАЗЛИЧНЫЕ| Реализация.Ссылка КАК Ссылка|ПОМЕСТИТЬ ВТ_Доки|ИЗ| Документ.ПеремещениеТоваров КАК Реализация| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК РеализацияТовары| ПО РеализацияТовары.Ссылка = Реализация.Ссылка|ГДЕ| Реализация.Проведен| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода| И Реализация.Статус <>| ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)| И РеализацияТовары.Номенклатура.ТипНоменклатуры =| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)|;||////////////////////////////////////////////////////////////////////////////////||ВЫБРАТЬ| ВТ_Доки.Ссылка КАК Ссылка|ИЗ| ВТ_Доки КАК ВТ_Доки| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор| И ТоварыНаСкладах.ВидДвижения =| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)|ГДЕ| ТоварыНаСкладах.Регистратор ЕСТЬ NULLЭтот запрос вернет документы, по которым нет ни одного движения с видом
Приходв регистреТоварыНаСкладах.## Если нужно проверять движение прихода именно по складу
Если нужно проверять приход только по конкретному складу, например склад передается параметром
&Склад, добавьте условие также вПО:1С (Код)1234567891011|ВЫБРАТЬ| ВТ_Доки.Ссылка КАК Ссылка|ИЗ| ВТ_Доки КАК ВТ_Доки| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор| И ТоварыНаСкладах.ВидДвижения =| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)| И ТоварыНаСкладах.Склад = &Склад|ГДЕ| ТоварыНаСкладах.Регистратор ЕСТЬ NULLВ этом случае необходимо установить параметр:
1С (Код)1Запрос.УстановитьПараметр("Склад", Склад);## Если нужно проверить наличие прихода на любом складе
Тогда условие по
Складдобавлять не нужно. Первый вариант проверяет движениеПриходпо любому складу.## Если нужно исключить помеченные на удаление документы
Добавьте в первый блок:
1С (Код)1| И НЕ Реализация.ПометкаУдаленияПолный фрагмент условий:
1С (Код)12345678|ГДЕ| Реализация.Проведен| И НЕ Реализация.ПометкаУдаления| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода| И Реализация.Статус <>| ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)| И РеализацияТовары.Номенклатура.ТипНоменклатуры =| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)## Если нужно проверить конкретно склад-получатель из документа
В зависимости от конфигурации у документа могут быть реквизиты вроде:
1С (Код)1|Реализация.СкладПолучательили:
1С (Код)1|Реализация.СкладТогда вместо параметра можно сравнивать склад регистра со складом документа:
1С (Код)1234| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор| И ТоварыНаСкладах.ВидДвижения =| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)| И ТоварыНаСкладах.Склад = ВТ_Доки.Ссылка.СкладПолучательНо такой вариант нужно использовать только в том случае, если в вашей конфигурации у документа действительно есть реквизит
СкладПолучатель, а в регистреТоварыНаСкладахдвижение прихода записывается именно по нему.Для обычной проверки отсутствия прихода по документу достаточно основного условия:
1С (Код)12| И ТоварыНаСкладах.ВидДвижения =| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.