Каталог решений - Пример использования объекта Схема запроса в реальном проекте

Пример использования объекта Схема запроса в реальном проекте

Пример использования объекта Схема запроса в реальном проекте

В наличии

Разберём решение задачи реального проекта: контекст, логика решения, само решение. Рассмотрим возможности объекта СхемаЗапроса.

Категория:

Описание

В статье рассмотрим пример использования объекта СхемаЗапроса в реальном проекте.

Контекст задачи проекта освещается с согласия Заказчика — ООО "ЭФМЕК РУС", за что ему огромное спасибо.

Проект англоязычный, поэтому интерфейс будет на английском языке.

Суть задачи:

  1. Работаем в агросекторе — выращиваем сельскохозяйственные культуры на полях фермерского хозяйства.
  2. Рассматриваемый процесс — планирование структуры посевных площадей агрономом. В ходе этого мероприятия определяется какая культура на каком поле и в какой сезон будет выращиваться.
  3. Выглядит это так:
  4. Наша задача организовать "Фильтр по предшественникам" (Filter by predecesor)
  5. То есть надо показать только те поля, в которых соблюдалась последовательность выращивания.

    Например, в 2021 растили Пшеницу (Wheat), в 2022 — кукурузу (Corn).

  6. Результат отбора:

    В результат попало только Field 3. Field 2 не попало, так как в 2021 на нём ничего не росло.


Отчет строится на базе документа "План выращивания" со следующей структурой метаданных:

 

Особенности

  1. На одну комбинацию Сезон/Поле может существовать только один План выращивания
  2. Выращиваемая культура (Номенклатура) хранится в табличной части
  3. Связано это с ситуацией Multiple-cropping. Когда на одном поле в сезоне одновременно растут несколько культур.

 

Посмотрим на форму фильтра:

 

 

На ней таблица (колонки Сезон, Номенклатура, КультураПоКлассификатору) и тумблер ТипОтбора (Число).

Тумблер задаёт режим ввода

  1. при значении 0 — вводим культуру (Номенклатура, Item)
  2. при значении 1 — вводим культуру по классификатору (отдельный справочник, реквизит Номенклатуры)

Нам надо получить только те поля, на которых соблюдалась последовательность выращивания.

Рассматриваем входные данные таблицы из приведённого выше примера: в 2021 — Пшеница, в 2022 — Кукуруза.

Результатом будет являться массив полей, удовлетворяющих данным таблицы.

Ясно, что результат надо получить одним пакетным запросом.

 

Подумаем над логикой запроса

  1. Для каждой строки таблицы формируем запрос, получающий поля сезона строки с учетом отбора по культуре/классификатору
  2. Полученные запросы объединяем
  3. Далее надо отобрать только те поля, которые будут присутствовать в каждом из запросов
  4. Имеем несколько запросов для объединения — количество равно количеству строк таблицы с заполненным отбором
  5. Всё, что нужно — это свернуть итоговый результат объединения и сравнить количество вхождений каждого поля с количеством строк с отбором.
  6. Для этих целей в запрос включим счетчик — число со значением 1.
  7. При свертывании будем суммировать по счетчику.
  8. Результат сворачивания отфильтруем по Сумма(Счетчик)=КоличествоСтрок

Переведём эти размышления в текст запроса.

 

 

Приведённый текст имеет "методологическую" ошибку. Сможете найти?

 

has been added to your cart:
Оформление заказа