Show/Hide Toolbars

Руководство администратора

Особенности работы с различными объектами типами ДП

Ссылки Назад Вверх Вперед

Работа с числами

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

Результат деления чисел зависит от типов исходных данных (целое или десятичное число) — при делении целых чисел результатом будет целое число; если одно из чисел десятичное, то и результат будет десятичным числом.

Например:

1 / 5 = 0

1.0 / 5 = 0.2

1 / 5.0 = 0.2

1.0 / 5.0 = 0.2

При работе с десятичными числами (Decimal) функция Округлить ("Математические" — "Округлить") выполняет операцию округления, но возвращает не целое число, а десятичное с нулями после запятой. Чтобы получить целое число, используйте функцию ВЦелоеЧисло ("Строки" — "Преобразовать" — "ВЦелоеЧисло"):

smart_exp_DP2

Варианты округления чисел

Для преобразования числа в строку используется функция ВСтроку ("Числа" — "ВСтроку"):

smart_exp_DP1

Преобразование числа в строку

Работа с датами

При работе с датами чаще всего используются функции форматирования (для приведения к нужному представлению), работы со сроками (прибавления определенного количества дней и т.п.) и формирования даты. Следует помнить, что в "Первой Форме" используются ДП типа "Дата" и "ДатаВремя".

Для получения текущей даты используется функция ТекущиеДатаВремя(). Для формирования даты используется функция НовыеДатаВремя (год, месяц, день, час, минуты, секунды).

Пример: формирование даты последнего рабочего дня месяца и окончания рабочего дня (18 часов).

smart_dp_date_1

Смарт-выражение, формирующее дату последнего рабочего дня и время 18:00

Для работы со сроками используются встроенные функции из подменю Добавить..., Разница..., Округлить....

Пример: округление даты.

smart_exp_DP3

Округление даты

Для преобразования даты в текст используется функция Отформатировать дату (дата, шаблон). Шаблон указывается в виде текстовой строки вида 'dd.MM.yyyy HH:mi'.

smart_exp_DP4

Преобразование даты в текст

Если пользователи системы территориально находятся в разных часовых поясах, в смарт-выражениях удобно использовать функцию ПеревестиВЧасовуюЗонуПользователя (дата_время, ID пользователя).

Пример: перевод времени, указанного в ДП "Плановое время созвона", во время по часовому поясу заказчика задачи.

smart_exp_DP5

Перевод в другую часовую зону

Работа со строками

Для последовательного соединения строк можно использовать  обычный оператор сложения "+", а для сравнения — знак равенства "=".

Строковые выражения заключаются в одинарные кавычки.

smart_exp_DP6

Работа со строками

Работа с логическими выражениями

Логические выражения могут принимать значения true или false. Логические выражения могут соединяться операторами "И" и "ИЛИ", при необходимости с использованием отрицания "НЕ".

smart_exp_DP7

Логическое выражение

Также возможно использование специальных логических операторов "есть значение", "нет значения" и "есть ложь":

smart_exp_DP8

Использование логических операторов

В базе данных приложения для ДП типа "Галочка" (checkbox) хранятся как строковое значение "да" (true) или "нет" (false), так и бинарное значение 1 или 0. Для доступа к бинарному значению надо использовать свойство "Галочка":

smart_exp_DP9  

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

Обращаться к нему можно таким образом:

smart_exp_DP11

Обращение к булеву ДП в смарт-выражении

Также можно использовать и текстовое значение:

smart_exp_DP10

Текстовое выражение для булевого значения

Работа с ДП "Выбор пользователей"

Значениями ДП "Выбор пользователя" могут быть:

пользователь или список пользователя;

группа или список групп;

элемент орг.структуры или список элементов орг.структуры.

В дереве сущностей для ДП типа "Выбор пользователей" есть отдельные "ветви" для каждого из этих трех типов значений:

smart_exp_DP12

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

Чтобы проверить, содержит ли выбранное значение только пользователей, без групп (для элементов орг.структуры аналогично), можно использовать такую конструкцию:

smart_exp_DP13

Пример логического выражения

Для работы с ДП "Выбор пользователей" используются конструкции формата JSON:

'{"Users":{"Deleted":[XX,...,XX],"Added":[XX,...,XX]},"Groups":{"Deleted":[XX,...,XX],"Added":[XX,...,XX]},

"OrgUnits":{"Deleted":[XX,...,XX],"Added":[XX,...,XX]}}'

В качестве ключей выступают типы значений — "Users", "Groups", "OrgUnits". Для каждого из них, в свою очередь, используются ключи, обозначающие операцию — добавление ("Added") и удаление ("Deleted") элементов.

В качестве значений (вместо XX) подставляются, соответственно, ID пользователей, групп или орг.единиц, преобразованные в текст.

Вся конструкция целиком представляет собой строку, поэтому она должна заключаться в одинарные кавычки и при ее формировании должен соблюдаться синтаксис работы со строками.

Пользователи

Чтобы в ДП "Выбор пользователя" записать одного или нескольких пользователей, надо указать список ID пользователя или список ID в формате {ID1, ID2, ...}. Например:

smart_exp_DP14

Смарт-выражение для работы с пользователями

Орг.единицы

Чтобы в ДП "Выбор пользователя" записать одну или несколько орг. единиц, можно использовать следующие конструкции:

1. Напрямую (где "1234" и "5678" — это ID орг.единиц)

smart_exp_DP15

Смарт-выражение для работы с орг. единицами напрямую

2. С помощью ДП (где "ДП_ID_орг.единицы" — это текстовый ДП, содержащий ID орг.единицы или список ID в формате {ID1, ID2, ...}.)

smart_exp_DP16

Смарт-выражение для работы с орг. единицами с помощью ДП

3. С помощью запроса (пример)

smart_exp_DP17

Смарт-выражение для работы с орг. единицами с помощью запроса

Группы

Чтобы в ДП "Выбор пользователя" записать одну или несколько групп, можно использовать следующие конструкции:

1. Напрямую (где "1234" и "5678" — это ID групп)

smart_exp_DP18

Смарт-выражение для работы с группами напрямую

2. С помощью ДП (где "ДП_ID_группы" — это текстовый ДП, содержащий ID группы или список ID в формате {ID1, ID2, ...})

smart_exp_DP19

Смарт-выражение для работы с группами через ДП

3. С помощью запроса (пример)

smart_exp_DP20

Смарт-выражение для работы с группами с помощью запроса

Работа с ДП "Адресаты Email"

Для работы с адресами E-mail используются конструкции формата JSON:

'{"ValsToAdd":[{"UserID":XX},...,{"Email":XX}], "ValsToDelete":[{"UserID":XX},...,{"Email":XX}]}'

Адресаты могут описываться по ID пользователя (ключ "UserID") или по адресу электронной почты (ключ "Email").

Для добавления адресатов в список используется ключ "ValsToAdd", а для удаления адресатов из списка — ключ "ValsToDelete".

Вся конструкция целиком представляет собой строку, поэтому она должна заключаться в одинарные кавычки и при ее формировании должен соблюдаться синтаксис работы со строками.

Операция

Пример записи

Добавление пользователя с ID=1821 и внешним адресом электронной почты sdffd@mail.ru

'{"ValsToAdd":[{"UserId":1821},{"Email":"sdffd@mail.ru"}]}'

Добавление пользователя с ID, получаемым как результат выражения

'{"ValsToAdd":[{"UserId":' + ВСтроку( ID заказчика ) + '}]}'

Удаление пользователя с ID=14 и внешним адресом электронной почты fdsff@mail.ru

'{"ValsToDelete":[{"UserId":14},{"Email":"fdsff@mail.ru"}]}'

Если операция выполняется над несколькими пользователями, они перечисляются через запятую

'{"ValsToAdd":[{"UserId":2372},{"UserId":2225},{"UserId":2211}]}'

Smart-выражение может содержать несколько действий, в этом случае они перечисляются через запятую

'{"ValsToAdd":[{"UserId":1821},{"Email":"sdffd@mail.ru"}],"ValsToDelete":[{"UserId":14},{"Email":"fdsff@mail.ru"}]}'

Работа с ДП Lookup

ДП типа Lookup содержит ссылку за задачу, поэтому через этот ДП можно обратиться к любому параметру этой задачи. Например:

smart_exp_DP21

Обращение к ДП Lookup

Чтобы проверить, входит ли выбранная задача в определенный список задач, нажмите на ссылку "Выбрать значения для сравнения":

smart_exp_DP22

Использование ссылки для сравнения

При этом откроется окно для выбора задач, из которых будет сформирован список для сравнения. Выбранные задачи необходимо отметить флажком в левом столбце.

В результате формируется выражение вида:

smart_exp_DP23

Выражение для сравнения

Если какая-то категория содержит ДП типа Lookup или "Список выбора задач из категории" со ссылкой на данную категорию, то в дереве сущностей появится объект:

smart_exp_DP24

Отбор задач, ссылающихся на данную задачу

(причем для каждого такого ДП в дереве сущностей будет присутствовать отдельный объект)

Кроме того, можно отобрать все ссылки на данную задачу с помощью объекта:

smart_exp_DP25

Использование ссылок на данную задачу

Работа с ДП "Выбор нескольких задач из категории"

Значение ДП типа "Выбор нескольких задач из категории" представляет собой массив ID задач. В явном виде оно записывается так:

{ID1,ID2,...}

Например:

{12345,6789,34567,...}

где 12345, 56789, 34567 и т.д. — ID выбранных задач.

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

smart_exp_DP26

Типовые конструкции для работы с ДП "Выбор нескольких задач в категории"

Если какая-то категория содержит ДП типа "Выбор нескольких задач из категории" со ссылкой на данную категорию, то в дереве сущностей появится объект (причем для каждого такого ДП в дереве сущностей будет присутствовать отдельный объект):

smart_exp_DP24

Отбор задач, ссылающихся на данную задачу

Кроме того, можно отобрать все ссылки на данную задачу с помощью объекта:

smart_exp_DP25

Использование ссылок на данную задачу

Для редактирования значений ДП используются следующие конструкции:

Операция

Синтаксис

Пример

Удаление задачи из списка

'-'+ВСтроку(ID_задачи)

"-123456"

из списка значений ДП "Выбор нескольких задач в категории" удаляется задача с ID = 123456

Удаление нескольких задач из списка

см. пример 2 из пункта "Несколько операций в одном смарт-выражении"

Добавление одной задачи в список

ВСтроку(ID_задачи)

"123456"

в список значений ДП "Выбор нескольких задач в категории" добавляется задача с ID = 123456

Добавление нескольких задач в список

ID задач можно перечислять, используя разделитель "]||[]||[":

ВСтроку(ID_задачи)+"]||[]||["+ВСтроку(ID_задачи)

"111111]||[]||[222222"]||[]||[333333"

в список значений ДП "Выбор нескольких задач в категории" добавляются задачи с ID 111111, 222222, 333333

Обновление комментария по выбранному значению

'='+ВСтроку(ID_задачи)+"]||["+"текст_комментария"

"=123456]||[текст_комментария"

в списке значений ДП "Выбор нескольких задач в категории" для задачи с ID = 123456 добавляется комментарий с текстом "текст_комментария"

Несколько операций в одном смарт-выражении

Множество операций можно объединять через '#'

"-111111#222222]||[текст_комментария"

в списке значений ДП "Выбор нескольких задач в категории" удаляется задача с ID = 111111 и добавляется задача с ID = 222222 с комментарием "текст_комментария"

"-111111#-222222#-333333"

из списка значений ДП "Выбор нескольких задач в категории" удаляются задачи с ID 111111, 222222, 333333

Работа с ДП "Таблица"

Работа с данными в ДП типа "Таблица" осуществляется на уровне строк: если надо добавить или изменить значение в ячейке таблицы, то происходит обращение ко всей строке таблицы. Для работы со строками таблицы используются конструкции формата JSON.

Ячейка таблицы описывается конструкцией вида:

ID_колонки:{"First":ХХ,"Second":YY}

В ключе "First" (вместо XX) указывается вносимое значение. Его тип должен соответствовать типу колонки. При формировании строки значение должно преобразовываться к текстовому виду. Например, для числового значения — с помощью функции ВСтроку(). Текстовые значения должны быть заключены в двойные кавычки.

Ключ "Second" для большинства ячеек может не указываться.

Строка таблицы описывается как набор ячеек:

{"First":"ID_строки","Second":{ID_колонки:{"First":ХХ,"Second":YY},...,ID_колонки:{"First":ХХ,"Second":YY}}}

Перед описанием строки ставится знак операции: "+" для добавления строки, "-" для удаления строки или "=" для изменения значений.

Вся конструкция целиком представляет собой строку, поэтому она должна заключаться в одинарные кавычки и при ее формировании должен соблюдаться синтаксис работы со строками.

warning_icon  При добавлении или изменении строки в ДП "Таблица" с помощью смарт-автоматизаций некоторые символы необходимо экранировать.

Двойные кавычки " необходимо экранировать символом обратного слеша \:

 '123:{"First":"начало \"ABC\" продолжение"}'.

Символ обратного слеша \ необходимо повторять дважды:

 '123:{"First":"начало \\ продолжение"}'.

Символ одинарной кавычки ' необходимо повторять дважды (в примере ниже подстрока АВС окружена одинарными кавычками, повторенными дважды):

 '123:{"First":"начало ''ABC'' продолжение"}'.

Перенос строки \n \r экранировать не надо (перенос строки работает только для колонок "Большой текст", в режиме чтения перенос отображается как пробел, в режиме редактирования — как перенос):

 '123:{"First":"первая строка \n \r вторая строка"}'

Добавление новой строки

При добавлении новой строки достаточно указать только те колонки, где в ячейках есть значения, пустые колонки можно пропустить. Поскольку при добавлении новой строки значение "ID_строки" не известно, оно не указывается. Массив с описаниями ячеек заключается в квадратные скобки [ ]. ID_колонки не берется в кавычки.

'+[{ID_колонки:{"First":ХХ,"Second":YY},...,ID_колонки:{"First":ХХ,"Second":YY}}]'

Пример добавления строки

Пример добавления строки с ДП Выбор пользователей

Внесение изменений в строку таблицы

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

'={"First":"ID_строки","Second":{ID_колонки:{"First":ХХ},...,ID_колонки:{"First":ХХ}}}'

Пример изменения строки

Пример изменения с вычисляемыми значениями

Удаление строки из таблицы

При удалении важен только ID строки, поэтому  все остальное не указывается. ID_строки не берется в кавычки.

'-ID_строки'

Пример удаления строки

Особенности работы с колонкой "Мультифайл"

В ключе "First" значение колонки с типом "Мультифайл" указывается в виде массива: [ { Name, FileId,  PreuploadId, VersionId } ]

Пример

Выпадающие списки

Ключ "Second" должен указываться только для ячеек типа "Выпадающий список". Для остальных типов этот ключ необязателен, поэтому может быть пропущен или равен "null".

Для выпадающих списков, которые формируются из таблицы, значение ключа "First" — это значение поля, указанного как "Колонка текста", а значение ключа "Second" — поля, указанного как "Колонка значения".

smart_dp_table_YY_table

Ключи для выпадающего списка, который формируется из таблицы

Для выпадающих списков, которые формируются из набора элементов, и значение ключа "First", и значение ключа "Second" — это значение из колонки Текст.

smart_dp_table_YY_list

Ключи для выпадающего списка, который формируется из набора элементов

Одновременное изменение (обновление) всех строк ДП "Таблица"

(может использоваться, например, при обмене данными с базами "1С:Предприятие")

Для одновременного обновления всех строк ДП "Таблица" могут использоваться два оператора: # и |. Эти операторы меняют исходное значение ДП "Таблица" на новое, переданное значение. Оба оператора работают примерно одинаково за исключением того, что оператор | сначала удаляет все строки из исходной таблицы, а потом создает их из переданных данных, а оператор # удаляет только те строки, которых нет в переданных данных, добавляет только те строки, которых нет в исходной таблице, и изменяет только те строки, которые присутствуют и в исходной, и в переданной таблице.

Формат записи для этих операторов одинаковый. ID_строки берется в кавычки, ID_колонки — нет.

'#{"ID_строки":{ID_колонки:{"First":ХХ},...,ID_колонки:{"First":ХХ}},...,{"ID_строки":{ID_колонки:{"First":ХХ},...,ID_колонки:{"First":ХХ}}}'

или

'|{"ID_строки":{ID_колонки:{"First":ХХ},...,ID_колонки:{"First":ХХ}},...,{"ID_строки":{ID_колонки:{"First":ХХ},...,ID_колонки:{"First":ХХ}}}'

warning_icon  Если ID существующих строк ДП "Таблица" точно не известны, лучше использовать оператор |.  В этом случае нумерация (ID) добавляемых строк начинается с 1, поскольку сначала удаляются все строки исходной таблицы.

warning_icon  Если в ДП "Таблица" есть скрытые колонки, то их обязательно нужно заполнять, иначе возникнет ошибка.

Пример одновременного обновления всех строк

Работа с ДП "Файл"

К текущей (актуальной) версии файла вы можете обратиться непосредственно через ДП.

Если в настройках ДП включен признак Мультифайл, в один ДП можно вложить сразу несколько файлов. С такими ДП нужно работать как с коллекцией. Если признак Мультифайл не включен, с ДП нужно работать как с единичным объектом.

Работа с ДП "Файл" как с единичным объектом:

smart_exp_DP28

Обращение к файлу, вложенному в ДП без признака "Мультифайл"

Работа с ДП "Файл" как с коллекцией:

smart_exp_DP27

Обращение к файлу, вложенному в ДП с признаком "Мультифайл"

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

Работая с этими коллекциями, вы можете выбирать как сам элемент, так и его свойство FileInfo, которое содержит полную информацию о файле.

smart_exp_DP29

Отбор файлов, вложенных в задачу

warning_icon  Отбор по объектам "Связи файлов с задачами" и "Связи файлов с ДП" дает корректные результаты только в контексте текущей задачи.

Смарт-выражение, использующее отбор из объектов "Связи файлов с задачами" или "Связи файлов с ДП", может возвращать как один, так и несколько файлов (список). Кроме того, если смарт-выражение должно вернуть несколько файлов, можно использовать объединение. Например, чтобы вложить в письмо все файлы, вложенные в задачу, и файл, вложенный в ДП в этой задаче, можно использовать такое-смарт-выражение:

smart_exp_DP30

В письмо вкладываются файлы из задачи и файл из ДП

Добавление файлов к уже вложенным

Если в значении ДП уже есть вложеные файлы и необходимо не заменить значения, а добавить файлы к уже имеющимся, используется перечисление id файлов через запятую в следующем формате: '+id_файла1, id_файла2, id_файла3'

Пример:

smart_exp_DP33

В ДП "Файл" вкладываются файлы без очищения старого значения

Версии файла

Обращаться можно не только к текущей версии, но и к любой предыдущей версии файла. Самый простой вариант получить ссылку на определенную версию файла — сформировать строку типа FileID.VersionID.

smart_exp_DP34

Пример обращения к первой версии файла, вложенного в ДП

warning_icon  Версии файла могут быть скрытыми (служебными). Такие версии не отображаются в истории версий в пользовательском интерфейсе, но к ним можно обратиться, например, через смарт-выражение. Скрытые версии создаются с помощью смарт-действия "Скопировать версию файла" с включенным флажком "Системная копия". Кроме того, скрытые версии могут создаваться при акцепте подписи, в момент сохранения "цифрового снимка" задачи. Создание таких скрытых копий определяется флажком "Создавать системные копии вложенных файлов при акцепте подписи" в настройках категории, ДП "Файл" или колонки "Файл" в ДП "Таблица".

Вложение файлов из других задач

Объекты "Связи файлов с задачами" и "Связи файлов с ДП" можно использовать напрямую только в контексте текущей задачи. Чтобы обратиться к файлам, вложенным в другую задачу, можно использовать конструкцию смарт-выражения как на скриншоте ниже. Исходная задача имеет ID=123456. Смарт-пакет с действием "Вложить файл" запускается из целевой задачи.

smart_exp_DP32

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

Способ, описанный выше, можно использовать только чтобы обратиться сразу ко всем файлам, вложенным в исходную задачу. Если нужно выбрать один из вложенных файлов или файл, вложенный в ДП, следует использовать SQL-запрос.

Обращение к файлам через SQL-запрос

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

Если "Первая Форма" использует собственное файловое хранилище (Диск), то данные о файлах содержаться в таблице FileStorageFiles, а связи с задачами и ДП — в таблицах FileStorageFileToTasksLinks и FileStorageFileToExtParamLinks. Версии файлов хранятся в таблице FileStorageFileVersionsФайловые провайдеры перечислены в таблице FileProviders.

/* Базовые мета-данные файлов (без версий) с атрибутом удален ли файл IsDeleted */
SELECT TOP 3 FileId, Name, IsDeleted, *
FROM FileStorageFiles
 
/* Мета-данные  версий файлов с указанием id провайдера и ключа файла */
SELECT TOP 3 FileId, VersionId, FileProviderId, FileProviderKey, *
FROM FileStorageFileVersions
 
/* Список файловых провайдеров */
SELECT TOP 3 * FROM FileProviders
 
/* Связь файлов с задачами (без версионирования) */
SELECT TOP 3 *
FROM FileStorageFileToTaskLinks
 
/* Связь версий файлов с ДП и ДП "Таблица" */
SELECT TOP 3 FileId, VersionId, ExtParamId, TableColumnID, TableRowID, *
FROM FileStorageFileToExtParamLinks
 
/* Контент файлов (отдельная БД) */
SELECT TOP 3 * FROM [TaskFilesDB].dbo.UploadFiles

Пример 1

Пример 2

Работа с блоком "Используется"

Для более точного отбора задач в блоке "Используется" могут использоваться смарт-фильтры. Для обращения к параметрам той задачи, которая содержит блок "Используется", служат параметры события "Во время открытия задачи".

Для обращения к параметрам задач, которые отображаются в блоке "Используется", служат параметры, расположенные вне контекста события, ниже в дереве сущностей.

Для обращения к дополнительным параметрам основной задачи и задач в блоке "Используется" служат объекты "Значения ДП".

Работа с ресурсами

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

Объект (коллекция)

Описание

Плановые трудозатраты

Работает с таблицей TaskResourcesPlanEntries, содержащей плановые трудозатраты по дням для задач в разрезе исполнителей и видов ресурсов

Плановые ресурсы

Работает с таблицей TaskResources, содержащей общие плановые трудозатраты для задач по видам ресурсов

Фактические трудозатраты по исполнителям

Работает с таблицей TaskResourceFactAggregated, содержащей общие фактические трудозатраты по задачам в разрезе исполнителей и видов ресурсов

Фактические трудозатраты по дням

Работает с таблицей TaskResourcesFactEntries, содержащей фактические трудозатраты по дням для задач в разрезе исполнителей и видов ресурсов

smart_resources01

Объекты (коллекции) по ресурсам и трудозатратам

Перечисленные ниже объекты (коллекции) должны использоваться только в контексте задач из системного справочника ресурсов:

Объект (коллекция)

Описание

Плановые трудозатраты по этому ресурсу (только для задач из справочника ресурсов)

Работает с таблицей TaskResourcesPlanEntries, содержащей плановые трудозатраты по дням для задач в разрезе исполнителей и видов ресурсов

Фактические трудозатраты по этому ресурсу по исполнителям (только для задач из справочника ресурсов)

Работает с таблицей TaskResourceFactAggregated, содержащей общие фактические трудозатраты по задачам в разрезе исполнителей и видов ресурсов

Фактические трудозатраты по этому ресурсу по дням (только для задач из справочника ресурсов)

Работает с таблицей TaskResourcesFactEntries, содержащей фактические трудозатраты по дням для задач в разрезе исполнителей и видов ресурсов