Обращение к ДП в 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