Автоматизации

Вид материалаДокументы

Содержание


4.5. Создание фильтров с использованием SQL выражений
Рис. 56 - Пример фильтра, созданного с помощью SQL выражения
Таблица 4 Строки доступа к параметрам системы
Тип значения
4.5.1. Поиск документов, находящихся на исполнении
4.5.2. Поиск снятых с контроля документов
4.5.3. Поиск документов имеющих сообщения, направленные текущему пользователю
4.5.4. Поиск документов, по которым есть сообщения находящиеся на контроле и направленные текущему (подключенному в данный момен
4.5.5. Поиск сообщений, направленных на неавтоматизированные рабочие места
4.5.7. Поиск документов по полю "Подписан" в РК
4.5.9. Поиск документов, направленных сотрудникам подразделения, в котором работает пользователь текущей сессии
4.5.10. Поиск документов, в сообщениях которых получатель - текущий пользователь
4.5.11. Поиск документов, в сообщениях которых контролером является текущий пользователь
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   14

4.5. Создание фильтров с использованием SQL выражений


В случае необходимости создания сложных фильтров, если не хватает возможностей встроенного конструктора фильтров – может быть использовано SQL выражение. SQL выражение помещается на вкладку SQL и представляет собой часть стандартного оператора языка SQL "select", а именно условие отбора (то, что идет после ключевого слова "where").



Рис. 56 - Пример фильтра, созданного с помощью SQL выражения

SQL выражение строится в соответствии с правилами построения SQL выражений, принятыми для используемой СУБД (см. документацию на СУБД). При построении SQL выражений требуется знание структуры базы данных LanDocs (см. документ "Структура базы данных системы LanDocs"). Особенностью использования SQL выражений в системе LanDocs является возможность использования следующих параметров (Таблица 4), созданных на вкладке Параметры в окне фильтра.

Таблица 4 Строки доступа к параметрам системы

Конструкция

Описание

Тип значения

%CurrentOperation%

Текущая операция

pointer

%CurrentOperation.MainParam%

Главный параметр операции

pointer

%CurrentOperation.MainParam.ID%

Значение главного параметра

longint

%CurrentOperation.Session%

Сессия в рамках которой выполняется операции

pointer

%CurrentOperation.OperType%

Ссылка на тип операции

pointer

%CurrentOperation.OperType.ID%

ID типа операции

longint

%CurrentOperation.OperType.Name%

Физическое название типа операции

string

%CurrentOperation.OperType.DisplayLabel%

Логическое название типа операции

string

%Session%

Текущая главная сессия

pointer

%Session.ID%

ID текущей сессии

longint

%Session.UserID%

ID логического пользователя

longint

%Session.UserName%

Имя логического пользователя

string

%Session.PhysicalUserID%

ID фактического пользователя

longint

%Session.AccessID%

Уровень доступа текущего пользователя

longint

%Session.DepartmentID%

ID подразделения текущего пользователя

longint

%sql%

Ссылка SQL объект

pointer

@sql.SelectString(<Таблица>,<Поле>,<Условие>)

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

string




Примечание:
  • При создании фильтров с SQL запросами максимальная длина запроса может составлять 16000 символов.

4.5.1. Поиск документов, находящихся на исполнении


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

Например, для получения информации о документах, находящихся на исполнении (есть активные сообщения, отчет по документам еще не принят), необходимо создать в конструкторе фильтров следующий фильтр:



Рис. 57 – Фильтр отбора документов, находящихся на исполнении

Текст на закладке SQL: "ID" IN (select "ERCID" from dbo.ldmail where "MailStateID">=2 AND "MailStateID"<=4 AND "ERCID" is not NUll).

4.5.2. Поиск снятых с контроля документов


Для получения информации о документах, снятых с контроля создайте следующий фильтр:



Рис. 58 – Фильтр отбора документов, снятых с контроля

Текст на закладке SQL: "ID" IN (select "ERCID" from dbo.ldmail where "MailStateID"=6) AND "ID" NOT IN (select "ERCID" from dbo.ldmail where "MailStateID">=2 AND "MailStateID"<=4 AND "ERCID" is not NUll).

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


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



Рис. 59 – Документы, имеющие сообщения пользователю текущей сессии

Текст на закладке SQL: EXISTS(select "ERCID" from "DBO".ldmail where "ERCID"=ViewLDInERC."ID" AND "ReceiverID"=%Session.UserID%)

4.5.4. Поиск документов, по которым есть сообщения находящиеся на контроле и направленные текущему (подключенному в данный момент) пользователю


"ID" IN (SELECT "ERCID" FROM "DBO".LDMAIL WHERE "PriorityID">=3 AND "ReceiverID"=%Session.UserID%)

Все документы, идентификаторы которых окажутся среди результатов вложенного SQL- выражения, содержащего условие - выбрать:
  • идентификаторы регистрационных карточек из таблицы LDMAIL (где хранятся все сообщения системы);
  • идентификатор важности сообщения больше или равен 3 (контрольные типы важности);
  • идентификатор получателя равен идентификатору сотрудника из текущей сессии (получатель тот, кто в данный момент подключен к системе с данного рабочего места).



Примечание:
  • При использовании в SQL выражении функций даты/времени запрещается использование в SQL-выражении лишних пробелов.

4.5.5. Поиск сообщений, направленных на неавтоматизированные рабочие места


exists(select "ID" from "DBO".LDUser where "Automated"<>'+' AND

"ID"="DBO".ViewOutBox."ReceiverID").

4.5.6. Поиск документов, списанных в дело


"ID" IN (SELECT "DocID" FROM DBO.LDDOCCOPY WHERE "StateID"=3 AND ((FolderID='') OR (FolderID IS NULL) OR ("FolderID"=FolderID)))

4.5.7. Поиск документов по полю "Подписан" в РК


exists(select "ID" from ldoperation where "OperTypeID"=301 and

"MemberID"=%Session.UserID% and "ObjectID"="DBO".ViewLDERC."ID")

4.5.8. Поиск документов по сотруднику, который подготовил подпись документа


exists(select "ID" from ldoperation where "OperTypeID"=304 and

"MemberID"=%Session.UserID% and "ObjectID"="DBO".ViewLDERC."ID")

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


exists(select "ID" from "DBO".ldmail m where m."ERCID"="DBO".ViewLDERC."ID"

and exists(select "ID" from "DBO".lduser where

"ID"=m."ReceiverID" and "DepartmentID" in (select

"ID" from "DBO".LDVocabulary connect by prior "ID"="ParentID" start with"ID"=%session.DepartmentID%)))


Примечание:
  • Фильтр работает только для СУБД Oracle.

4.5.10. Поиск документов, в сообщениях которых получатель - текущий пользователь


"ID" IN (select "ERCID" from dbo.ldmail where "MailStateID">=2 AND "MailStateID"<=4 AND "ERCID" is not NUll AND "ReceiverID"=%Session.UserID%)

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


"ID" IN (select "ERCID" from dbo.ldmail where "MailStateID">=2 AND "MailStateID"<=4 AND "ERCID" is not NUll AND "AuditorID"=%Session.UserID%)