Как учесть разные типы регистратора в запросе 1С?

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38452
      Фото аватараOdineski
      Участник

        ВЫБРАТЬ РАЗРЕШЕННЫЕ
        ИсточникДанных.Номенклатура КАК Номенклатура,
        ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Номенклатура) КАК НоменклатураПредставление,
        ИсточникДанных.Регистратор КАК Регистратор,
        ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Регистратор) КАК РегистраторПредставление,
        ИсточникДанных.Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения,
        ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Номенклатура.БазоваяЕдиницаИзмерения) КАК БазоваяЕдиницаИзмеренияПредставление,
        ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоБазовыхЕдНачальныйОстаток,
        ИсточникДанных.Регистратор.Дата КАК РегистраторДата
        ИЗ
        РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
        &ДатаНач,
        &ДатаКон,
        Регистратор,
        ,
        Склад = &Параметр1
        И Номенклатура В ИЕРАРХИИ (&Параметр2)) КАК ИсточникДанных
        ГДЕ
        ТИПЗНАЧЕНИЯ(ИсточникДанных.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)

        УПОРЯДОЧИТЬ ПО
        ИсточникДанных.Регистратор.Дата
        ИТОГИ
        СУММА(КоличествоБазовыхЕдНачальныйОстаток)
        ПО
        ОБЩИЕ,
        Номенклатура КАК Номенклатура,
        Регистратор КАК Регистратор,
        РегистраторДата КАК РегистраторДата
        АВТОУПОРЯДОЧИВАНИЕ

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

          Запрос корректный, но есть несколько важных моментов, которые стоит учесть:

          1. В условии фильтрации:
          |ТИПЗНАЧЕНИЯ(ИсточникДанных.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)

          Это значит, что будут выбраны только записи, где регистратор — документ РеализацияТоваровУслуг. Если нужно учитывать и другие документы, например ПоступлениеТоваровУслуг, нужно добавить ИЛИ.

          2. В выражении расчёта количества:
          |ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоБазовыхЕдНачальныйОстаток

          Убедитесь, что у номенклатуры заполнен реквизит ЕдиницаХраненияОстатков и у неё есть коэффициент. Иначе возможны ошибки или нулевые значения.

          3. Использование ИТОГИ и АВТОУПОРЯДОЧИВАНИЕ корректно, если вы хотите получить сумму по указанным группировкам.

          Если хотите получить итог по номенклатуре и регистратору с датой, то всё сделано правильно.

          Если нужна помощь с доработкой запроса под конкретную задачу — уточните, что именно хотите получить.

          Пример расширения фильтра по регистратору:

          |ГДЕ
          | (ТИПЗНАЧЕНИЯ(ИсточникДанных.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
          | ИЛИ ТИПЗНАЧЕНИЯ(ИсточникДанных.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг))
          | И ИсточникДанных.Номенклатура В ИЕРАРХИИ(&Параметр2)
          | И ИсточникДанных.Склад = &Параметр1

          Если нужна помощь с конкретным примером — пишите.

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