Документация iSZN

Выражение связи с первичной выборкой

Выражение связи с первичной выборкой определяет соответствие между записями первичной выборки выходного документа и записями вторичного варианта выборки. Выражение связи представляет собой SQL-выражение, подставляемое в выражение WHERE запроса вторичной выборки. В данном выражении разрешено использование параметров отчётной системы.

Пример

Необходимо сформировать список людей, зарегистрированных в текущем районе, и их персональных документов. Данные о людях содержатся в таблице r_people_and_colls, данные о персональных документах — в таблице r_personal_docs. С помощью первичного варианта выборки сформируем список людей, с помощью вторичного — список персональных документов, с помощью выражения связи с первичной выборкой определим соответствие между людьми и их персональными документами.

Запрос первичной выборки

SELECT
    region_id,  -- идентификатор района человека
    id,         -- идентификатор человека
    last_name,  -- фамилия
    first_name, -- имя
    middle_name -- отчество
  FROM
    uszn.r_people_and_colls rpac
  WHERE
    region_id={REGION} AND -- люди текущего района
    is_coll_instance=0     -- только люди (не коллективы)

Этот запрос выбирает список всех людей текущего района. В выходном документе данные, полученные с помощью этого запроса, представлены бэндом «Таблица первичной выборки».

В выходном документе SQL-выражения столбцов (располагаются между ключевыми словами SELECT и FROM) представлены соответствующими столбцами выходного документа с собственными SQL-выражениями. Выражение, начинающееся с ключевого слова FROM, представлено завершением выражения выборки данных.

Запрос вторичной выборки

SELECT
    region_id,  -- идентификатор района персонального документа
    id          -- идентификатор персонального документа
    pc_id,      -- идентификатор владельца персонального документа
    uszn.pkPerson.GetDocClassName(rpd.class_id) -- наименование класса персонального документа
  FROM
    uszn.r_personal_docs rpd
  WHERE
    region_id={REGION} -- персональные документы текущего района

Этот запрос выбирает список персональных документов всех людей текущего района.

В выходном документе данные, полученные с помощью этого запроса, представлены бэндом «Вложенная таблица». В выходном документе SQL-выражения столбцов представлены соответствующими столбцами вложенной таблицы с собственными SQL-выражениями. Выражение, начинающееся с ключевого слова FROM, представлено завершением выражения вторичной выборки данных.

Выражение связи

rpac.region_id=rpd.region_id AND -- идентификатор района человека равен идентификатору района персонального документа
rpac.id=rpd.pc_id                -- идентификатор человека равен идентификатору владельца персонального документа

В выходном документе это выражение нужно оформить с использованием параметров, так как мы пользуемся столбцами и вариантами выборки с собственными SQL-выражениями:

{@ Expression="rpac.region_id"}=rpd.region_id AND
{@ Expression="rpac.id"}=rpd.pc_id

В сформированном выходном документе будет содержаться таблица со списком людей текущего района, после каждой записи которой будет находиться вложенная таблица со списком персональных документов человека.

См. также