Поля
Поля - это главная деталь всех шаблонов на платформе Cursiver. Полями они называются по аналогии с привычными всем текстовыми полями на сайтах, вот такими:
У них много задач, мы их все разберём, но если в двух словах говорить зачем нужны поля, то в первую очередь - для подстановки данных в шаблоны документов. То есть если нам надо сделать шаблон договора, в который при генерации должна подставляться текущая дата, то на место даты мы должны подставить поле «дата документа», которое будет заполнять пользователь. Выглядит это так в шаблоне: <скриншот> А вот так при генерации документа по шаблону: <скриншот>
Поля создаются в рамках всей системы, а не в конкретных шаблонах документов. Одно и то же поле может быть переиспользовано много раз, то есть его можно подставлять в разные документы. При этом у каждого поля есть два вида настроек: общие, которые характерны для поля в целом, независимо от того, куда оно подставлено (тип, название, описание и тд) и настройки его отображения уже в конкретном месте, куда оно подставлено. Чтобы было понятнее, в чем заключается разница, приведем пример с тем же полем «дата документа». У него есть название «дата документа», тип поля - «дата», может быть описание. Это общие настройки, куда бы мы это поле не подставили. Но в одном документе, подставляя дату, мы хотим чтобы она отображалась в формате «01 января 2000 г.», а в другом просто «01 января». Это частные настройки форматирования уже для конкретных вставок полей в документе. Общие настройки полей задаются при создании полей на странице шаблонов, вот здесь: <скриншот> <скриншот>
Настройки отображения полей задаются при вставке поля в шаблон документа вот здесь: <скриншот> <скриншот>
Разберём все виды настроек полей.
Типы полей
Нами предусмотрено 12 типов полей, которые описывают какие данные в них можно подставлять. В зависимости от того, какую именно информацию вы хотите чтобы пользователь подставлял в документ, вы можете выбрать подходящий тип поля при его создании. Также важно отметить, что тип поля нельзя менять после его создания.
Строка
Это самый базовый тип поля. Он применяется в тех случаях когда от пользователя требуется ввести просто текст. Хорошими примерами использования таких полей являются: название организации, наименование услуги, статья гражданского кодекса и т.д.
Число
В тех случаях, когда вам надо работать с числами, лучше всего использовать для этого специализированный тип поля. Это позволит ограничить то, какие данные пользователь сможет подставить в это поле, а также даст дополнительные возможности отображения, такие как число прописью.
Дата
Тип поля «дата» позволяет не вводить ее вручную, а выбирать в календаре. Также он дает возможность настраивать формат отображения даты, в том числе выводить только нужную ее часть, например, только месяц.
Выбор из нескольких значений
Часто вам надо, чтобы пользователь был ограничен в вариантах ответа. Например, мог выбрать только один из трёх типов доставки, оформляя документы по заказу, но не мог ввести произвольное значение. Для этих целей идеально подходит данный тип поля.
Список
Списки очень похожи на тип «выбор из нескольких значений» за тем лишь исключением, что пользователь может выбирать сразу несколько ответов. Вы можете регулировать то, как эти ответы отображаются в документе, например, выводить их через запятую или списком.
Пользовательский список
Если все же вам надо предоставить пользователю большую свободу при вводе в данных и вы хотите, что бы он сам ввел список, но при этом вывести его в документе не просто как строку, а с применением [форматирования](#отображение списков), то вы можете выбрать тип поля «пользовательский список».
ФИО
Если вам требуется вывести ФИО, то лучше воспользоваться специальном типом поля, а не просто строкой. Это позволит вывести его в документе не только с нужным склонением, но и со [специальным форматированием](#отображение ФИО).
Этот тип поля удобно использовать, если вам нужна проверка вводимых пользователем значений и для проверки удобства самого пользователя, чтобы снизить вероятность опечатки.
Телефон
Этот тип поля пока не имеет особенностей отображения и мало чем отличается от строки, но мы рекомендуем использовать его в тех случаях, когда вам необходим именно ввод номера телефона.
Адрес
Форматирование и подстановка адресов как и тип поля «телефон» пока находится в разработке, но мы рекомендуем пользоваться им уже сейчас, в случае когда вам необходима подстановка адреса.
ИНН юридического лица
Под юридическими лицами понимаются в том числе индивидуальные предприниматели, потому ИНН юридического лица может быть 10- или 12-значным числом.
ИНН физического лица
ИНН физического лица должен строго 12-значным.
Общие настройки полей
В зависимости от типа поля, у разных полей есть свои настройки.
При создании нового поля любого типа, вы можете указать его название и описание. <скриншот>
Всем полям можно установить значение по-умолчанию. Оно будет автоматически подставлено при генерации документа. Значение по-умолчанию можно установить как при создании поля в системе, так и при в ставке этого поля в документ. При этом последнее будет иметь приоритет, если они оба заполнены и отличаются. <скриншот>
Также для всех полей предусмотрена настройка атрибутов, которые могут понадобится для подключения интеграций. Подробнее об этом читайте в разделе интеграций.
Настройки отображения
Как было сказано ранее, настройки отображения применяются к каждому отдельному полю в документе, даже, если это одно и то же поле, вставленное в документ много раз (т.к. в разных местах документа нам может потребоваться выводить одни и те же данные в разном виде). Окно настройки отображения полей можно открыть по клику на поле в документе или если добавить в него новое поле. В общем случае выглядит оно так: <скриншот>
Для всех полей, независимо от типа, можно задать название поля. По-умолчанию, оно такое же, как и название поля введенное вами непосредственно при создании поля. Но тут вы его можете поменять. Это может быть нужно для того, чтобы назначение поля в документе было более понятно пользователю. Возвращаясь к примеру с «датой документа», вы можете при подстановке его в шаблон договора переименовать в «дату договора», а при подстановке двух разных дат в шаблон акта (даты акта и даты договора, по которому делается акт) использовать одно и то же поле, но в зависимости от контекста дать ему разные названия. Это позволит переиспользовать одни и те же поля, а не создавать новые на каждый случай.
Также, при вставке поля вы можете уточнить описание данного поля - так удобно оставлять комментарии для себя и других редакторов на будущее, т.к. описание поля видно только редактирующим документ.
Поле может быть обязательным к заполнению и нет. Для настройки этого есть соответствующий чекбокс: <скриншот> Если поле обязательное, то пользователь не сможет сгенерировать документ, не введя в него значения. Если же оно не обязательное и пользователь не укажет в нем значения, то на место поля в документе не будет подставлено ничего (пустая строка).
Опция «скрыть название в редакторе» нужна в тех случаях, когда длина названия поля мешает форматированию документа. Это удобно, когда у вас, например, «едет» таблица из-за поля с длинным названием, хотя вы знаете, что на его место в документе будет точно подставлено очень короткое значение. При этом при заполнении данных пользователь будет видеть полное название поля.
Выбор формы поля определяет то, к чему это поле относится и откуда будут браться для него данные. Подробнее о работе форм и управлении потоком данных можно прочитать в разделе форм и в шаблонах документов. Отметим только, что установка связи с формой важна и если поле не привязано ни одной форме, то оно будет подсвечено в документе красным цветом. <скриншот>
Склонения и регистр
Для полей типа строка, ФИО, число (если выбрана опция число прописью), дата, выбор из нескольких значений, список и пользовательский список доступна настройка склонения. Для списочных значений склонение применяется к каждому элементу списка. <скриншот>
Также для всех вышеперечисленных типов доступна установка регистра:
- нижний (все маленькие буквы)
- верхний (все прописные/заглавные буквы)
- с заглавной буквы
Отображение дат
Даты можно отображать 6 разных форматах:
- ДД.ММ.ГГГГ (01.01.2021)
- ДД.ММ.ГГ (01.01.21)
- ДД (01)
- ММММ (Январь)
- ГГГГ (2021)
- ДД ММММ (1 января)
Если в дате присутствует месяц прописью, то для нее актуален выбор склонения.
Отображение списков
Списочные типы полей (список и пользовательский список) при подстановку в документ так или иначе должны быть преобразованы в обычный текст. То как именно они будут преобразованы зависит от настроек отображения списка.
В первую очередь вы можете задать, какой разделитель использовать для элементов списка. Это может быть запятая (совет: напишите пробел после запятой для более аккуратного вида списка), тогда все элементы списка будут идти в одну строку через запятую. Завершающий символ может отличаться от разделителя, например это может быть точка.
Если же вам требуется вывести все элементы списка с новой строки, то воспользуйтесь опцией "перенос строки". Также можно выбрать нумерованный или ненумерованный список. При этом вы можете комбинировать опции "разделитель" и "завершающий символ" с этими настройками.
Отображение чисел
Числа могут выводиться в трех разных видах:
- число (без изменений);
- число прописью;
- единицы измерения.
Число прописью будет автоматически сформировано на основании ввода обычного числа пользователем. При этом к нему будет применимо склонение.
Единицы измерения необходимо выбирать в том случае, если вам требуется согласование с числительным. Например, если в документе должно быть написано "5 метров", где 5 - это число, которое указывает пользователь, то вам необходимо добавить 2 поля: первое - число в формате "число", то есть без изменений, а второе - то же поле в формате "единицы измерения", указав в настройках слово "метр" и выбрав при необходимости нужное склонение.
В описанном выше примере присутствует один момент, который может быть непонятен при первом знакомстве с системой: зачем добавлять в документ два одинаковых поля? Подробно об этом мы рассказываем в разделе о формах. Главное, что важно знать, что такие поля, привязанные к одной форме, пользователь заполняет только один раз вне зависимости от того, сколько раз они встречаются в документе.
Отображение ФИО
Для вывода ФИО доступны дополнительные настройки отображения. В первую очередь это выбор способа записи ФИО. В Cursiver предусмотрено 7 вариантов отображения ФИО:
- Полное ФИО (Иванов Иван Иванович)
- Фамилия (Иванов)
- Имя (Иван)
- Отчество (Иванович)
- Имя Отчество (Иван Иванович)
- И.О. Фамилия (И.И. Иванов)
- Фамилия И.О. (Иванов И.И.)
Кроме того, мы предусмотрели возможность установки рода для прилагательных и других частей речи на основе рода автоматически определенного по ФИО. Эта функция называется "гендерный модификатор". Включив её, вы можете ввести два значения для мужского и женского рода, например, часто используемое обращение в документах: "уважаемый"/"уважаемая". Тогда программа сама подставит нужное обращение, в зависимости от введенного пользователем ФИО. Однако стоит помнить, что автоматическое определение рода не всегда возможно, особенно для иностранных имён, в связи с чем иногда имеет смысл добавить особые настройки, которые дадут пользователю вручную указать нужный род. Подробнее о том, как это сделать, можете узнать в разделе про отрисовку блоков по условиям.
Для хранения ФИО в системе важно использовать именно специально предназначенные для этого поля, а не отдельные поля "имя", "фамилия" и "отчество". Так вы сможете намного более гибко управлять их отображением в документе.
Замена значения поля по условию
Очень важным, имеющим множество применений инструментом является замена значения поля по условию. Эта функциональность очень похожа (почти идентична) отрисовке блоков по условиям. Её смысл заключается в том, что вы можете заменять значение, которое пользователь ввёл в поле, на любое другое в зависимости от заданных вами условий.
Проще будет показать на примерах. Допустим, вы делаете шаблон отчета о проделанных работах, и пользователь, генерирующий документ, должен в нём указывать только количество потраченных часов. При этом вы хотели бы, чтобы в документе помимо количества часов, введенных пользователем, было бы написано текстом «больше плана» или «меньше плана». Эту задачу отлично решает замена значения поля по условию: в месте, где надо вывести текст, вам лишь надо добавить поле «количество потраченных часов» и добавить в его настройках условие: если значение больше N, то вывести текст «больше плана», и два других условия на случай если значение меньше или равно N. В программе это выглядит так: <скриншот>
Чтобы создать условие, вам надо в настройках поля нажать кнопку добавить условие, выбрать оператор (больше, меньше, равно и т.д.), ввести значение, с которым будет сравниваться значение введенное пользователем, и ввести строку, на которую надо заменить значение поля, если это условие будет выполнено.
Для всех типов полей определены следующие операторы:
- равно
- не равно
- больше
- больше или равно
- меньше
- меньше или равно
- содержит
- не содержит
- входит
- не входит
- пересекается
- не пересекается
Наверное, стоит пояснить логику операторов «содержит», «входит» и «пересекается» и обратных им операторов. Для полей списочных типов условие «содержит» будет выполнено, если значение поля будет включать в себя все значения, перечисленные вами в условии. Условие «входит» будет выполнено в том случае, если наоборот перечисленные вами значения будут включать в себя все значения, выбранные пользователем. Условие «пересекается» будет выполнено в том случае, если и в пользовательском вводе и в значении в условии будет хоть один общий элемент.
Все остальные типы полей для этих операторов сравниваются как строки. Например, чтобы заменить email пользователей, у которых он заканчивается доменом @example.com на общую почту info@example.com, вы можете для поля «email пользователя» сделать условие с оператором «содержит», значением “@example.com” и заменой “info@example.com”, как показано на изображении: <скриншот>
Также стоит отметить, что строки сравниваются операторами больше/меньше по количеству символов в них, а списочные типы полей по количество элементов в них.
Для каждого поля можно задавать сколько угодно условий. При вставке значения поля в текст, программа пройдётся по всем условиям и подставит замену из первого условия, которое будет выполнено. Если же ни одно из условий не выполнено, то программа подставит в текст исходное значение, введенное пользователем в поле.
Системные поля
Иногда бывает необходимость подставить в документ данные, которые уже изначально есть в программе, такие как дата создания проекта, ФИО пользователя системы, email по которому он зарегистрирован. Но динамические данные в документы можно подставлять только с помощью полей. Для этих целей в программе определён ряд системных полей, которые вы можете подставить в документ, а программа сама введёт в них значение при генерации документа.
Системные поля по-умолчанию находятся в одноимённой папке. Пользователи не могут их удалить, но вы можете их перемещать в другие папки.
Папки полей
Все поля хранятся в папках. Вы можете создавать в системе любое количество папок любой вложенности, согласно вашим предпочтениям для удобства систематизации полей. Однако мы рекомендуем придерживаться примерно такой структуры: под каждый шаблон объектов и форм своя папка с полями и одна общая папка для всех остальных полей. Вы можете сами поэкспериментировать с их организацией и выбрать наиболее подходящий для себя вариант.
Иное применение полей
Как было сказано в самом начале, у полей есть множество назначений. Подстановка данных в генерируемые документы - только одно из них. Одна из самых важных задач, которую решают поля, это хранение данных в проектах, объектах, задачах и пользователях в системе. Вы можете определять то, какие в них будут поля с помощью шаблонов объектов и форм. При этом важно понимать, что это те же самые поля, что используются в шаблонах документов.
Другая важная задача полей - это управление потоком данных из объектов системы в документы. Поток данных в большей степени определяется формами, но поля здесь тоже играют важную роль: они связывают соответствующие данные в объектах с полями в документах. Если вы сделаете документ, в котором будет фигурировать ИНН, а затем при генерации этого документа подставите в него юридическое лицо (объект системы), в котором будет присутствовать то же самое поле «ИНН», то данные из этого объекта автоматически попадут в документ. Это может показаться очевидным, но это важно понимать, так как в случае, если вы создадите два разных поля, пусть даже с похожими или одинаковыми названиями, такой связи между ними не будет и данные автоматически не заполнятся. Очень подробно про эту механику и про управление потоком данных мы рассказываем в разделе, посвященному формам. Мы очень рекомендуем с ним ознакомится, так как понимание принципа работы данных в системе лежит в основе эффективности её использования для создания продвинутых шаблонов документов.
Кроме того, поля могут применяться для построения интерфейса интеграций и служить триггерами для их вызова.