База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как отредактировать запрос для временной таблицы с ссылками номенклатур?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 месяца, 1 неделя назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
26 декабря 2025 в 16:30 #35298
отредактируй и объясни запрос, во временную таблицу я хочу поместить таблицу значений, в которой находиться несколько ссылок номенклатур.
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Наименование КАК Наименование
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Ссылка
;////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Номенклатура.Ссылка КАК Ссылка,
ВТ_Номенклатура.Наименование КАК Наименование,
ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
УчетРезервовТМЦОстатки.КоличествоОстаток КАК Резерв
ИЗ
ВТ_Номенклатура КАК ВТ_Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетРезервовТМЦ.Остатки КАК УчетРезервовТМЦОстатки
ПО ВТ_Номенклатура.Ссылка.Ссылка = УчетРезервовТМЦОстатки.Номенклатура.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата, ) КАК ПартииТоваровНаСкладахОстатки
ПО ВТ_Номенклатура.Ссылка.Ссылка = ПартииТоваровНаСкладахОстатки.Номенклатура.Ссылка
ГДЕ
(ПартииТоваровНаСкладахОстатки.Склад.Наименование = «Склад №3»
ИЛИ ПартииТоваровНаСкладахОстатки.Склад.Наименование = «ВИТРИНА»)
И (УчетРезервовТМЦОстатки.Склад.Наименование = «Склад №3»
ИЛИ УчетРезервовТМЦОстатки.Склад.Наименование = «ВИТРИНА») -
26 декабря 2025 в 16:30 #35299
Димон, привет!
Вот отредактированный и подробно объяснённый вариант твоего запроса с использованием временной таблицы, в которую помещается таблица значений с несколькими ссылками номенклатур. Также исправлены ошибки в синтаксисе и логике соединений.
1С (Код)12345678910111213141516171819202122232425// Предполагается, что параметр &ТаблЗнач - это ТаблицаЗначений с колонкой "Ссылка" типа Справочник.Номенклатура// 1. Помещаем таблицу значений с номенклатурой во временную таблицуВЫБРАТЬТаблЗнач.Ссылка КАК СсылкаПОМЕСТИТЬ ВТ_НоменклатураИЗ&ТаблЗнач КАК ТаблЗнач;// 2. Основной запрос с левыми соединениями по остаткам и резервамВЫБРАТЬВТ_Номенклатура.Ссылка КАК Номенклатура,ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,УчетРезервовТМЦОстатки.КоличествоОстаток КАК РезервИЗВТ_Номенклатура КАК ВТ_НоменклатураЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата, ) КАК ПартииТоваровНаСкладахОстаткиПО ВТ_Номенклатура.Ссылка = ПартииТоваровНаСкладахОстатки.НоменклатураЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетРезервовТМЦ.Остатки() КАК УчетРезервовТМЦОстаткиПО ВТ_Номенклатура.Ссылка = УчетРезервовТМЦОстатки.НоменклатураГДЕ(ПартииТоваровНаСкладахОстатки.Склад В (&Склады))И (УчетРезервовТМЦОстатки.Склад В (&Склады));—
### Объяснение:
1. **Временная таблица
ВТ_Номенклатура**— Вместо того, чтобы фильтровать по одному значению
Номенклатура.Ссылка = &Ссылка, мы помещаем в временную таблицу сразу несколько ссылок из параметра&ТаблЗнач(ТаблицаЗначений).
— Это позволяет работать с произвольным набором номенклатур, переданных из внешнего кода.2. **Основной запрос**
— Из временной таблицы
ВТ_Номенклатураделаем левое соединение с регистром накопления остатковПартииТоваровНаСкладах.Остаткии регистром резервовУчетРезервовТМЦ.Остатки.
— В соединениях по полюНоменклатураиспользуется прямая ссылка, без.Ссылка, так как поле уже является ссылкой.
— Для регистраПартииТоваровНаСкладах.Остаткипередаётся параметр периода&Дата(например, текущая дата).
— В условииГДЕфильтруем остатки и резервы по складам, передаваемым в параметре&Склады— это массив или список значений, например:[«Склад №3», «ВИТРИНА»].
— Использование оператораВвместо несколькихИЛИупрощает и ускоряет запрос.3. **Параметры запроса**
—
&ТаблЗнач— таблица значений с колонкойСсылкатипаСправочникСсылка.Номенклатура.
—&Дата— дата, на которую берутся остатки.
—&Склады— список наименований складов для фильтрации.—
### Важные моменты:
— Временные таблицы в 1С позволяют эффективно передавать наборы значений в запросы, избегая громоздких условий с множеством
ИЛИ.
— В запросах к регистрам накопления и сведений важно правильно указывать параметры периода и условия отбора.
— Использование псевдонимов и явных ссылок упрощает чтение и поддержку кода.
— Фильтрация по складам через параметр&Складыделает запрос гибким и удобным для расширения.—
Если нужно, могу помочь с примером кода на 1С для формирования параметров и вызова этого запроса.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/69743/
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.