Типы полей

Введение

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

В каждое поле можно при помощи разных действий (в основном используется действие «Запись») записывать новые и читать существующие значения. Большинство полей поддерживают дополнительные методы записи и чтения, позволяющие не просто записать или прочитать значение поля в том виде, в котором оно хранится в базе данных, а передать или получить данные в других форматах, предварительно обработанные и пр. Например, поле «Время» имеет метод для увеличения хранящейся даты на заданное количество дней и метод для получения разницы между хранящимся значением и значением, которое можно загрузить из другого поля.

Время

Это поле для хранения даты и / или времени. В поле можно записывать время в разнообразных форматах, включая количество (милли)секунд Unix-времени.

Настройки

  • Формат времени. Список возможных форматов отображения значения поля. Форматы состоят из следующих обозначений:
    • ГГГГ — четыре цифры года, например, 2022
    • ГГ — две цифры года, например, 22
    • ММ (если перед ММ нет двоеточия) — две цифры месяца, например, 06 для июня
    • ДД — две цифры номера дня в месяце
    • ЧЧ — две цифры часа в 24-часовом формате
    • :ММ — две цифры минут
    • СС — две цифры секунд
  • Минимальный / максимальный час. Это значение будет исполльзоваться для формирования списка часов в окне выбора времени у пользователя. По умолчанию, пользователю предлагается для выбора любой час суток, от 0 до 23, если установить, к примеру, минимальный час равным 9, а максимальный — 18, то пользователю будут доступны для выбора часы с 9 до 18. Параметр доступен, если выбран формат времени с часами.
  • Шаг минуты. В окне выбора времени у пользователя по умолчанию есть возможность выбора от 0 до 59 минут. Можно изменить шаг, чтобы уменьшить количество возможных значений минут (например, при шаге равно 10 пользователь сможет выбрать 0, 10, 20, 30, 40 или 50 минут). Параметр доступен, если выбран формат времени с минутами.
  • Пользовательское значение. Ограничивает пользователя в выборе времени:
    • любое,
    • только в прошлом,
    • сегодня или в прошлом,
    • только в будущем,
    • сегодня или в будущем.
  • Время суток. Даже если выбранный формат отображает только дату без часов, поле будет хранить конкретное время суток. По умолчанию, это время равно 0 часов 0 минут 0 секунд. Можно изменить это значение на 23 часа 59 минут 59 секунд

Методы записи

  • Увеличить дату на количество лет / месяцев / дней / часов / минут. Метод позволяет добавить заданное количество лет / месяцев / дней / часов / минут к значению, записанном в поле. Для методов добавления дней и часов можно использовать рабочее время.
    Для рабочего времени можно настроить рабочий график, праздники, а также рабочие дни с нестандартным рабочим временем. Эти три параметра загружаются из полей. По умолчанию, используются настроечные поля РАБОЧИЙ ГРАФИК, ПРАЗДНИЧНЫЕ ДНИ, НЕСТАНДАРТНЫЕ РАБОЧИЕ ДНИ типа документа НАСТРОЙКИ.
    Поле РАБОЧИЙ ГРАФИК хранит данные в следующем формате: НОМЕР_ДНЯ_НЕДЕЛИ:РАБ_ЧАС1, РАБ_ЧАС2, РАБ_ЧАС3;
    Например, для шестидневной рабочей недели (с пн по пт с 9 до 18, с обеденным перерывом с 13 до 14 часов) поле должно содержать следующую строку:
    1:9,10,11,12,14,15,16,17; 2:9,10,11,12,14,15,16,17; 3:9,10,11,12,14,15,16,17; 4:9,10,11,12,14,15,16,17; 5:9,10,11,12,14,15,16,17
    Поле ПРАЗДНИЧНЫЕ ДНИ содержит даты праздников и дополнительных выходных дней в формате: ГГГГ-ММ-ДД; ГГГГ-ММ-ДД
    Например, 2023-01-01; 2023-08-03; 2023-05-09
    Поле НЕСТАНДАРТНЫЕ РАБОЧИЕ ДНИ позволяет описать дни с нестандартным рабочим временем в формате: ГГГГ-ММ-ДД:РАБ_ЧАС1, РАБ_ЧАС2;
    Например, сокращенный рабочий день 31 декабря с графиком работы с 9 до 13 часов и 7 марта с 9 до 15 часов можно описать следующим образом:
    2022-12-31:9,10,11,12;2023-03-07:9,10,11,12,13,14
  • Уменьшить дату на количество лет / месяцев / дней / часов / минут. Метод полностью идентичен аналогичному метода для добавления, за тем исключением, что он уменьшает дату (время), а не увеличивает. В методе уменьшения даты на количество дней допускается использование рабочего времени.
  • Установить год / месяц / день (месяца или недели) / час / минуту. Метод позволяет изменить в поле не всю дату, а только ее год, месяц, день, час, минуту. Если при установке дня месяца передать в метод, например, 31 число, а в текущем месяце меньше 31 дня, будет установлен последний день месяца, например, 29 февраля 2024 года.

Методы чтения

  • Получить год (4 цифры). Метод возвращает четыре цифры года даты, хранящейся в поле.
  • Получить год (2 цифры). Метод возвращает две цифры года даты, хранящейся в поле.
  • Получить месяц. Метод возвращает две цифры месяца даты, хранящейся в поле.
  • Получить день. Метод возвращает две цифры дня даты, хранящейся в поле.
  • Получить час. Метод возвращает две цифры часа даты, записанной в поле.
  • Получить минуту. Метод возвращает две цифры минут даты, записанной в поле.
  • Получить секунду. Метод возвращает две цифры секунд даты, записанной в поле.
  • Получить дату начала / конца. Эти методы позволяют получить дату начала или конца заданного периода относительно значения поля. Доступны следующие периоды:
    • Предыдущий / текущий / следующий год
    • Предыдущий / текущий / следующий месяц
    • Предыдущий / текущий / следующий квартал
    • Предыдущая / текущая / следующая неделя
    • Предыдущий / текущий / следующий день
    Например, если в поле записано значение 29 июня 2022 года, то для начала текущего квартала метод вернет 1 апреля 2022 года.
  • Получить порядковый номер дня в году. Для 1 января метод вернет 1, для 1 февраля - 32 и т. д.
  • Получить порядковый номер дня недели. Метод возвращает для понедельника 1, для вторника 2 и т. д.
  • Получить порядковый номер недели в году. Возвращает цифру от 1 до 52.
  • Получить количество дней в месяце. Возвращает количество дней в месяце даты, хранящейся в поле.
  • Получить разницу в днях / часах / минутах с другим временем, которое находится в указываемом поле. При расчете разницы в днях время игнорируется. То есть 02.01.2001 00:00 - 01.01.2001 23:59 = 1 день.
  • Получить измененное время. Время из поля может быть увеличено или уменьшено на заданное количество лет, месяцев, дней, часов, минут. Расчет дней и часов может выполняться как по календарному времени, так и по рабочему (см. описание настроек рабочего времени в метод «Увеличить дату на количество лет / месяцев / дней / часов / минут». Результирующее время может быть не просто получено, но и записано в само поле (обратите внимание, что если на это поле будет установлен контекст изменения, контекст сработает, но никаких сообщений из этого контекста (например, от действия Сообщения) получено не будет).

Дерево документов

Когда документ создается из другого документа между ними устанавливается родственная связь. Документы-родственники образуют иерархическое дерево, ведь из одного документа может быть создано несколько документов.

Это дерево и отображает поле «Дерево документов». В качестве названия документа используется содержимое поля заголовка.

Кстати, можно исключить документы некоторых типов из дерева документов при помощи настройки «Включать в дерево документов».

Настройки

  • Количество раскрытых уровней. Определяет сколько уровней дерева будет раскрыто автоматически.

Методы

У поля нет методов записи и чтения, и оно недоступно для использования в действиях, т. к. фактически это поле не имеет собственного значения, которое определяется в процессе работы на основе родственных связей того документа, в котором оно (поле) находится. При необходимости поработать с деревом родственных документов можно используя метод «Получить родственные документы» ссылочной переменной «ТЕКУЩИЙ ДОКУМЕНТ».

Диаграмма

Поле предназначено для создания трех видов диаграмм: гистограммы, линейной и круговой диаграмм.

Настройки

Поле имеет следующие настройки:

  • Тип диаграммы:
    • Гистограмма — это диаграмма, которая представляет сгруппированные данные в виде прямоугольных столбцов с высотой, пропорциональной значениям.
    • Линейная диаграмма или линейный график — это тип диаграммы, которая отображает информацию в виде ряда точек данных, называемых «маркерами», соединенных отрезками прямой линии.
    • Круговая диаграмма — это круговая статистическая диаграмма, которая разделена на срезы, чтобы проиллюстрировать числовую пропорцию.
  • Ширина и высота диаграммы. По умолчанию, диаграмма занимает весь родительский блок. При необходимости можно ограничить ширины и / или высоту диаграммы. Помимо значения ширины / высоты необходимо ввести единицу измерения: px, rem, em, %, vw /vh и пр.

Методы записи

Поле имеет единственный метод записи, позволяющий сформировать набор данных для создания диаграммы:

  • Сформировать данные для диаграммы. Этот метод использует два JSON-массива для осей X и Y. Наиболее удобным и простым для подготовки этих данных способом является применение «Динамической таблицы», однако, можно готовить данные любым иным способом. Метод имеет следующие параметры:
    • Данные оси X (метки). JSON-массив для формирования оси X (например, ["Январь", "Февраль", "Март"]). При использовании в качестве источника данных динамической таблицы следует использовать метод получения заголовков колонок таблицы. Например, в таблице есть колонки: Сотрудник, Январь, Февраль, Март. Чтобы получить только месяцы следует вызывать упомянутый метод с номерами столбцов: 2:-1.
    • Данные оси Y (значения). JSON-массив (двухуровневый) для формирования оси Y (например, [["менеджер1","1", "2", "1"],["менеджер2","2","2","1"]]; в этом примере первый элемент будет использован для названия набора данных в диаграмме). Можно использовать, данные, полученные в результате выполнения метода получения значения ячеек динамической таблицы. Если диаграмма будет отображать несколько наборов данных (как в примере выше - по менеджеру1 и менеджеру2) массив может содержать название набора данных для отображения в диаграмме (менеджер1, менеджер2); в настройке, описанной ниже указывается порядок номера элемента, который должен использоваться для названия).
    • Индекс элемента метки. Порядковый номер столбца (нумерация с 1) JSON-массив для названия набора данных из данных для оси Y (например, для данных [["менеджер1","1", "2", "1"],["менеджер2","2","2","1"]] - индекс равен 1). Если оставить значение, равное 0, метки не будет.

Диаграмма Ганта

Диаграмма Ганта - это столбчатый тип диаграммы с временной шкалой, обеспечивающий удобную визуализацию комплекса задач. Задачи могут быть связанными и вложенными. Фактически каждая задача является документом. При нажатии на строку задачи в диаграмме Ганта открывается окно с этим документом.

Поле отображается только в режиме просмотра, поэтому его не имеет смысла размещать в шаблонах форм.

Внутреннее значение поля — идентификаторы документов-задач (как в «Ссылке» или «Таблице документов»).

Настройки

Поле имеет следующие настройки:

  • Тип документа задачи. Диаграмма строится на основе задач. В данном параметре необходимо выбрать тип документа этих задач. Этот тип документа должен содержать поля, которые должны быть выбраны в нижеописанных настройках.
  • Поле названия задачи - поле типа документа задачи, содержащее ее название, которое будет отображаться в диаграмме.
  • Поле родительской задачи. Данное поле используется для построения иерархии задач. Как правило, это поле типа «Ссылка» на тип документа задачи.
  • Поле предыдущей задачи. Это поле также рекомендуется сделать «Ссылкой» на тип документа задачи. В нем определяется задача, результаты выполнения которой нужны для запуска текущей задачи.
  • Поле времени запуска / окончания задачи. Поле «Диаграмма Ганта» не осуществляет вычисление времени запуска (окончания) даже при наличии родительской (дочерних) или зависимых задач (это вычисление необходимо выполнять на уровне конфигурации, см. тип документа «Проект» типовой конфигурации).
  • Поле с исполнителем задачи.
  • Поле с прогрессом задачи. Здесь должен быть процент выполнения задачи. Этот процент может вводиться вручную в документе задачи либо автоматически вычисляться (для чего необходимо настроить соответствующим образом маршрут типа документа задачи).

Методы записи

  • Добавить задачу. Метод добавляет переданные идентификаторы документов (задач) в диаграмму.
  • Удалить задачу. Позволяет удалить одну или несколько задач из диаграммы по идентификатору. В качестве аргумента метод принимает идентификатор удаляемого документа (если идентификаторов несколько, они должны быть перечислены через запятую), например, любое поле типа «Ссылка».
  • Удалить задачи с начала / конца. Метод позволяет удалить заданное количество задач с начала или конца. Обратите внимание, что в диаграмме задачи сортируются по дате, а внутреннее значения поля — идентификаторы документов-задач, перечисленные через запятую, в порядке их добавления в диаграмму.

Методы чтения

  • Получить идентификатор первого документа-задачи. Метод позволяет получить идентификатор первого по порядку документа-задачи (в порядке записи задач в поле).
  • Получить количество задач. Возвращает числовое значение, соответствующее количеству записанных в поле документов-задач.

Динамическая таблица

Поле «Динамическая таблица» позволяет создавать столбцы в процессе работы документа через специальный метод. То есть, в отличие от поля «Таблица», в динамической таблице столбцы могут изменяться через маршрут, в зависимости от состояния документа, и набор столбцов может быть разный в разных документах одного типа. Поэтому при добавлении динамической таблицы в ее форме нет настроек.

В режиме формы (редактирования) поле имеет такой же вид, как и обычная «Таблица». В режиме просмотра пользователю доступна возможность выгрузки данных таблицы в файл XLSX.

«Динамическая таблица» используется действием «Генератор отчетов» и полем «Хранилище» для отображения отчетов с многоуровневыми заголовками колонок и возможностью расшифровки значений. Редактирование таблицы с многоуровневыми заголовками на текущий момент не поддерживается.

Методы записи

  • Добавить столбцы. Форма метода аналогична форме поля «Таблица», за исключением вкладки «Атрибуты», где доступен дополнительный параметр «Заголовок столбца». По умолчанию, заголовок добавляемого столбца — это его название. Но можно использовать значение какого-либо поля. Есть поддержка методов (HTML в заголовке таблицы не поддерживается).
  • Добавить строку. Метод позволяет добавить строку в таблицу и имеет следующие параметры:
    • Строка может быть добавлена в конец таблицы или перед строкой с указанным номером (нумерация начинается с 1).
    • Данные строки. Необходимо ввести порядковый номер столбца и сформировать значение для добавляемой строки (для отображения этого значения в таблице можно выбрать начертание шрифта). Нумерация столбцов начинается с единицы. Если номер положительный, отсчет выполняется с начала, если отрицательный - с конца, т.е. -1 соответствует последнему столбцу таблицы.
  • Изменить ячейки. Метод позволяет изменить одну или несколько ячеек на пересечении указанных строк и столбцов. Метод имеет следующие параметры:
    • Номера строк.
    • Номера столбцов. Нумерация как строк, так и столбцов, начинает с 1 (если значение положительное, отсчет ведется с начала, если отрицательное — с конца). Можно ввести несколько строк (столбцов) через запятую. Можно не только вводить номера строк (столбцов), но и диапазоны через двоеточие. Например, выражение 1, 3:-1 выберет всех строки (столбцы), кроме второго.
    • Фильтры по значениям ячеек. Если добавить фильтры, изменены будут только те ячейки, которые им удовлетворят.
    • Значение, которое будет записано в выбранную ячейку или ячейки (во все ячейки одно и то же значение).
  • Рассчитать строку / столбец. Этот метод рассчитывает заданный столбец или строку. Например, в таблице отображаются некие данные за четыре квартала года. Можно добавить столбец в таблицу при помощи предыдущего метода (если его еще нет) и рассчитать его при помощи данного метода. Данный метод также позволяет рассчитать, например, итоговую строку с суммой данных по заданным столбцам. Метод имеет следующие настройки:
    • Рассчитать столбец или строку.
    • Номер рассчитываемого столбца или строки. Нумерация начинается с единицы. Если номер положительный, отсчет выполняется с начала, если отрицательный - с конца, т.е. -1 соответствует последнем столбцу или строке таблицы.
    • Операция. Для столбца можно посчитать сумму значений всех или заданных столбцов построчно или просто количество других столбцов, а для строки можно рассчитать сумму всех строк по заданным столбцам. Во всех случаях в расчет можно принимать все столбцы или заданные. Кстати, расчет система пытается выполнить вне зависимости от типов полей. К примеру, если в таблице будет некий столбец, в строках которого будут значение 1, 2, а, б, данный метод рассчитает по нему сумму и запишет в итоговую строку 3.
      • Номера столбцов. Если вы не хотите, чтобы в итоговой строке что-то появлялось или в случае необходимости расчета суммы (количества) только по некоторым столбцам, можно ввести номера этих столбцов. Нумерация начинается с единицы. Можно перечислять номера через запятую (можно использовать отрицательные значения — нумерация с конца, т. е. справа) и использовать диапазоны через двоеточие. Например, если нужно выбрать все столбцы, начиная с 3, исключая 11, можно использовать выражение: 3:10,12:-1
      • Фильтры по значениям ячеек. Можно включать в расчет только те столбцы, значения ячеек которых соответствуют заданным фильтрам. Например, в таблице есть 5 столбцов, и необходимо построчно посчитать количество столбцов, содержащих значение «х».
  • Удалить столбцы.
  • Удалить строки. Удаление столбцов (строк) из таблицы осуществляется по заданным номерам. Нумерация столбцов (строк) начинается с единицы. Можно перечислять номера через запятую, можно использовать отрицательные значения для нумерации с конца, можно использовать диапазоны через двоеточие. Например, если нужно выбрать все столбцы (строки), начиная с 3, исключая 11, можно использовать выражение: 3:10,12:-1

Методы чтения

  • Получить количество столбцов.
  • Получить количество строк. Этот и предыдущий метод возвращают количество столбцов и строк в таблице.
  • Получить значения ячеек. Метод позволяет получить значение одной или нескольких ячеек, если будет задано несколько строк или столбцов. Во втором случае данные возвращаются в формате двухуровневого JSON-массива (этот массив можно записать в поле «Таблица»). Нумерация как строк, так и столбцов, начинает с 1 (если значение положительное, отсчет ведется с начала, если отрицательное — с конца). Можно ввести несколько строк (столбцов) через запятую. Можно не только вводить номера строк (столбцов), но и диапазоны через двоеточие.
  • Получить заголовки столбцов (в JSON). Метод имеет один параметр. Если оставить пустым этот параметр, метод вернет все столбцы в формате вида: ["Столбец1","Столбец2","Столбец3"]. Можно ограничить набор столбцов заданными, согласно нотации, описанной выше. Например, для получения заголовков всех столбцов, кроме первого, необходимо ввести выражение: 2:-1

Коллекция документов

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

Настройки

Поле имеет следующие параметры:

  • Поля коллекции. Администратор может настроить поля таблицы, в которой будет отображаться коллекция. Каждое поле имеет настройки: Название
    • Тип (строка, текст, дата, дата со временем, целое число, вещественное число), который определяет формат отображения данных в таблице и способ сортировки
    • Ширина столбца для поля. Можно использовать %, px, em, rem и пр.
  • Категоризация таблицы располагается слева в пользовательском представлении. Документы коллекции разбиваются на категории по значениям выбранного в данной настройке поля (например, по состояниям: Рассмотрение, Подпись, Исполнение и т.д.). Можно настроить сортировку категорий - для этого необходимо ввести все возможные значения категорий в нужном порядке, вводя на каждой строке одну категорию.
  • Стили. Можно настроить фильтры и стили оформления документов в таблице коллекции для подпадающих под условия этих фильтров документов
  • Удаление документов. По умолчанию, пользователь может удалять документы из своей коллекции. Параметр позволяет запретить такую возможность.
  • Календарь. Если включить календарь, то у пользователя в таблице коллекции правее строки поиска появится кнопка для переключения отображения документов с табличного вида на календарный. Для работы календаря необходимо выбрать поля коллекции, которые будут использоваться в качестве времени для позиционирования документа в календаря (поле коллекции типа «Дата» или «Дата со временем») и заголовка, которые будет отображаться.
  • Вид по умолчанию: таблица, плитки или календарь, который будет показываться пользователю по умолчанию. Пользователь может переключить вид на более удобный для него. Настройка будет проигнорирована, если пользователь переключал ранее вид на своем устройстве.

Методы записи

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

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

Образ документа

Этот тип поля устарел и будет удален в одной из следующих версий. При удалении все существующие поля данного типа будут заменены на «Ссылку» со включенным просмотром образа документа.

Обсуждение

Это поле позволяет организовывать чаты, обсуждения, форумы.

Настройки

  • Редактирование своих сообщений. Можно выключить или включить возможность редактирования своих сообщений автором. Если на сообщение уже есть ответ, его редактирование запрещено. Можно также установить количество минут с момента публикации, в течение которых можно будет изменить сообщение. Если установить значение, равное 0, изменить сообщение можно будет в любое время. Однако, если на сообщение будет получен ответ, редактирование сообщения становится недоступным вне зависимости от прошедшего с момента публикации времени.
  • Участие в дискуссии. По умолчанию принять участие в обсуждении может любой пользователь, имеющий доступ к документу. Если необходимо закрыть обсуждение или ограничить круг лиц, принимающих в нем участие, добавьте соответствующие фильтры.
  • Типы уведомлений. Типы уведомлений, которые будут направляться пользователям. Здесь можно выбрать из всех имеющихся в системе типов уведомлений. Если какой-либо из этих типов не настроен, он не будет выполняться. Если не выбрать ни один тип уведомления, никто не будет уведомлен о появлении новых данных.

Методы записи

  • Добавить сообщение. Поле позволяет добавлять сообщения из маршрута. Например, когда в документе происходят какие-то изменения, в обсуждение можно добавить соответствующее сообщение. Метод имеет следующие параметры:
    • Автор сообщения. Тут необходимо выбрать сотрудника, который будет автором сообщения.
    • Текст сообщения. Текст не может быть пустым.
    • Файлы сообщения. При необходимости к сообщению можно приложить файлы.
  • Добавить подписку. Пользователь может самостоятельно подписаться на все новые сообщения в обсуждении. Либо можно оформить эту подписку через данный метод. В единственном параметре метода необходимо определить пользователей (подразделения), которые будут подписаны на появление новых сообщений. При добавлении подписки метод автоматически предоставляет доступ к документу с обсуждением.
  • Удалить подписку. Метод аналогичен предыдущему, с той разницей, что он удаляет подписку, а не добавляет.

Методы чтения

  • Получить последнее сообщение. Если запускать этот метод в контексте изменения маршрута (предварительно установив запуск этого контекста в настройках поля обсуждения), можно анализировать все сообщения. Это позволит, к примеру, организовать некоего бота, который в ответ на определенные команды будет выполнять какие-либо запросы и добавлять в обсуждение ответы (через метода записи «Добавить сообщение»). Сообщение может быть получено полностью в формате JSON, либо можно получить идентификатор или имя автора добавленного сообщения, сообщение в текстовом или HTML-формате, идентификаторы вложенных файлов.

Пароль

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

Настройки

В настройках поля доступен два параметра:

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

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

Методы чтения

Если пароль в поле хранится в зашифрованном виде, получить его исходное значение можно при помощи метода «Получить расшифрованное значение».

Список

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

Настройки

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

  • Значения из таблицы, которая состоит из двух столбцов: значение и заголовок. Значение будет храниться в поле, а заголовок отображаться пользователю. Значение не должно содержать запятых. Заголовок можно будет всегда изменить, и во всех документах он обновится автоматически. Изменять же значение без особой надобности не следует, т. к. существующие выбранные пользователями в документах будут утеряны. Можно выбрать одно или несколько (при включенном множественном выборе) значений по умолчанию. В этом случае все вновь создаваемые документы будут иметь установленное значение в данном поле вне зависимости от наличия этого поля в шаблонах.
  • Значения из поля, в которое можно будет записать необходимое значение в процессе выполнения документа. При использовании этого варианта необходимо установить:
    • поле-источник (как правило, используются строковое или текстовое поле);
    • разделитель между вариантами, например, | или \n — перевод строки
    • разделитель между значением (не используйте запятые в значении) и заголовком, например, ::
      Если использовать приведенные примеры разделителей, то поле-источник может содержать строку следующего формата:
      1::Заголовок 1|2::Заголовок 2|3::Заголовок 3
      которое поле «Список» превратит в список:
      • Заголовок 1,
      • Заголовок 2,
      • Заголовок 3,
        а в качестве значения поля будут использоваться 1, 2 или 3.
    Значения могут быть загружены не только из строкового / текстового поля, но и из файлового поля (файл должен содержать значения с заданными разделителями).
  • Множественный выбор определяет сможет ли выбрать пользователь одно значение из списка или два и больше.
  • Отображение (выпадающим списком или переключателем) определяет то, каким пользователь увидит поле «Список».

Методы записи

Найти и записать значение по заголовку. По умолчанию, для изменения выбранного варианта через, скажем, действие «Запись» в поле нужно передавать значение соответствующего варианта списка. Данный метод позволяет использовать не значение, а заголовок. Например, имеется списочное поле с двумя вариантами: Да (значение = 1) и Нет (значение = 2). Чтобы установить второй вариант можно напрямую (через обычный стандартный метод) записать 2 либо через описываемый метод строку Нет. В обоих случаях результат будет одинаков.

Методы чтения

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

Это поле позволяет выбрать значение из списка документов, присутствующих в системе, и обеспечивает гиперссылку на выбранный документ. В качестве внутреннего значения в поле хранятся 36-символьные идентификаторы выбранных документов. Пользователи же видят отображаемые значения, которые формируются на основе отображаемых полей целевого документа, которое выбирается в настройках, описанных ниже. Если в целевом документе будет изменено это отображаемое поле, в ссылке оно также будет обновлено (если не отключена актуализация, см. параметр «Актуализация текста ссылки»).

При выполнении записи в поле через маршрут следует учитывать, что в поле будут записаны только те данные, которые удовлетворяют настройкам поля:

  • при отключенном множественном выборе, в поле можно записать только один идентификатор (если будет получено несколько — только первый);
  • при наличии фильтров в виджете формы в поле будут записаны только соответствующие им документы.

При сравнении значений ссылочных полей для операции равенства не принимается в расчет порядок следования идентификаторов в ссылке. То есть поле 1 с идентификаторами «документ1, документ2» будет признано равным полю 2 с идентификаторами «документ2, документ1».

Настройки

Настройки поля распределены по трем вкладкам:

  • Общие настройки
    • Тип ссылки. Определяет тип документов, которые могут быть в поле. Все дальнейшие манипуляции будут выполняться над документами этого типа. Возможно создание нетипизированной ссылки. В такое поле могут быть записаны ссылки на документы любых типов. Для нетипизированной ссылки доступны только две настройки:
      • Множественный выбор. Параметр определяет сколько документов может быть записано в поле: один или несколько
      • Допустимые типы документов. Можно выбрать несколько типов документов (можно и один, но фактически такая ссылка получается типизированной, и лучше этот тип выбрать в параметре «Тип ссылки»). Можно определить допустимые типы документов, которые может хранить поле. При использовании описываемого параметра ссылка становится фактически типизированной, но этот тип определяется пользователями в процессе работы. Ссылка примет тип из числа определенных в данном параметре, документ которого будет первым записан в это поле. Если переписать поле, Ссылка может изменить свой тип на основе, опять же, типа первого документа. В режиме формы такое поле позволяет пользователю сначала выбрать тип документа (из числа допустимых), а затем документ выбранного типа.
    • Отображаемое поле. Здесь нужно указать одно из полей(строковое, числовое или временное) выбранного типа документа. Отображаемое поле определяет представление выбранных в Ссылке документов. Если, например, для справочника стран выбрать поле «Название», ссылки на страны будут с текстом Казахстан, Молдова и пр.
    • Множественный выбор. Параметр определяет сколько документов (ссылок) сможет выбрать пользователь: один или несколько.
    • Сортировка по алфавиту. Параметр становится доступным при включенном множественном выборе. Если его включить, виджеты ссылки будут отображать документы, отсортированными в алфавитном порядке (само значение в поле, т.е. идентификаторы целевых документов, не сортируются). В выключенном состоянии поле «Ссылка» позволяет пользователю самому отсортировать выбранные значения методом drag-and-drop.
    • Обратная ссылка. Здесь можно выбрать поле целевого типа документа, которое будет использоваться для создания обратной ссылки, то есть ссылки на текущий документ. Например, в типе документа А есть ссылочное поле на тип документа Б. В настройках этого поля выбрано поле для обратной ссылки БП. Если в документе А1 в ссылочном поле будет выбран (записан) документ Б1, то в поле БП документа Б1 будет записан идентификатор документа А1. Если будет создан документ А2, также ссылающийся на Б1, то поле БП документа Б1 станет равным А2,А1, если оно множественное, или А2, если одиночное. При удалении документа Б из поля со включенной обратной ссылкой документа А, ссылка на А удаляется из соответствующего поля документа Б.
  • Форма
    • Виджет.В режиме формы поле может отображаться в виде списка с автоподстановкой, журнала, в котором можно выбирать документы, и списка с переключателями (список с переключателями не рекомендуется использовать на большом количестве документов; наилучшей производительности можно достичь, используя журнал). В списках полей отображаются документы вне зависимости от прав доступа пользователя к ним, а в журнале отображаются только те документы, к которым у пользователя есть доступ. При выборе из журнала у пользователя в поле «Ссылка» становится доступна кнопка в виде , после нажатия на которую открывает окно с журналом. Можно дополнительно настроить поведение поля при помощи дополнительных параметров:
      • Журнал. Здесь нужно выбрать журнал, который содержит документы того типа, к которому относится настраиваемое поле «Ссылка». Именно этот журнал будет отображаться у пользователя в окне «Ссылки».
      • Выбор вместо открытия. По умолчанию, в журнале после нажатия на строку с документом происходит открытие этого документа. Такое поведение можно изменить, включив данную опцию, чтобы после нажатия документ сразу выбирался в качестве значения поля «Ссылка», а не открывался.
      • Показывать кнопки журнала. Позволяет отключить верхнюю панель кнопок журнала.
    • Документы для ссылки. По умолчанию, можно выбирать все документы заданного типа. Для виджетов списков можно выбрать поле, из которого будут загружаться документы для выбора. Или воспользоваться фильтрами, описанными ниже.
    • Фильтры для документов в ссылке. Фильтры позволяют создавать связанные поля, когда значение одного поля зависит от другого. Например, если разместить в шаблоне две ссылки на «Структуру», во второй ссылке можно настроить фильтр на значение подразделения, равному значению первой ссылки. Такая связка позволит пользователю в первом поле выбирать подразделение, а во втором сотрудников из выбранного подразделения. Учтите, что при сохранении значение ссылочного поля проверяется на соответствие фильтру. Поэтому важно, чтобы значение первого поля (которое есть в фильтре) имело соответствующее сохраненное значение. И, поскольку поля в шаблоне сохраняются в том же порядке, в котором они находятся на вкладке «Поля» типа документа, первая ссылка в приведенном примере должна быть выше второй.
    • Кнопка создания документов. Если выбрать в этой настройке поля, сотрудникам (подразделениям), содержащимся в них, будет доступна кнопка создания документов для выбора.
    • Архивные документы. Если включить этот переключатель, в списке будут отображаться документы из архивной базы.
  • Просмотр
    • Разделитель. Параметр актуален при множественном выборе и позволяет изменить разделитель между ссылками, который используется по умолчанию (запятая). Помимо запятой доступны следующие разделители: точка, перевод на новую строку, запятая / точка с переводом на новую строку.
    • Показывать ссылку. По умолчанию, выбранные документы отображаются в виде гиперссылок. При необходимости можно отображать без ссылок, просто текстом.
    • Показывать всплывающее окно. Если включить эту настройку, в режиме просмотра поля при наведении курсора мыши на его значение будет показано всплывающее окно с соответствующим документом. Данная настройка недоступна при включенном показе образа документа.
    • Показывать образ документа. Если включить эту настройку, в режиме просмотра поле будет отображать документ, идентификатор которого будет находиться в его значении. Если документов будет несколько отобразится первый документ, и для отображения другого документа пользователю необходимо навести курсор на соответствующий документ. Отображаемый документ имеет некоторые ограничения: при наличии вкладок, отображается только первая, скрывается поле «Дерево документов» и пр. Данная настройка недоступна при включенном показе всплывающего окна.
    • Актуализация текста ссылки. Значение отображаемого поля выбранного документа может измениться, что приведет к изменению текста ссылки. Если отключить актуализацию текст ссылки изменяться не будет. Отключенную актуализацию уместно использовать для Структуры, чтобы после того, как должность займет новый сотрудник, в старых документах не появился этот новый сотрудник вместо прежнего.

Методы записи

  • Добавить к содержимому поля. Если к примеру, в нашем ссылочном поле уже есть Иванов с Петровым, то, используя этот метод легко добавить Сидорова.
  • Удалить из содержимого поля. А этот метод позволяет удалить, скажем, Иванова и оставить только Сидорова.
  • Удалить n ссылок из содержимого поля. Метод позволяет удалить из начала или конца поля заданное количество ссылок.
  • Установить родительский документ. Как правило, родительский документ — это документ, из которого создается данный документ, например, действием «Создание». Однако, возможны ситуации, когда родительский документ необходимо установить отдельно. Например, пользователь создал ответный (на входящий) исходящий документ не из входящего, а просто из журнала; чтобы установить связь в таком случае пригодится этот метод. В качестве аргумента в методе передается родительский документ. Если он будет пуст, документ (документы) в ссылке становится «сиротой», т.е. у него не будет родительского документа. Следует учитывать, что описываемый метод игнорирует настройку «Включить в дерево документов» и устанавливает родительский документ вне зависимости от ее значения.

Методы чтения

  • Получить идентификатор первого значения поля. Если в поле включен множественный выбор, данный метод позволяет получить идентификатор первого по порядку документа.
  • Получить гиперссылку на первое значение поля. Возвращается HTML-код гиперссылки на первый документ в поле.
  • Получить текст первой ссылки из поля. Возвращается отображаемое значение отображаемого поля первого документа ссылки.
  • Получить количество ссылок в поле. Возвращает числовое значение, соответствующее количеству записанных в поле ссылок.
  • Получить отображаемое значение поля без гиперссылок. Если, к примеру, в режиме просмотра мы увидим Москва, Киев, Ереван с гиперссылками на соответствующие городам документы, то, используя этот метод, можно получить текст без гиперссылок.
  • Получить отображаемое значение поля с гиперссылками. Получим то, что видим в поле (если отключили отображение с гиперссылками в его настройках). Полученный HTML код можно записать, скажем, в текстовое поле.
  • Получить значение заданного поля по ссылке. Все описанные выше методы манипулировали только с одним полем документа, доступного по ссылке, - тем, что администратор выбирает в параметре «Отображаемое поле». Этот же метод позволяет получить значение любого поля документа по ссылке. Например, в ссылочном поле выбран Актюбинск (отображаемое поле «Название города» типа документа «Справочник городов»). Используя этот метод, можно легко получить и название страны для этого города. Для этого нужно, собственно, выбрать этот метод, а в форме этого метода выбрать поле, значение которого нужно получить.
  • Получить отображаемое значение заданного поля документа по ссылке. В примере описанного выше метода мы можем получить не совсем Казахстан, а что-то вроде вот такого f957c7f3-6876-11e8-a2ab-201a06f86b88. Это произойдет в том случае, если поле Страна нашего гипотетического справочника городов является ссылкой на справочник стран. Чтобы получить все-таки Казахстан, следует использовать этот метод (в этом методе как и в предыдущем доступен параметр для выбора поля, отображаемое значение которого нужно получить). Все дело в том, что любая Ссылка на самом деле хранит идентификаторы документов, а не значение отображаемого поля, который видит пользователь в Ссылке.
  • Получить родственные документы. Метод позволяет получить предков, потомков и братьев документов поля по дереву родственных документов или дереву, которое выстраивается по указываемому родительскому полю. Например, если применить этот метод к ссылке на «Структуру», то можно получить все подразделения, в которые входит сотрудник, выбранный в поле, его коллег или входящих в отдел сотрудников (если выбрано подразделение). В настройках метода есть переключатель, позволяющий включить в результат исходное значение поля, чтобы, например, получить содержимое (потомков) подразделения вместе с самим подразделением.
  • Получить название типа документа. Если в поле несколько документов, то возвращается тип документа первого из них.
  • Получить идентификатор типа документа. В отличие от предыдущего метода, этот возвращает не название типа документа, а его уникальный идентификатор.
  • Получить идентификатор родительского документа. При наличии родительского документа, этот метод возвращает его идентификатор. Как правило, родительский документ — этот документ, из которого создается данный документ, например, действием «Создание».

Строка

В отличие от поля «Текст» поле «Строка» может хранить меньше символов, не поддерживает HTML и в качестве виджета формы использует обычную строку ввода (при вводе более 170 символов виджет для удобства ввода изменяется на многострочный, однако вводить перевод строк запрещено).

Настройки

  • Максимальное количество символов, которое может быть введено в поле пользователем (не более 16 777 215 символов). По умолчанию, 256 символов.
  • Поле с подсказками. Можно настроить подсказки для удобства ввода данных пользователем в поле. Подсказки могут быть загружены из поля либо из файла (поле должно содержать идентификатор файла или абсолютный или относительный (относительно рабочего каталога Дóкви) путь к файлу) - каждая строка соответствует одной подсказке. При наличии выбранного поля подсказок становится доступным параметр «Только подсказки», а параметр «Маска» скрывается.
  • Только подсказки. Параметр доступен при выбранном поле с подсказками. Если включить эту настройку, пользователь сможет выбрать значение в поле только из подсказок. Если выключить, то пользователь сможет ввести в поле собственное значение, отсутствующее в подсказках.
  • Маска ввода, которая позволяет определить шаблон, которому должны отвечать вводимые пользователем данные. К примеру, для номера телефона можно применить маску вида +9(999)999-99-99. Поле с такой маской не позволит пользователю ввести телефон вот таким образом 777 77-77-777 или 7777777777 или любым иным, а только +1(234)567-89-01.
    В шаблоне маски можно использовать следующие спецсимволы:
    • a - любой буквенный символ,
    • 9 - любой цифровой символ,
    • * - любой буквенно-цифровой символ,
    • ? - позволяет сделать часть маски необязательной (все, что после ? пользователь сможет не вводить)
    Параметр доступен, если не выбрано поле подсказок.

Методы записи

  • Добавить в конец поля - добавляет данные к существующему значению в поле.
  • Вставить в начало поля - добавляет данные перед существующим значением в поле.
  • Добавить в конец поля через разделитель — добавляет к существующему в поле значение разделитель и указанные данные.
  • Записать множество значений. При помощи этого метода можно сформировать значение поля из множества других полей, переменных и значений, введенных администратором вручную. В параметрах метода находится кнопка +, которая позволяет добавлять новые значения, которые при запуске метода действием Запись будут конкатенироваться.
  • Удалить первые n символов. При помощи данного метода можно удалить заданное количество символов слева. Количество символов может быть введено вручную администратором или получено из какого-либо поля.
  • Удалить последние n символов. Метод аналогичен предыдущему, с той разницей, что удаляет символы справа. Например, если поле содержит строку «Скачать СЭД бесплатно», то метод с количеством символов, равным 10, вернет: «Скачать СЭД».
  • Найти и заменить. Метод позволяет найти фрагмент в содержимом поле и заменить его на заданный. Например, применив к полю со значением «Мне нравится Documentov своей гибкостью» описываемый метод с заменой «Documentov» на «Doc-v», мы получим следующее значение: «Мне нравится Doc-v своей гибкостью». Можно найти и заменить несколько значений, установив переключатель «Множественное значение» и введя разделитель. Например, чтобы заменить detrix и documentov на doc-v следует включить множественный выбор, ввести разделитель в виде запятой, а в качестве искомого значения передать detrix,documentov, чтобы получить doc-v,doc-v.

Методы чтения

  • Получить первые n символов. Метод имеет параметр, который позволяет указать количество возвращаемых символов.
  • Получить подстроку. Этот метод позволяет разбить строку на подстроки и получить одну из них. Разбивка осуществляется по разделителю, который может быть введен администратором вручную или получен из какого-либо поля системы (по умолчанию, используется запятая); таким же образом может быть определен порядковый номер возвращаемой части строки (части нумеруются, начиная с 0). Например, строковое поле содержит значение "качество, скорость, цена". Если в качестве разделителя передать описываемому методу запятую, а в качестве порядкового номера 1, то метод вернет "скорость".
  • Получить строку в верхнем регистре. Возвращает содержимое поле прописными буквами.
  • Получить строку в нижнем регистре. Этот метод возвращает строку из поля строчными буквами.
  • Получить строку в заданном падеже. Метод позволяет указать падеж, в котором будет выполнено склонение содержимого поля. Метод настроен на преобразование названий подразделений, должностей и имен сотрудников (лучше передавать полное ФИО) из именительного падежа в заданный.
  • Получить цифровые символы. Метод извлекает из содержимого поля числовые символы и возвращает их. Например, применив метод к значения А17, можно записать в числовое поле 17.
  • Получить случайный набор из n символов. Метод является по сути генератором случайных наборов символов. Количество символов в наборе можно определить в методе; если количество не будет задано, метод вернет набор из 32 символов. Метод можно настроить на использование только числовых символов.

Таблица

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

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

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

Поле хранит данные в формате двухуровневого массива JSON:

[
["ячейка первой строки первого столбца", "ячейка первой строки второго столбца"],
["ячейка второй строки первого столбца", "ячейка второй строки второго столбца"]
]

Настройки

  • Столбцы таблицы. Для каждого столбца указывается тип поля. Может быть выбран любой тип из перечисленных ниже: На вкладке «Атрибуты» столбца доступны параметры:
    • В таблице: показывать или скрывать, - определяет будет ли столбец отображаться в таблице. В поле может храниться какая-то служебная информация и в этом случае его можно будет скрыть из таблицы.
    • В форме: показывать или скрывать, - позволяет скрыть значение столбца в форме, которая отрывается, когда пользователь добавляет новую строку или изменяет существующую, то есть фактически определяет возможность изменения столбца пользователем.
    • Выравнивание: по левому краю, по правому, по центру или ширине.
    • Обязательно для заполнения. Пользователь не сможет сохранить строку, пока не заполнит этот столбец.
    • Уникальность. Если включить это атрибут, в каждую строку таблицы пользователь должен будет ввести уникальное значение в этот столбец. Проверка выполняется только при наличии значения, то есть можно ввести несколько пустых значений для столбца со включенной уникальностью (если такое поведение нежелательно, необходимо включить для данного столбца обязательность заполнения).
    • Автонумерация. Если включить этот атрибут при сохранении таблицы в каждую строку данного столбца будет записан порядковый номер строки. Настройка доступна для строковых и числовых столбцов.
  • Категоризация. В параметре можно выбрать столбец, по которому данные в таблице будут группироваться.
  • Разбивка на страницы. При большом количестве строк, поле «Таблица» может потребовать время для отрисовки в браузере пользователя. Для ускорения загрузки можно включить этот атрибут, чтобы показывать на одной странице не более заданного количества строк.
  • Экспорт в XLSX. В режиме просмотра можно вывести кнопку для экспорта содержимого таблицы в XLSX-файл.

Методы записи

  • Добавить строку. Строку можно добавить в конец таблицы либо вставить перед строкой с заданным порядковым номером (параметр «Вставить перед строкой» / «Вставить в конец»; если этот параметр не задавать, строка будет вставлена в конец таблицы; нумерация начинается с 1). Сама вставляемая строка задается при помощи табличного параметра «Данные строки», в котором можно определить значения столбцов табличного поля.
  • Изменить строку. Метод имеет два параметра:
    • Строка для изменения, которую можно выбрать по ее порядковому номеру (нумерация строк начинается с 1) или методом поиска на соответствие заданным фильтрам.
    • Таблица новых значений столбцов табличного поля.
  • Удалить строку. У метода есть один параметр - строка для удаления, которая может быть определена по ее порядковому номеру (нумерация начинается с 1) или поиском на соответствие заданным фильтрам.

Методы чтения

  • Получить количество строк. Возвращает количество строк в таблице.
  • Получить значение ячейки. Метод возвращает значение ячейки, находящейся на пересечении строки и столбца таблицы. Строка таблицы может быть задана по номеру (нумерация начинается с 1) или по поиску на основе заданных фильтров.
  • Получить сумму по столбцу. Можно выбрать любой столбец, и метод вернет сумму всех строк таблицы по этому столбцу. Если столбец будет нечисловой, метод выполнит конкатенацию строковых значений столбца через заданный разделитель. Можно установить переключатель уникальности, чтобы одинаковые значения строк не дублировались в итоговом значении.

Таблица документов

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

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

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

Настройки

Настройки поля разделяются на две вкладки:

  • Таблица:
    • Тип документа определяет документы, которые будут отображаться в таблице. Выбрать можно только один тип документа.
    • Столбцы таблицы. В качестве значений для столбцов можно выбирать поля целевого типа документа с применением методов чтения. При добавлении (изменении) столбца можно указать его тип (строка, текст, время, целое и вещественное числа, изображение - для отображения изображения используется метод «Получить Base64 (HTML) первого изображения» поля типа «Файл»), которые влияют на формат отображения и алгоритм сортировки данных по столбцу. Для столбца также можно настроить:
      • Название (заголовок) столбца.
      • Ширина столбца, которую можно указать в виде числа или числа с единицей измерения (px, rem, % и т.д., по умолчанию, используется px).
      • Доступ к полю. Если оставить этот параметр пустым, все пользователи будут видеть столбец этого поля в таблице журнала. Если в параметре выбрать одно или несколько настроечных полей, то столбец смогут видеть только те пользователи, которые непосредственно находятся в этих полях, либо относятся к подразделениям из этих полей.
      • Формат времени (параметр доступен для столбцов временного типа).
      • Разделитель триад для числовых столбцов (вместо 1000000 - 1 000 000 при установленном разделителе-пробеле).
      • Символ разделителя целой и дробной частей для вещественного числа.
      • Количество знаков после запятой для вещественного числа (точность числа).
      • Итоговое значения для числовых полей. Если включить этот параметр, внизу таблицы будет выводиться итоговая сумма по полю.
    • Категоризация. Параметр позволяет группировать строки таблицы по категориям с выводом количества документов в категории. При отключенной категоризации в таблице автоматически включается разбивка на страницы по 20 документов на каждой.
    • Кнопки документа. В таблице можно вывести (в самый правый столбец или в строку ниже строки с документом) кнопки документа. Кнопки будут отображаться только в том случае, если пользователь, открывший документ с таблицей будет иметь к ним доступ (в соответствующем документе) и документ будет находиться на соответствующей точке.
    • Стили позволяют настраивать отображение строк и ячеек таблицы в зависимости от значений отображаемого документа.
    • Сортировка позволяет сформировать данные для сортировки документов в таблице.
    • Экспорт в XLSX. В режиме просмотра можно вывести кнопку для экспорта содержимого таблицы в XLSX
  • Документ:
    • Инициализация значений полей. Позволяет определить значения полей в создаваемом документе.
    • При нажатии на документ в таблице в режиме просмотра: открыть документ во всплывающем модальном окне, открыть на текущей странице или отменить любую реакцию.
    • При удалении документа из таблицы можно переместить его на заданную точку маршрута. Обратите внимание, что удаление документа из таблицы не вызывает удаление документа из системы. Если его необходимо удалить также и из системы, это можно сделать на точке маршрута, которую определить в данном параметре.

Методы записи

  • Добавить документ в таблицу. Метод добавляет переданные идентификаторы документов к содержимому поля.
  • Удалить документ из таблицы. Позволяет удалить один или несколько документов из таблицу. В качестве аргумента метод принимает идентификатор удаляемого документа (если идентификаторов несколько, они должны быть перечислены через запятую), например, любое поле типа «Ссылка».
  • Удалить документы из таблицы с начала / конца. Метод позволяет удалить заданное количество документов из начала или конца.

Методы чтения

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

Текст

Поле позволяет хранить текст объемом до 4 ГБ.

  • Текстовый редактор. Для ввода этого текста может применяться WYSIWIG-редактор, который включается администратором в настройках поля установкой галочки в параметре "Отображать редактор". В этом случае поле начинает выполнять введенный в него HTML-код. В редакторе доступны возможности настройки шрифта текста, его размера, начертания, цвета, выравнивания текста, вставки таблиц, гиперссылок, изображений. Если редактор отключен, поле не выполняет HTML-код, а просто выводит теги.
  • Максимальная ширина вставляемого изображения.
  • Максимальная высота вставляемого изображения.
  • Максимальный размер файла загружаемого изображения.

Методы записи

  • Добавить текст в конец поля
  • Добавить текст в конец поля на новую строку
  • Добавить текст к конец поля через разделитель. У этого метода есть параметр, позволяющий указать разделитель. В качестве разделителя могут использоваться HTML тэги.
  • Записать множество значений. При помощи этого метода можно записать значения нескольких полей, переменных или значений, введенных вручную.
  • Вставить текст по шаблону. В данном методе есть один параметр - шаблон, в который можно вводить любой текст, вставлять поля и переменные. При запуске шаблон будет обработан и полученное значение будет записано в поле.
  • Найти и заменить. Метод позволяет найти фрагмент в содержимом поле и заменить его на заданный. Например, применив к полю со значением «Мне нравится Documentov своей гибкостью» описываемый метод с заменой «Documentov» на «Doc-v», мы получим следующее значение: «Мне нравится Doc-v своей гибкостью». Можно найти и заменить несколько значений, установив переключатель «Множественное значение» и введя разделитель. Например, чтобы заменить detrix и documentov на doc-v следует включить множественный выбор, ввести разделитель в виде запятой, а в качестве искомого значения передать detrix,documentov, чтобы получить doc-v,doc-v.
  • Вставка изображений из буфера обмена. Если включить данную настройку, пользователь сможет скопировать изображение в любой программе просмотра изображений в буфер обмена и вставить в редактор. На такие изображения не распространяются настройки, описанные выше.

Методы чтения

  • Получить первые n символов, где n указывается в параметре метода.
  • Получить строку n. При помощи этого метода можно получить строку поля с заданным порядковым номером. Нумерация строк начинается с 0.
  • Получить количество строк. Метод возвращает количество строк в данном текстовом поле.
  • Получить подстроку. Метод позволяет разбить содержимое поля на подстроки и получить одну из них. Для разделения необходимо настроить разделитель, и указать порядковый номер подстроки - ее порядковый номер (отсчет начинается с нуля).
  • Получить чистый текст (без HTML). Метод возвращает содержимое поля с вырезанными HTML-тегами.

Файл

Поле позволяет пользователям загружать файлы. Загрузка файлов осуществляется при помощи кнопки добавления файла либо методом Drag’n’Drop (файл необходимо перетащить и бросить в область правее кнопки). Доступ к загруженным файлам предоставляется в полном соответствии с правилами доступа к документам, то есть - нет доступа к документу, нет доступа и к любому из файлов, загруженных в любое файловое поле этого документа. Если файл загружен в настроечное поле, то доступ к такому файлу предоставляется для любого пользователя.

После загрузки файлы размещаются в каталоге storage/files, и каждому файлу присваивается уникальный идентификатор. При копировании файла из одного поля в другое, копируется только этот идентификатор. При удалении файла из поля, он не удаляется сразу из файловой системы. Окончательное удаление осуществляет задача планировщика «Оптимизация данных», которая вначале проверит использование файла в полях системы, которые могут использовать файлы (помимо файлового поля - «Текст» и «Обсуждение»).

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

Настройки

  • Предварительный просмотр. Для файлов форматов JPEG, PNG, GIF, PDF, XLS(X), DOC(X), PPT(X), ODS, ODT, ODP и пр. возможен предварительный просмотр их содержимого прямо в документе (файлы офисных форматов отображаются при включенной настройке «Приложения / Просмотр офисных файлов»). Внимание! При наличии визуальной ЭЦП в PDF-файле она отображается, но не проверяется. В предварительном просмотре файлов, по умолчанию, отображаются кнопки печати и загрузки файлов, которые можно скрыть при помощи соответствующего переключателя. В шаблоне может работать только одно поле файлового типа с включенным предварительным просмотром.
  • Просмотр файлов в браузере. Некоторые типы файлов (например, PDF) браузеры могут не загружать, а отображать пользователю. Данная настройка включает такое поведение.
  • Любые поддерживаемые файлы / Только изображения. Предварительный просмотр может работать в режиме любых поддерживаемый файлов. В этом режиме для предварительного просмотра используется специальный блок с дополнительными возможностями (разбивка на страницы, масштабирование, поворот и пр). В режиме изображений предварительный просмотр просто отображает каждый файл как картинку заданного (максимального) размера.
  • Максимальная ширина изображения. Этот и нижеприведенный параметр доступны для предварительного просмотра изображений и определяется максимальные ширину и высоту изображения в просмотре в пикселах.
  • Максимальная высота изображения.
  • MIME-типы. По умолчанию, пользователи могут загружать в поле файлы любых типов. При необходимости можно ограничить типы выбранными в этом списке.
  • Максимальный размер загружаемого файла. Максимальный возможный размер загружаемого в поле файла в килобайтах. Если значение не указано либо равно 0, действуют ограничения, установленные в настройке MaxFileSize в секции [File] конфигурационного файла doc-v.conf (значения вводятся в байтах или с применением литер K (килобайты), M (мегабайты), G (гигабайты)).
  • Максимальное количество загружаемых файлов. Максимальное количество файлов, которое может быть загружено в поле. Если значение не указано либо равно 0, количество не ограничивается.
  • Разделитель между файлами: запятая, точка, перевод на новую строку, запятая / точка с переводом на новую строку.

Методы записи

Файловое поле может принимать для записи не только идентификаторы файлов, но и последовательность в формате Base64, на основе которой создаст файл (название файла будет file_xxxxxxxx), а также JSON-объект:

{
"name": "Название файла",
"base64": "Содержимое файла в кодировке Base64"
}

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

  • Добавить к содержимому поля. Метод имеет один параметр, который должен определить идентификатор (один или несколько, перечисленных через запятую), который будет добавлен к полю. В метод также можно передавать Base64 / JSON c Base64, на основе которого будет создан файл (или файлы) в файловом хранилище, а в поле будет добавлен идентификатор созданного файла (файлов).
  • Удалить из содержимого поля. Имеет такой же параметр, как и метод добавления, только вместо добавления удаляет полученные идентификаторы файлов из поля.
  • Скопировать файл. При помощи этого метода можно передать полю полный или относительный (относительно рабочего каталога Дóкви) путь к файлу в файловой системе сервера, чтобы поле загрузило этот файл в Дóкви. Загружать файлы можно не из любого каталога файловой системе, а только из указанных в параметре AllowedCopyDirs в секции [File] конфигурационного файла doc-v.conf (по умолчанию, загрузка ограничена каталогом /opt/doc-v/storage).

Методы чтения

  • Получить идентификатор первого файла поля.
  • Получить отображаемое значение поля без гиперссылок. Метод возвращает названия файлов, перечисленные через запятую.
  • Получить URL первого файла в поле. Метод позволяет получить URL первого файла в поле. Доступ к файлу по ссылке будет ограничен доступом к файловому полю, из которого он будет получен.
  • Получить HTML-код гиперссылок для всех файлов поля. Возвращает названия файлов в виде гиперссылок (HTML-тег <a>) на их скачивание с разделителем, указанным администратором в параметре «Разделитель между файлами». Доступ к файлам по ссылкам будет ограничен доступом к файловому полю, из которого они получены.
  • Получить количество файлов в поле. Возвращает число, соответствующих количеству файлов, загруженных в данное поле документа пользователем.
  • Получить содержимое файлов поля. Получить текстовое содержимое файлов поля. Если в поле находятся текстовые файлы, метод просто возвращает их содержимое. Если в поле загружены файлы офисных форматов (docx/odt, xlsx/ods и пр.) при включенном предварительном просмотре файлов метод извлекает текстовое содержимое из них. Если в поле имеются файлы изображений, метод выполняет оптическое распознавание (OCR) при наличии установленной программы Tesseract и возвращает полученный текст (на текущий момент OCR поддерживается только при работе сервера Дóкви на ОС Linux).
  • Получить содержимое первого файла в Base64.
  • Получить JSON с названием и содержимым файлов в Base64. Метод возвращает массив объектов JSON: {
      "name": "Название файла",
      "base64": "Содержимое файла в кодировке Base64"
    }
  • Получить Base64 (HTML) первого изображения. Метод перебирает файлы в поле, который останавливает при нахождении первого файла с MIME-типом image/* и возвращает Base64 этого файла в формате: data:MIME-тип;base64, Base64_файла Полученный результат может использоваться для отображения в поле типа «Изображение» журнала документов и поля «Таблица документов».
  • Получить все файлы с измененными размерами (только для изображений). В настройках метода устанавливаются максимальные значения ширины и высоты изображений (в пикселях). Если в числе файлов в поле будут изображения типов PNG, JPEG, GIF, TIFF с размерами, превосходящими заданные, будут созданы новые файлы с уменьшенными размерами. Метод рекомендуется использовать для вывода изображений в журнале и поле «Таблица документов», если размеры загружаемых в документы изображений различные.
  • Получить офисные файлы в PDF. При включенном предварительном просмотре файлов данный метод выполняет преобразование файлов офисных форматов (doc(x), xls(x) и пр.) в PDF. Метод возвращает идентификаторы PDF-файлов в соответствии с файлами, идентификаторы которых записаны в поле. Например, если в поле записаны файлы f1.docx, f2.zip, f3.xlsx метод создаст и вернет идентификаторы двух PDF-файлов: f1.docx.pdf и f3.xlsx.pdf.
  • Получить полный путь каждого файла в поле. Физически файлы, загружаемые в поле, хранятся в файловой системе сервера. Этот метод позволяет получить полный путь к каждому файлу, загруженному в поле (через запятую).
  • Получить общий размер файлов (в байтах).
  • Получить публичную ссылку на первый файл в поле. По публичной ссылке можно загрузить файл без аутентификации в системе. В методе можно настроить продолжительность действия ссылки (в секундах); по-умолчанию используется 10 секунд.
  • Получить все файлы из поля в ZIP. Метод создает ZIP-архив, который включает все файлы, имеющиеся в поле, и возвращает идентификатор архивного файла. Метод позволяет настроить имя zip-файла.

Хранилище

Поле «Хранилище» является высокоуровневой реализацией процессами управления товарно-материальными запасами (ТМЗ). Поле реализует операции прихода ТМЗ на склад, перемещения с одного склада на другой склад и списания. Поддерживает штрих-кодирование.

На рисунке отображено поле в режиме формы у пользователя, в которой пользователь может изменить время операции, выбрать склад, на который осуществляется приход, вводить ТМЗ при помощи штрих-кода или вручную через таблицу ТМЗ.

Настройки

Настройки поля распределены по 4 вкладкам:

  • Операция
    • Тип хранилища. Поле может работать с различными складами, на которых могут храниться разнообразные полезные ценности. Например, компания может заниматься продажей апельсинов и иметь собственный небольшой склад для хранения оргтехники. Поле «Хранилище» позволяет управлять как апельсинами, так и компьютерами, и для каждого из них нужно создать отдельный тип хранилищ (складов). Типы хранилищ создаются через системный справочник «Типы хранилищ», включающий следующие поля:
      • Название типа склада. Например, «Склад ТМЗ».
      • Тип документа. Тут необходимо выбрать тип документа справочника ТМЗ, который нужно создать самостоятельно и хранить в нем ТМЗ. В этом справочнике должны поля для хранения названия ТМЗ, штрих-кода, артикула (строковые), количества, цены (числовые), веса (необязательно). В остальных полях описываемого справочника следует выбирать эти поля.
      • Поле наименование. Значение этого поля будет отображаться в таблице хранилище, когда пользователи будут выбирать ТМЗ.
      • Поле штрих-кода. По этому полю будет осуществляться поиск введенного пользователем в поле «Хранилище» (вручную или сканером) штрих-кода ТМЗ.
      • Поле количества. В этом поле «Хранилище» будет записывать актуальный остаток ТМЗ на складе.
      • Поле покупной цены. Из последней операции прихода ТМЗ цена будет записываться в это поле.
      • Поле цены продажи. В таблице операции списания поля «Хранилище» можно отобразить это поле.
      • Поле веса. На текущий момент поле не используется и создана для будущего развития.
    • Операция. Поле «Хранилище» поддерживает операции:
      • Прихода (ТМЗ на склад)
      • Расхода (списание ТМЗ со склада)
      • Перемещения (со склада на склад)
      • Из поля (вид операции может определить пользователь; для этого лучше всего создать список со следующими вариантами:
        Значение: 1 Заголовок: Приход
        Значение: 2 Заголовок: Расход
        Значение: 3 Заголовок: Перемещение
        Заголовки можно менять на свое усмотрение, но значения должны быть 1, 2 или 3 (соответственно, приход (1), расход (2) или перемещение (3))
    • Время операции. Может устанавливаться автоматически во время проведения или изменяться пользователем. Речь идет о времени прихода / расхода / перемещения на складе. То есть можно сделать, например, приход задним числом, если позволить пользователю изменять время операции.
    • Проведение операции прихода / расхода / перемещение может осуществляться автоматически при сохранении поля или по вызове методу поля «Хранилище» (например, по кнопке). Во втором случае, даже, если документ с полем будет сохранен, никаких изменений на складах не произойдет до тех пор, пока не будет выполнен метод поля.
  • Хранилище. На этой вкладке определяются хранилища (склады).
    • Из хранилища / в хранилище. В зависимости от вида операции можно определить склад списания и склад поступления, а также предоставить возможность пользователю самостоятельно изменять склады. Хранилища определяются в системном справочник «Хранилище», который, по умолчанию, имеет поля:
      • Название хранилища (склада)
      • Тип хранилища (выбирается из системного справочника «Тип хранилища»)
      • Поле количества (в справочнике «Тип хранилища» можно определить поле для записи количества в справочнике ТМЗ, но, если складов несколько и хочется отобразить количество ТМЗ на каждом складе, можно добавить соответствующее количество полей в справочник ТМЗ и для каждого склада (хранилища) определить собственное поле — поле «Хранилище» будет записывать после проведения операции количество в соответствующие поля)
    • Фильтры хранилищ (складов). Если у пользователя есть возможность изменения хранилища, по умолчанию, он может вызывать любое, соответствующее выбранному на первой вкладке типу. Можно ограничить его в выборе, добавив соответствующие фильтры.
      Можно в справочнике «Хранилище» добавить поле «Кладовщик» (Ссылка на Структуру). И в фильтрах добавить условие: если кладовщик содержит переменную текущий пользователь. Тогда пользователь сможет выбрать только те склады, на которых он является кладовщиком.
      Фильтры определяются отдельно для каждой операции (приход, расход, перемещение). Причем для перемещения определяются отдельно для склада, с которого идет списание (расход), и для склада, на который идет поступление (приход). Какие фильтры отобразятся зависит от выбранной операции; если операция — перемещение или из поля, то будут доступны все фильтры.
  • Форма. На этой вкладе определяется внешний вид поля, каким его увидит пользователь.
    • Отображать поле для ввода штрих-кода. Если включить этот параметр, пользователь сможет не заполнять таблицу с ТМЗ вручную, а вводить штрих-коды в специальное поле вручную или при помощи сканера. Система будет осуществлять поиск соответствующего ТМЗ в справочнике, и, если найдет введенный штрих-код, запишет этот ТМЗ в таблицу поля. Если в таблице такой ТМЗ уже будет, будет увеличено его количество на 1.
    • Отображать поле для выбора валюты прихода. Если включить эту настройку при приходе пользователь сможет выбрать валюту прихода на основе появившейся таблицы. При выполнении операции проведения все цены в таблице ТМЗ будут пересчитаны на основе курса выбранной валюты. В этой таблице необходимо добавить каждую возможную валюту и указать:
      • Код. Внутренний произвольный код, который не должен изменяться.
      • Обозначение валюты, которое пользователь увидит в списке валют.
      • Курс обмена — поле, содержащее курс обмена. Для основной валюты можно не выбирать поле или выбрать поле, содержащее 1. Цены в таблице ТМЗ будут умножаться на значение курса обмена.
    • Таблица ТМЗ может быть пустой. Можно запретить сохранения поля «Хранилище» с незаполненной таблицей ТМЗ (это может понадобиться, если заполнение поле может быть осуществлено позже пользователем или системой через маршрут при помощи методов, описанных ниже). Следующие параметры определяют столбцы таблицы ТМЗ для каждой операции и отображаются соответственно ей. Если выбрана операция перемещения или из поля, будут отображены настройки всех таблиц.
    • Таблица расхода ТМЗ имеет следующие настройки:
      • Отображать штрих код.
      • Отображать артикул.
      • Отображать цену реализации (это установленная цена, она в справочнике ТМЗ).
      • Показывать поле для ввода цены (но ввести можно и другую цену со скидкой или наценкой); можно настроить количество знаков после запятой.
      • Отображать остатки товара (поле «Хранилище» в любом случае выполняет проверку на количество и не позволит списать со склада больше, чем на нем есть).
    • Таблица прихода ТМЗ:
      • Отображать штрих-код.
      • Отображать артикул.
      • Показывать поле для ввода цены (поступления, то есть цены поставщика); можно настроить количество знаков после запятой.
    • Таблица перемещения ТМЗ:
      • Отображать штрих-код.
      • Отображать артикул.
      • Отображать остатки товара.
    • Фильтры ТМЗ позволяют ограничить ТМЗ, доступные для выбора в таблице (в списке автоподстановки; на ввод через штрих-код эти ограничения не распространяются). Фильтры определяются отдельно для операций прихода и расхода / перемещения.
    • Транзакция
      • Добавлять документ в поле справочника ТМЗ. Атрибут полезен для, например, формирования истории движений по ТМЗ. Если в справочник ТМЗ добавить поле «Таблица документов», при помощи данного атрибута можно записывать все документы движений по ТМЗ (то есть документы, содержащие поле «Хранилище» в эту таблицу).
        Если в справочник ТМЗ добавить поле «Таблица документов», при помощи данного атрибута можно записывать все документы движений по ТМЗ (то есть документы, содержащие поле «Хранилище» в эту таблицу).
      • Записывать в поле покупной цены. В поле покупной цены можно записывать значение соответствующего поля таблицы ТМЗ либо рассчитывать среднюю арифметическую себестоимость (метод FIFO).

Методы записи

  • Провести операцию. Этот метод запускает проведение операции (то есть ее отображение в Хранилище (на складе)). Метод может быть вызван вне зависимости от настроек поля - как с автоматическим проведением, так и без него.
  • Отменить проведение операции. Этот метод отменяет проведение операции (то есть ее отображение в Хранилище (на складе)). Метод может быть вызван вне зависимости от настроек поля - как с автоматическим проведением, так и без него.
  • Добавить ТМЗ. Метод добавляет ТМЗ в таблице и содержит параметры:
    • Добавляемый ТМЗ
    • Количество ТМЗ
    • Цена ТМЗ

Методы чтения

  • Получить количество заданного объекта ТМЗ. Метод позволяет узнать сколько штук (килограмм и т. п.) поступило заданного ТМЗ, иначе говоря, получить количество из таблицы ТМЗ по заданной позиции.
  • Получить остаток заданного объекта ТМЗ. Метод возвращает остаток по заданному ТМЗ после проведения операции.
  • Получить цену заданного объекта ТМЗ. Возвращает цену заданного объекта из таблицы ТМЗ.
  • Получить серийные номера (идентификаторы) заданного объекта ТМЗ. Метод возвращает идентификаторы документов серийных номеров указанного ТМЗ, перечисленные через запятую.
  • Получить серийные номера (заголовки) заданного объекта ТМЗ. Метод возвращает заголовки документов серийных номеров указанного ТМЗ, перечисленные через запятую.
  • Получить хранилище по операции, то есть документ типа «Хранилище» (склад), на который осуществлялся приход / списания ТМЗ.
  • Получить время операции.
  • Получить кол-во ТМЗ (позиций) в поле. Возвращает количество строк в таблице ТМЗ.
  • Получить кол-во ТМЗ (штук) в поле. Возвращает сумму по полю «Количество» в таблице ТМЗ.
  • Получить отчет по остаткам в хранилище. Этот метод формирует отчет с полями: ТМЗ, Остаток по заданному хранилищу (складу) на заданную дату. Метод может вызываться из любого поля «Хранилище» вне зависимости от его настроек и операции. Отчет возвращается в формате JSON, который используется в поле «Динамическая таблица», поэтому «Запись» лучше выполнять в поле этого типа.
  • Получить отчет по хранилищу с детализацией расхода. Метод формирует отчет с полями: ТМЗ, Приход, Остаток и Расход по заданному хранилищу (складу) с расшифровкой расхода по операциям перемещения на другие склады (если их нет, расшифровки не будет) на заданный период времени. Метод может вызываться из любого поля «Хранилище» вне зависимости от его настроек и операции. Отчет возвращается в формате JSON, который используется в поле «Динамическая таблица», поэтому «Запись» лучше выполнять в поле этого типа.
  • Получить отчет по документам. Метод формирует отчет с полями: ТМЗ, Количество. Отчет формируется на основе проведенных текущим полем «Хранилище» операций в переданных через метод документах. Отчет возвращается в формате JSON, который используется в поле «Динамическая таблица», поэтому «Запись» лучше выполнять в поле этого типа.
    Отчет может быть полезен, например, для формирования списка товаров, полученных от некоего поставщика за определенный период времени. Перед вызовом этого метода следует сначала подготовить список документов-приходом от заданного поставщика при помощи действия «Выборка».
  • Получить среднюю себестоимость заданного объекта ТМЗ из хранилища. На основе остатков ТМЗ в хранилище и цены прихода этих остатков метод вычисляет среднюю арифметическую цену покупки. Например, в наличии осталось 10 позиций заданного ТМЗ. Было два прихода, оба по 7 шт, но в первый раз покупная цена была 100 у.е., а во второй - 150. Метод исходит из того, что проданные 4 шт из 14 были из первого прихода, поэтому вернет (7*150+3*100)/10 = 135 у.е.

Число (вещественное)

Поле предназначено для хранения вещественных чисел с точностью до 4 знаков после запятой в диапазоне значений от -9 007 199 254 740 991 до 9 007 199 254 740 991.

Настройки

  • Разделитель триад. По умолчанию, пробел, то есть 1 000 000. Доступны точка и запятая, можно вообще отключить этот разделитель.
  • Десятичный разделитель. По умолчанию, запятая, то есть 1,52. Доступна точка.
  • Количество знаков после запятой.
  • Нулей после запятой. Минимальное количество нулей после запятой, отображаемое в виджете формы поля.
  • Удалять незначащие нули. Поле может выводить число с соответствующим количеством знаков после запятой, дополняя незначащими нулями после запятой или удалить эти нули. Например, если выбрано два знака после запятой, то без удаления значащих нулей число 1,2 будет отображаться как 1,20, а с удалением как 1,2.
  • Минимальное значение.
  • Максимальное значение.
  • Шаг спиннера. Спиннер - это кнопки, отображаемые для пользователя, которые позволяют увеличивать / уменьшать значение поля. В данной настройке определяется шаг этой операции. Если значение шага равно 0 спиннер не отображается.

Методы записи

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

  • Прибавить
  • Вычесть
  • Умножить
  • Разделить

Методы чтения

  • Получить отображаемое значение. Метод возвращает значение в том виде, в котором оно отображается в документе, то есть форматированное значение с установленными разделителями.
  • Получить значение с заданной точностью. Метод возвращает округленное значение с количеством знаков после запятой, соответствующим переданному параметру (значение больше 6 вводить не имеет смысла, поскольку внутреннее представление поля ограничено 6 знаками после запятой).
  • Получить сумму / разницу / произведение / частное текущего значения и числа n. Помимо указания числа n, в методе можно установить переключатель для сохранения сформированного значения в поле. Обратите внимание, что, если для этого поля включен контекста изменения маршрута, в котором запускаются интерактивные действия (такие как, «Диалог», «Редактирование» и пр.) эти действия пользователь не увидит в силу архитектурных особенностей реализации.

Число (целое)

Поле предназначено для хранения целочисленных значений в диапазоне значений от -9 007 199 254 740 991 до 9 007 199 254 740 991 (для хранения чисел с плавающей запятой предназначено поле «Число (вещественное)»).

Настройки

  • Разделитель триад. В качестве разделителя триад можно выбрать пробел (1 000 000), точку (1.000.000), запятую (1,000,000) или не использовать разделитель (1000000)
  • Минимальное значение
  • Максимальное значение
  • Шаг спиннера. Спиннер - это кнопки, отображаемые для пользователя, которые позволяют увеличивать / уменьшать значение поля. В данной настройке определяется шаг этой операции. Если значение шага равно 0 спиннер не отображается.

Методы записи

  • Прибавить
  • Вычесть
  • Умножить
  • Разделить
  • Остаток от деления
  • Вычислить по формуле. В поле будет записан результат вычисления заданной формулы. В формулу могут быть вставлены поля в качестве переменных, а также знаки сложения +, вычитания -, деления /, умножения *, получения остатка от деления %, возведения в степень ** и круглые скобки ().

Методы чтения

  • Получить отображаемое значение. Метод возвращает значение поля в соответствии с настройкой разделителя.
  • Дополнить строку с числом ведущими нулями. В параметре метода указывается количество знаков, которое должно быть у получаемой строки. Например, если указать 5 знаков, а в поле хранится число 17 - метод возвратит 00017.
  • Получить сумму / разницу / произведение / частное текущего значения и числа n. Помимо указания числа n, в методе можно установить переключатель для сохранения сформированного значения в поле. Обратите внимание, что, если для этого поля включен контекста изменения маршрута, в котором запускаются интерактивные действия (такие как, «Диалог», «Редактирование» и пр.) эти действия пользователь не увидит, в силу архитектурных особенностей реализации.

JSON

Это поле позволяет выполнять некоторые операции над данными в формате JSON: добавлять и получать ключи и их значения.

JSON - это текстовый формат, позволяющий передавать произвольные данные. Например, информация о компании могла бы быть представлена в виде JSON следующим образом:

{
 "name": "Comparium",
 "country": "Kazakhstan",
 "contacts": {
   "phones":[
   "+77001289175"
   ],
   "emails": [
     "info@documentov.com"
   ]
 }
}

Приведенный JSON будет отображен полем следующим образом:

Впрочем, отображение JSON не имеет особой пользы; вся польза поля заключена в методах.

Настройки

У поля нет настроек.

Методы записи

  • Добавить ключи. В качестве параметров этот метод принимает:
    • Родительский ключ. Полный путь к ключу, в который выполняется добавление. Можно оставить параметр пустым, ключи будут добавлены в корень JSON (при этом можно стереть существующие в поле данные, установив переключатель удаления существующих ключей). Название необходимо указывать в квадратных скобках. Например, для добавления ключа value в существующий ключ parameter - [parameter][value]. Названия добавляемых ключей могут быть получены из полей документа, например, [parameter][{{ Название параметра }}]
    • Источник данных для добавляемых ключей. Значения для добавляемых ключей могут быть получены из полей текущего документа или документов, которые предварительно записаны в какое-либо поле.
    • Добавляемые ключи. Для ключа вводится его название, значение и тип данных. Название ключа может быть введено вручную или получено из какого-либо поля документа. Тип данных может быть определен действием автоматически или задан вручную (например, когда число должно трактоваться как строка). В числе типов есть «массив», который позволяет:
      • записать в заданный ключ массив, полученный из значения,
      • создать новый массив с элементом, равным значению,
      • добавить в существующий в значении по ключу новый элемент из добавляемого значения,
      • объединить существующий массив и массив из значения.

Задача: добавить в приведенный в начале этой статьи JSON сотрудников. Сделать это можно следующим образом:

  1. Сначала добавить в родительский ключ [contacts] новый ключ [employees] без указания значения.
  2. После чего добавить в родительский ключ [contacts][employees] ключи, используя документы из какого-либо поля, указав их тип. В качестве ключей теперь можно будет использовать поля этих документов.

Методы чтения

  • Получить значение ключа. Метод позволяет получить значение определенного ключа. В единственном параметре метода указывается искомый ключ с полным путем к нему. Например, если указать в качестве ключа [contacts][employees], то метод вернет JSON [{"name":"Иванов"},{"name":"Иванова"}], а, если [contacts][employees][1][name], то "Иванова".
  • Получить значение ключа в виде JSON-массива. Зачастую JSON может содержать много излишней информации. Например, наш массив с сотрудниками мог бы содержать несколько десятков ключей, в то время, как нас интересовали бы только несколько штук из них. Используя описываемый метод можно было бы в качестве родительского элемента ввести name и другие интересующие ключи. Такой метод вернул бы соответствующий JSON. Кстати, этот JSON можно было бы записать в подготовленную заранее с соответствующим набором поле Таблицу.
  • Получить количество значений в массиве по ключу. Если ввести ключ [contacts][employees], то в ответ метод вернет 2, т.к. в нашем JSON два сотрудника. Если нужно получить количество элементов верхнего уровня, можно ввести пустые скобки [] - в нашем случае такая настройка метода вернет 3.

QR-код

Поле кодирует записываемые в него данные в QR-код (Quick Response Code). Генерация QR-кода (или кодов) осуществляется полностью в автоматическом режиме - поле самостоятельно определяет подходящую версию QR-кода по поступившим данным.
Если объем данных не превышает 1662 байта, они включаются в QR-код без изменений.
Если объем данных превышает 1662 байта, они сжимаются перед генерацией QR:

  • пакуются в ZIP-архив;
  • создается Base64 представление полученного ZIP-архива;
  • на основе последовательности Base64 генерируется один или несколько QR-кодов (не более 1662 байт на каждый код).

Если разместить поле в шаблоне формы, оно отобразит область для ввода текста, который будет преобразован в QR-код (такое использование редко, обычно поле используется в действии «Запись» в маршруте).

В режиме просмотра поле выводит изображения QR-кодов. В настройках поля можно указать максимальные ширину и высоту этих изображений.

Если данные были сжаты, их можно восстановить из QR по следующему алгоритму:

  1. Отсканировать все коды в соответствии с их порядком следования: слева направо, сверху вниз.
  2. Соединить результаты сканирования всех кодов, не нарушая порядок следования кодов.
  3. На основе полученной последовательности символов (это Base64) восстановить ZIP-архив и распаковать его.

Третий пункт приведенного алгоритма можно сделать в Дóкви при помощи поля типа «Файл», записав в него значение вида:

{
 "name": "qr.zip",
 "base64": "последовательность Base64"
}

Поле автоматически создаст файл qr.zip и разместит его в файловом хранилище. Файл можно будет загрузить и распаковать — внутри будет файл data с исходными данными.

XML

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

Настройки

У поля нет настроек.

Методы записи

  • Добавить элемент. Метод позволяет добавить новый элемент в дерево XML. Имеет следующие параметры:
    • Родительский элемент. Полный путь к родительскому элементу, в который будут добавлены один или несколько новых элементов (если не указать этот путь, добавление будет осуществляться в корень XML, и вы должны самостоятельно обеспечить наличие единственного элемента в корне в соответствии со спецификацией XML). Запрос для определения родительского элемента должен начинаться с //. Каждый уровень дерева XML разделяется /.
      Например, для добавления нового элемента в fields XML вида: <doctype>
        <fields>
          <field required="true">int</field>
          <field>string</field>
        </fields>
      </doctype>
      следует использовать путь: //doctype/fields В запросе можно использовать атрибуты и порядковые номера элементов в квадратных скобках после названия тега элемента (перед названием атрибута необходимо добавить @). Следующий запрос определяет элемент field с атрибутом required из приведенного выше XML: //doctype/fields/field[@required='true'] а данный запрос определяет второе поле: //doctype/fields/field[1] (примечание: нумерация с 0) В запрос можно вставлять значения полей текущего документа.
    • Добавляемые элементы. После нажатия на кнопку добавления (с пиктограммой в виде знака плюс) можно настроить следующие параметры добавляемого элемента:
      • Название элемента. Название добавляемого элемента. Здесь же можно ввести атрибуты этого элемента. Значение может быть введено непосредственно или получено из какого-либо поля текущего документа.
      • Значение, которое можно выбрать для элемента со значением или атрибута. В качестве значения может выступать XML.

Методы чтения

  • Получить элемент. Метод имеет следующие параметры:
    • Название элемента. При помощи несложного языка запроса в этом параметре определяется полный путь к элементу, который необходимо получить. Запрос с //. Каждый уровень дерева XML разделяется /.
      Например, чтобы получить все поля из XML вида: <doctype>
       <fields>
        <field required="true">int</field>
        <field›string</field>
       </fields>
      </doctype>
      запрос должен быть таким: //doctype/fields В запросе можно использовать атрибуты и порядковые номера элементов в квадратных скобках после названия тега элемента (перед названием атрибута необходимо добавить @).
      Следующий запрос вернет обязательные поля из приведенного XML: //doctype/fields/field[@required='true'] а данный запрос вернет второе поле (string): //doctype/fields/field[1] (нумерация с 0) В запрос можно вставлять значения полей текущего документа.
    • Тип данных. Метод может вернуть найденный элемент со всем содержимым, или только содержимое тега элемента text из ‹tag›text‹/tag› или значение заданного атрибута doc-v из ‹tag value="doc-v"›text‹/tag› если ввести название атрибута value в следующем параметре
    • Название атрибута. Если тип данных — значение заданного атрибута, здесь необходимо ввести название атрибута.
    • Формат. Элемент можно получить в формате XML или JSON.
  • Получить количество дочерних элементов. Форма настройки этого метода аналогична форме предыдущего. Метод возвращает количество дочерних элементов.
    Например, если ввести элемент <structures><structure>, то в нашем примере мы получим 2, поскольку в этом элементе есть два элемента <structure>.
  • Получить элемент в виде JSON-массива. Этот метод устарел и будет удален в одной из будущих версий. Используйте вместо него метод «Получить элемент».
    • Родительский элемент. Массив JSON будет формироваться на основе содержимого этого элемента. Название можно ввести вручную или сформировать из полей текущего документа. Для названия можно использовать содержимое поле текущего документа. Возвращаясь к нашему примеру, тут следует ввести <structures><structure>
    • Элементы для JSON-массива. В этой таблице указываются все элементы возвращаемого массива. В качестве значений необходимо указывать путь до конкретного элемента XML, значение которого необходимо разместить в массиве. Если необходимо получить значение атрибута, его название следует предварять знаком -, а значения элемента ветви с атрибутами - знаком *. Для формирования пути можно использовать значения полей текущего документа.
      В нашем примере - <name>
      Метод с такими настройками вернет JSON-массив, который можно записать в поле Таблица с одним строковым полем.