Метапеременные в SQL запросах
SYSDBA (обсуждение | вклад) (→RUID) |
SYSDBA (обсуждение | вклад) (→HOLDINGLIST) |
||
| (не показаны 3 промежуточные версии 1 участника) | |||
| Строка 1: | Строка 1: | ||
| − | Метапеременная -- это строковое выражение, имеющее определенный формат. | + | Метапеременная -- это строковое выражение, имеющее определенный формат. Метапеременная может быть указана в любом месте SQL запроса. Перед выполнением запроса система Гедымин вместо метапеременных вставит в текст запроса соответствующие значения. |
В системе Гедымин можно использовать следующие метапеременные в SQL запросах: | В системе Гедымин можно использовать следующие метапеременные в SQL запросах: | ||
| Строка 43: | Строка 43: | ||
Пример использования. Список сотрудников, принадлежащих всем компаниям [[Холдинг|холдинга]] (обратите внимание на использование кавычек при подстановке строкового параметра в SQL запрос): | Пример использования. Список сотрудников, принадлежащих всем компаниям [[Холдинг|холдинга]] (обратите внимание на использование кавычек при подстановке строкового параметра в SQL запрос): | ||
| − | select * from gd_people where wcompanykey in ( | + | select * from gd_people where wcompanykey in (<HOLDINGLIST/>) |
| − | + | ||
=== RUID === | === RUID === | ||
| Строка 65: | Строка 64: | ||
на самом деле будет храниться что-то вроде | на самом деле будет храниться что-то вроде | ||
select * from gd_companyaccount where companykey = 147035939 | select * from gd_companyaccount where companykey = 147035939 | ||
| + | |||
| + | [[Category:Документация]] | ||
| + | [[Category:Руководство разработчика]] | ||
| + | |||
| + | __NOTOC__ | ||
Текущая версия на 12:56, 6 апреля 2017
Метапеременная -- это строковое выражение, имеющее определенный формат. Метапеременная может быть указана в любом месте SQL запроса. Перед выполнением запроса система Гедымин вместо метапеременных вставит в текст запроса соответствующие значения.
В системе Гедымин можно использовать следующие метапеременные в SQL запросах:
[править] COMPANYKEY
Идентификатор текущей (рабочей) компании.
Синтаксис:
<COMPANYKEY/>
Пример использования. Данный запрос извлечет из базы данных все банковские счета текущей организации:
select * from gd_companyaccount where companykey = <COMPANYKEY/>
[править] CONTACTKEY
Идентификатор текущего контакта (т.е. идентификатор контакта, соответствующего учетной записи текущего пользователя).
Синтаксис:
<CONTACTKEY/>
Пример использования. Имя текущего пользователя системы:
select name from gd_contact where id = <CONTACTKEY/>
[править] INGROUP
Битовый набор групп, в которые входит текущий пользователь.
Синтаксис:
<INGROUP/>
Пример использования. Список документов, правом на просмотр которых обладает текущий пользователь:
select * from gd_document where bin_and(bin_or(aview, 1), <ingroup/>) <> 0
[править] HOLDINGLIST
Список идентификаторов компаний, входящих в холдинг, включая идентификатор текущей рабочей организации. Если текущая рабочая организация не является холдингом, то возвращает ее идентификатор.
Синтаксис:
<HOLDINGLIST/>
Пример использования. Список сотрудников, принадлежащих всем компаниям холдинга (обратите внимание на использование кавычек при подстановке строкового параметра в SQL запрос):
select * from gd_people where wcompanykey in (<HOLDINGLIST/>)
[править] RUID
Возвращает идентификатор записи в текущей базе данных по ее РУИДу.
Синтаксис:
<RUID XID="xid_number" DBID ="dbid_number"/>
[править] NCU
Возвращает идентификатор Национальной денежной единицы (НДЕ).
Синтаксис:
<NCU/>
[править] Использование метапеременных при запросе параметров
[править] Ограничение в использовании метапеременных
Метапеременные нельзя использовать в триггерах, хранимых процедурах и представлениях, т.к. они (триггеры, хранимые процедуры и представления), хранятся в откомпилированном виде, и вместо метапеременных в них уже подставились их значения! И вместо запроса в процедуре
select * from gd_companyaccount where companykey = <COMPANYKEY/>
на самом деле будет храниться что-то вроде
select * from gd_companyaccount where companykey = 147035939