Перейти к содержанию

Обращение к ДП в SQL

Для обращения к различным параметрам задач и типам данных используются разные поля и таблицы БД. Вот некоторые из них:

Объект Таблица БД Поля, которые чаще всего используются в запросах
Значения из ДП "Выбор пользователей" в привязке к задачам Значения хранятся в разных таблицах в зависимости от содержания: -TaskID — задача, в которой выбран ДП,
ExtparamSelectUsersValuesOrgUnits — Для ДП, в которых выбрана орг.единица.
Значения дополнительных параметров типа "Таблица" ExtParamTableValues -TaskID,
-ColumnID,
-RowID,
-Value — строковая колонка, в которой хранятся значения всех табличных колонок, независимо от их типа. Для преобразования их к типу, отличному от текстового, используется оператор CAST
Значения дополнительных параметров (кроме таблиц и Multilookup) ExtParamValues -TaskID,
-ExtParamID,
-DateTimeValue (для дат),
-DecimalValue (для чисел),
-MoneyValue (для денег),
-SelectedTaskID (для Lookup),
-ExtParamValueForSort (для текста и галочки)
-ExtParamValue (для остальных типов ДП)
Значения из ДП Multilookup (кроме To do list) и ДП Lookup ExtParamValueSelectedTasks -TaskID — задача, в которой выбран ДП,
-ExtParamID — ДП типа Multilookup/Lookup,
-SelectedTaskID — ссылка на задачу, выбранную в ДП
-FolderId — внешний ключ, ссылается на первичный ключ таблицы ExtParamValueSelectedTaskFloders
Значения из ДП типа Multilookup со схемой оформления "To do list" ExtParamValueSelectedTaskFolders -TaskID — задача, в которой выбран ДП,
-ExtParamID — ДП типа Multilookup,
-Name — наименование вкладки,
-FolderOrder — порядковый номер вкладки,
-Guid
Статусы задач States -StateID,
-Description
Задачи Tasks -TaskID,
-Description,
-StateID,
-StepID,
-SubcatID,
-ParentTaskID,
-IsOverdue — признак просроченности задачи,
-IsWaitingSign — признак ожидания обработки запрошенной подписи,
-IsClosed — признак завершения задачи,
-OrderedTime — срок задачи,
-EndTime — время завершения задачи
Исполнители по задачам TaskHelpers -UserID,
-TaskID
Пользователи Users -UserID,
-FullName,
-DisplayName,
-Nick
Файлы в файловом хранилище (Диске) FileStorageFiles -FileId
-LatestVersionId
-Name
Связи файлов с задачами (файлы, вложенные в задачи) FileStorageFileToTaskLinks -FileId
-TaskID
Связи файлов с ДП (файлы, вложенные в ДП) FileStorageFileToExtParamLinks -FileId
-TaskID
-ExtParamId

Пример 1:

Запрос выводит значения ДП типов "Дата", "Число", "Текст", Lookup, Multilookup, "Выбор пользователей", "Таблица" (колонки типов "Текст" и "Деньги") из задач в категории 33.

SELECT t.Description,
            epv205.DateTimeValue AS ДатаПретензии,                     -- (тип Дата)
            epv170.ExtParamValue AS НомерПретензии,                   -- (тип Число)
            epv207.SelectedTaskId AS Клиент,                           -- (тип Lookup)
            epv52.ExtParamValue AS ПодробноеОписание,                 -- (тип Текст)
            st.Description AS ТекущийСтатус,                           -- таблица статусов
            CAST(eptv239col21.Value AS Money) AS ЗапрошеннаяСумма,     -- колонка в таблице
            eptv239col19.Value AS Параметры,                           -- колонка в таблице
            epv147.ExtParamValue AS ТипПретензии,                     -- (тип Multilookup)
            u.FullName AS Менеджер                                     -- (тип Выбор пользователей)

FROM tasks AS t
  INNER JOIN ExtParamValues AS epv205 ON epv205.TaskID=t.TaskID                                     -- ДП "Дата претензии" (тип Дата)
  INNER JOIN ExtParamValues AS epv170 ON epv170.TaskID=t.TaskID                                     -- ДП "Номер претензии" (тип Число)
  INNER JOIN ExtParamValues AS epv207 ON epv207.TaskID=t.TaskID                                     -- ДП "Клиент" (тип Lookup)
  INNER JOIN ExtParamValues AS epv52 ON epv52.TaskID=t.TaskID                                       -- ДП "Подробное описание" (тип Текст)
  INNER JOIN States AS st on st.StateID=t.StateID                                                   -- таблица статусов
  INNER JOIN ExtParamTableValues AS eptv239col21 ON eptv239col21.TaskID=t.TaskID                   -- колонка "Запрошенная Сумма" в ДП "Таблица"
    FULL JOIN ExtParamTableValues AS eptv239col19 ON eptv239col19.TaskID=eptv239col21.TaskID
  AND eptv239col19.rowid=eptv239col21.rowid
  AND eptv239col19.ColumnID =19                                                                     -- колонка "Параметры" в ДП "Таблица"
  INNER JOIN ExtParamValueSelectedTasks AS epvst ON epvst.TaskID=t.TaskID
  INNER JOIN ExtParamValues AS epv147 on epvst.SelectedTaskID=epv147.TaskID                         -- ДП "Тип претензии" (тип Multilookup)
  INNER JOIN ExtParamSelectUsersValues AS epsuv ON epsuv.TaskID=t.TaskID
  INNER JOIN Users AS u ON u.UserID=epsuv.UserID                                                   -- ДП "Менеджер" (тип Выбор пользователей)

WHERE t.SubcatID=33 AND eptv239col21.ColumnID =21 AND epv205.ExtParamID=205 AND epv170.ExtParamID=170
AND epv207.ExtParamID=207 AND epvst.ExtParamID=21 AND epv147.ExtParamID=147 AND epv52.ExtParamID=52
AND epsuv.ExtParamID = 63

Пример 2:

Запрос выводит список задач из категории 1234 и имена исполнителей по этим задачам.

SELECT t.TaskID,
            u.FullName

FROM tasks AS t
      JOIN TaskHelpers AS th ON t.TaskID=th.TaskID
      JOIN Users AS u ON th.UserID=u.UserID

WHERE t.SubcatID=1234