База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сделать запрос по оборотам регистра накопления с отбором по массиву документ
- В этой теме 1 ответ, 2 участника, последнее обновление 9 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
29 сентября 2026 в 14:07 #38748
Как правильно сделать запрос по оборотам Регистра Накопления с отбором по массиву документов? Поправь мой запрос:
| ВЫБРАТЬ
| СебестоимостьТоваровОбороты.Регистратор КАК Регистратор,
| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| СУММА(СебестоимостьТоваровОбороты.СтоимостьПриход) КАК Стоимость,
| СУММА(СебестоимостьТоваровОбороты.СтоимостьБезНДСПриход) КАК СтоимостьБезНДС
| ИЗ
| РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваровОбороты
| ГДЕ
| СебестоимостьТоваровОбороты.Регистратор В (&МассивДокументов) -
29 сентября 2026 в 14:07 #38749
Для отбора по массиву документов лучше использовать виртуальную таблицу
Обороты(), а отбор по регистраторам передать четвертым параметром виртуальной таблицы. Поскольку в результате нуженРегистратор, периодичность виртуальной таблицы должна бытьРегистратор.Исправленный запрос:
1С (Код)12345678910111213141516171819|ВЫБРАТЬ| СебестоимостьТоваровОбороты.Регистратор КАК Регистратор,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия КАК Серия,| СУММА(СебестоимостьТоваровОбороты.СтоимостьПриходОборот) КАК Стоимость,| СУММА(СебестоимостьТоваровОбороты.СтоимостьБезНДСПриходОборот) КАК СтоимостьБезНДС|ИЗ| РегистрНакопления.СебестоимостьТоваров.Обороты(| &НачалоПериода,| &КонецПериода,| Регистратор,| Регистратор В (&МассивДокументов)| ) КАК СебестоимостьТоваровОбороты|СГРУППИРОВАТЬ ПО| СебестоимостьТоваровОбороты.Регистратор,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.СерияПараметры запроса устанавливаются так:
1С (Код)123Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);Запрос.УстановитьПараметр("КонецПериода", КонецПериода);Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);Важные моменты:
1. Ваш исходный запрос обращается к основной таблице регистра:
1С (Код)1|РегистрНакопления.СебестоимостьТоваровЭто таблица движений, а не виртуальная таблица оборотов.
2. Для получения оборотов используется:
1С (Код)1|РегистрНакопления.СебестоимостьТоваров.Обороты(...)3. В виртуальной таблице параметр
Регистраторпосле третьего параметра означает периодичность:1С (Код)1|Обороты(&НачалоПериода, &КонецПериода, Регистратор, ...)Это позволяет получить данные с детализацией по регистратору.
4. Отбор по массиву передан внутрь виртуальной таблицы:
1С (Код)1|Регистратор В (&МассивДокументов)Так обычно эффективнее, чем писать отбор во внешнем
ГДЕ, поскольку виртуальная таблица сразу формируется по нужным регистраторам.5. В виртуальной таблице имена ресурсов обычно получают суффикс
Оборот. Поэтому:1С (Код)1|СтоимостьПриходзаменяется на:
1С (Код)1|СтоимостьПриходОборотАналогично:
1С (Код)1|СтоимостьБезНДСПриходОборотТочные имена полей можно проверить через конструктор запроса. Если в конфигураторе ресурс регистра называется, например,
Стоимость, тогда поле виртуальной таблицы будет называтьсяСтоимостьОборот.Если необходимо получить именно движения регистра без виртуальной таблицы оборотов, тогда исходный вариант можно оставить, но нужно добавить группировку:
1С (Код)12345678910111213141516|ВЫБРАТЬ| СебестоимостьТоваров.Регистратор КАК Регистратор,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Серия КАК Серия,| СУММА(СебестоимостьТоваров.СтоимостьПриход) КАК Стоимость,| СУММА(СебестоимостьТоваров.СтоимостьБезНДСПриход) КАК СтоимостьБезНДС|ИЗ| РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров|ГДЕ| СебестоимостьТоваров.Регистратор В (&МассивДокументов)|СГРУППИРОВАТЬ ПО| СебестоимостьТоваров.Регистратор,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Характеристика,| СебестоимостьТоваров.АналитикаУчетаНоменклатуры.СерияЭтот вариант подходит, если нужно обработать фактические записи движений и не требуется расчет виртуальных оборотов за период.
Если регистратор имеет составной тип и массив содержит документы разных типов, отбор может работать медленнее. Желательно, чтобы в
МассивДокументовнаходились ссылки одного типа, например толькоДокумент.РеализацияТоваровУслуг.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.