База знаний Одина – Одинэсника Форумы ODIN – Форум по 1С Предприятию Как модифицировать запрос для системы компоновки данных в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33279
      Телеграм группа https://t.me/odineskiOdineski
      Участник

      Модифицируй этот запрос под систему компоновки данных, чтобы сформировать отчёт

      ВЫБРАТЬ
      Задания.Дата КАК Дата,
      Задания.Операция КАК Операция,
      Задания.КоличествоПоПлану КАК КоличествоПоПлану,
      Задания.КоличествоФакт КАК КоличествоФакт,
      ЕСТЬNULL(Нормативы.КоличествоПоНормативу, 0) КАК КоличествоПоНормативу,

      // Сравнение с нормативом
      Задания.КоличествоФакт – ЕСТЬNULL(Нормативы.КоличествоПоНормативу, 0) КАК Отклонение,

      ВЫБОР
      КОГДА Задания.КоличествоФакт > ЕСТЬNULL(Нормативы.КоличествоПоНормативу, 0)
      ТОГДА “Выше нормы”
      КОГДА Задания.КоличествоФакт < ЕСТЬNULL(Нормативы.КоличествоПоНормативу, 0)
      ТОГДА "Ниже нормы"
      ИНАЧЕ "Соответствует норме"
      КОНЕЦ КАК СтатусВыполнения

      ИЗ
      (ВЫБРАТЬ
      НАЧАЛОПЕРИОДА(ЭМИСменноеЗадание.Дата, ДЕНЬ) КАК Дата,
      ЭМИСменноеЗаданиеСостав.НаименованиеОперации КАК Операция,
      СУММА(ЭМИСменноеЗаданиеСостав.Количество) КАК КоличествоПоПлану,
      СУММА(ЭМИСменноеЗаданиеСостав.КоличествоФакт) КАК КоличествоФакт
      ИЗ
      Документ.ЭМИСменноеЗадание КАК ЭМИСменноеЗадание
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭМИСменноеЗадание.Состав КАК ЭМИСменноеЗаданиеСостав
      ПО ЭМИСменноеЗадание.Ссылка = ЭМИСменноеЗаданиеСостав.Ссылка
      ГДЕ
      ЭМИСменноеЗадание.Проведен
      //И ЭМИСменноеЗадание.Дата МЕЖДУ &НачалоПериода И &КонецПериода
      И ЭМИСменноеЗаданиеСостав.НаименованиеОперации = &НаименованиеОперации
      СГРУППИРОВАТЬ ПО
      НАЧАЛОПЕРИОДА(ЭМИСменноеЗадание.Дата, ДЕНЬ),
      ЭМИСменноеЗаданиеСостав.НаименованиеОперации
      ) КАК Задания

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

      ПО Задания.Операция = Нормативы.Операция

      УПОРЯДОЧИТЬ ПО
      Дата

    • #33280
      bot_avaOdin – Одинэсник
      Участник

      Для использования данного запроса в системе компоновки данных (СКД) в 1С необходимо:

      1. Убрать комментарии из текста запроса (СКД не поддерживает комментарии в запросе).
      2. Заменить параметры на параметры СКД (например, &НаименованиеОперации).
      3. Убедиться, что все функции и конструкции поддерживаются СКД (функция ЕСТЬNULL поддерживается, ВЫБОР тоже).
      4. В СКД запросы пишутся в обычном синтаксисе 1С, но с некоторыми ограничениями.

      Ниже приведён пример модифицированного запроса для СКД с параметром НаименованиеОперации:

      **Особенности для СКД:**

      – Параметр &НаименованиеОперации нужно добавить в параметры отчёта в СКД.
      – В СКД нельзя использовать вложенные запросы в FROM, поэтому левое соединение с подзапросом может не работать напрямую. В этом случае можно вынести нормативы в отдельный набор данных и связать их через механизм связей наборов данных в СКД.
      – Если требуется объединить данные из нескольких наборов данных, то в СКД создают несколько наборов данных и связывают их по ключам.

      ### Рекомендации по реализации в СКД:

      1. Создайте два набора данных:

      – Первый набор данных — запрос по документу ЭМИСменноеЗадание и его составу (без нормативов).
      – Второй набор данных — запрос по регистру сведений НормативыЗагрузкиПроизводства.СрезПоследних.

      2. В схеме компоновки данных создайте связь между наборами данных по полю Операция.

      3. В отчёте используйте вычисляемые поля для расчёта отклонения и статуса выполнения, например:

      4. Параметр НаименованиеОперации добавьте в параметры отчёта.

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

      Рекомендую посмотреть здесь: https://infostart.ru/public/1896711/

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