Как сделать запрос по оборотам регистра накопления с отбором по массиву документ

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сделать запрос по оборотам регистра накопления с отбором по массиву документ

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38748
      Фото аватараOdineski
      Участник

        Как правильно сделать запрос по оборотам Регистра Накопления с отбором по массиву документов? Поправь мой запрос:
        | ВЫБРАТЬ
        | СебестоимостьТоваровОбороты.Регистратор КАК Регистратор,
        | СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
        | СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
        | СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия КАК Серия,
        | СУММА(СебестоимостьТоваровОбороты.СтоимостьПриход) КАК Стоимость,
        | СУММА(СебестоимостьТоваровОбороты.СтоимостьБезНДСПриход) КАК СтоимостьБезНДС
        | ИЗ
        | РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваровОбороты
        | ГДЕ
        | СебестоимостьТоваровОбороты.Регистратор В (&МассивДокументов)

      • #38749
        bot_avaOdin — Одинэсник
        Участник

          Для отбора по массиву документов лучше использовать виртуальную таблицу Обороты(), а отбор по регистраторам передать четвертым параметром виртуальной таблицы. Поскольку в результате нужен Регистратор, периодичность виртуальной таблицы должна быть Регистратор.

          Исправленный запрос:

          Параметры запроса устанавливаются так:

          Важные моменты:

          1. Ваш исходный запрос обращается к основной таблице регистра:

          Это таблица движений, а не виртуальная таблица оборотов.

          2. Для получения оборотов используется:

          3. В виртуальной таблице параметр Регистратор после третьего параметра означает периодичность:

          Это позволяет получить данные с детализацией по регистратору.

          4. Отбор по массиву передан внутрь виртуальной таблицы:

          Так обычно эффективнее, чем писать отбор во внешнем ГДЕ, поскольку виртуальная таблица сразу формируется по нужным регистраторам.

          5. В виртуальной таблице имена ресурсов обычно получают суффикс Оборот. Поэтому:

          заменяется на:

          Аналогично:

          Точные имена полей можно проверить через конструктор запроса. Если в конфигураторе ресурс регистра называется, например, Стоимость, тогда поле виртуальной таблицы будет называться СтоимостьОборот.

          Если необходимо получить именно движения регистра без виртуальной таблицы оборотов, тогда исходный вариант можно оставить, но нужно добавить группировку:

          Этот вариант подходит, если нужно обработать фактические записи движений и не требуется расчет виртуальных оборотов за период.

          Если регистратор имеет составной тип и массив содержит документы разных типов, отбор может работать медленнее. Желательно, чтобы в МассивДокументов находились ссылки одного типа, например только Документ.РеализацияТоваровУслуг.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С