Пользовательские функции бывают двух видов:
-
QueryFunctionResult – функция для получения определенного значения;
-
QueryInFunction – функция получения множества значений, используется после операции in.
К виду QueryFunctionResult относятся следующие функции:
-
DateTime(год, месяц, день, [час], [минута], [секунда], [миллисекунда]) – дата и время. В квадратных скобках указываются необязательные параметры функции. Данная функция также может содержать следующие значения параметров:
Now – текущая дата и время с точностью до секунды;
Today – текущая дата и время в формате <дд:мм:гг>, где дд – число месяца, мм – месяц, гг – 2 последние цифры года (00:00:00);
MinValue – минимально допустимое значение переменной для типа "Дата/время";
MaxValue – максимально допустимое значение переменной для типа "Дата/время".
CreationDate <= DateTime(2014, 12, 17, 11, 15) – поиск контрагентов, дата создания которых меньше или равна 17.12.2014 года 11 часов 15 минут.
-
Guid('уникальный идентификатор в строковом представлении') – в параметр данной функции передается идентификатор объекта в строковом представлении, функция возвращает уникальный идентификатор объекта в виде числа. Сравнивать значение данной функции можно только с такими же значениями идентификаторов – либо в строковом, либо в числовом представлении:
Uid = Guid('27E70DFE-2A76-4F1D-A99A-CDF31C62D618') – поиск контрагентов с указанным идентификатором.
-
TypeReference('имя класса объекта') – ссылка на тип объекта. Имя класса объекта отображается в Дизайнере ELMA в карточке объекта на вкладке Общие в блоке Структура данных:
TypeUid = TypeReference('ContractorLegal') – поиск всех юридических лиц.
-
Reference(идентификатор типа объекта, идентификатор объекта) – значение объекта. Оба параметра ф
ункции являются обязательными для заполнения:
ZapolnenyDogovory = Reference('298b2c71-619f-463c-95b2-8e029085680d', 15) – поиск ответов на вопрос по указанным идентификаторам.
-
DropDownItem('значение выпадающего списка') – значение выпадающего списка. В качестве параметра данной функции необходимо указать одно из значений выпадающего списка (список значений указан в настройках свойства типа "Выпадающий список" на вкладке Общие в поле Элементы списка):
SpisokFilialov = DropDownItem('Новосибирский филиал') – поиск по указанному филиалу.
-
WorkTime(дней, часов, минут) – интервал рабочего времени:
Interval > WorkTime(1, 0, 00) – поиск всех объектов, в которых указан интервал более 1 рабочего дня.
К виду QueryInFunction относятся следующие функции:
-
CurrentUser() – идентификатор текущего пользователя. Функция без параметров:
CreationAuthor IN (CurrentUser(), 2) - найти контрагентов, которые были созданы текущим пользователем или пользователем с идентификатором 2.
-
Enum('название значение перечисления') – идентификатор указанного значения перечисления:
Contacts IN (Priority IN (Enum('High'), Enum('Low'))) – поиск контрагентов, контактные лица которых имеют высокий и низкий приоритет.
-
RelativeDateTime('относительная дата начала периода', 'относительная дата конца периода') - интервал времени между относительными датами. Один из параметров функции может быть пустым. В таком случае параметр задается пустыми одинарными кавычками или значением NULL.
В том случае, если первый параметр (дата начала периода) пустой, то интервал времени будет задан от минус бесконечности (минимально допустимого значения переменной) до второго параметра (конца периода). Если второй параметр (дата конца периода) пустой, то интервал времени будет задан от первого параметра (даты начала периода) до текущей даты:
CreationDate IN RelativeDateTime('-1м', '-1м') – поиск всех контрагентов, созданных в прошлом месяце.
-
SubTypes('имя класса объекта') – ссылки на типы объекта и его наследников. Имя класса объекта отображается в Дизайнере ELMA в карточке объекта на вкладке Общие в блоке Структура данных:
TypeUid in SubTypes('ContractorIndividual') – поиск всех физических лиц.
-
CurrentUserGroups() – возвращает группы текущего пользователя.
-
GetChiefByUser() – поиск всех руководителей пользователя согласно оргструктуре:
Responsible in GetChiefByUser(1) – поиск всех контрагентов, ответственными за которых являются вышестоящие руководители пользователя с id=1.
-
GetUserSubordinate()– поиск всех подчиненных пользователей согласно оргструктуре:
Responsible in GetUserSubordinate(101) – поиск всех контрагентов, ответственными за которых являются подчиненные пользователя с id=101.
-
GroupUsers() – поиск всех участников группы пользователей:
Responsible in GroupUsers(109) – поиск всех контрагентов, ответственными за которых являются участники группы с id=109.
-
UserGroups() – поиск всех групп пользователей, участником которых является пользователь, id которого указан в функции:
Id in UserGroups(102) – поиск всех групп пользователей, участником которых является пользователь с id=102.
-
UserOrganisationItems() – поиск пользователей согласно должностям оргструктуры:
CreationAuthor in (FROM User SELECT Id WHERE OrganizationItems in UserOrganisationItems(1)) – поиск всех контрагентов, автором создания которых является пользователь определенной должности (с id=1).
COUNT() – функция для построения сложных подзапросов, результатом которой является целое число. Правила построения системной функции:
-
COUNT(property) – поиск по полю с типом список, где:
property – поле типа "Список".
COUNT(Contacts) > 0 – поиск контрагентов, у которых есть контактные лица.
-
COUNT(query) – подзапрос (query), построенный по правилу:
FROM entity WHERE expression, где:
entity – объект, с которым работает подзапрос;
expression – выражение для фильтрации записей объекта, также может представлять из себя вложенный запрос.
COUNT(FROM Contact WHERE NOT Skype IS NULL AND Contractor = PARENT.Id) >= 1 – поиск контрагентов, количество контактов которых не менее 1, при условии, что поле "Skype" у контактов заполнено и контрагент контакта совпадает с текущим.
-
COUNT(function), где function – QueryInFunction функция, возвращающая в качестве результата список:
COUNT(GroupUsers(1)) – количество пользователей группы с id=1.
См. также: