Настройки типа объекта

Содержание

Настройки типа объекта#

Настройки типа объекта — это разделы настройки, которые доступны для выбранного типа объекта в справочнике Типы объектов. Они используются для задания поведения, отображения и обработки объектов выбранного типа: состава закладок, печатных форм, переходов состояний, характеристик, прав по умолчанию и других параметров.

В статье описаны основные типовые разделы настройки типа объекта, которые доступны на уровне платформы и не относятся к настройкам отдельных прикладных модулей. Модульные и проектные разделы настройки, которые добавляются высокоуровневыми прикладными модулями или проектными расширениями, в статье не рассматриваются.

Страница объединяет справочник по полям интерфейса и технические детали настройки: подключение динамических закладок, параметры закладок, работу состояний, историю состояний, вызов процедур, проектные настройки переходов и регистрацию настроек из кода.

Путь: Настройка системы > Сущности > Типы объектов > Типы объектов.

Чтобы настроить разделы типа объекта:

  1. Выберите тип объекта в списке.

  2. В области Разделы настройки выберите нужный раздел.

  3. В правой части формы настройте параметры выбранного раздела.

Закладки типа объекта#

Раздел Закладки типа объекта используется для настройки перечня закладок, которые отображаются в детализации объекта выбранного типа. Набор закладок может изменяться в зависимости от типа объекта.

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

Система имеет общий справочник закладок Настройка системы > Сущности > Закладки детализации. В справочнике закладок настраиваются имя выборки, отображение, наименование, условие вывода, иконка и перечень классов, для которых возможен вывод закладки. Связь закладки с типом объекта настраивается через список допустимых классов и настройки закладок выбранного типа объекта.

Параметры закладки#

Параметр

Описание

Системное имя

Системное имя настройки закладки.

Наименование

Наименование закладки, отображаемое в интерфейсе.

Порядковый номер

Определяет порядок отображения закладок.

Имя выборки

Системное имя выборки, с которой связана закладка.

Имя отображения

Имя отображения выборки, которое открывается на закладке.

Активна

Определяет, отображается ли закладка в карточке объекта.

Условие появления

Задает правило отображения закладки. Закладка выводится только при выполнении условия.

Настроены привилегии для вывода закладки

Показывает, что для закладки настроены объектные привилегии, влияющие на ее отображение.

Описание

Текстовое описание назначения закладки.

Функция получения списка закладок

JEXL-скрипт для проектного формирования закладки.

Параметры выборки

JSON-строка или SQL-выражение для передачи параметров в загружаемую закладку.

Для отображения неактивных закладок включите признак Отображать неактивные и нажмите Обновить.

Функция получения списка закладок#

Поле Функция получения списка закладок используется для проектного формирования закладки. Скрипт получает idpObjectTypeTab — ID загружаемой закладки Btk_ObjectTypeTab — и возвращает SQL-запрос с фиксированным набором основных атрибутов. SQL используется как структура данных, поэтому значения атрибутов можно формировать динамически.

Пример простого JEXL-скрипта, возвращающего SQL-запрос со значениями, которые будут использоваться для загруженной закладки:

`select
  t.id
  ,9999 as nOrder /* Порядковый номер переопределён функцией */
  ,t.nImage
  ,t.sSelectionName
  ,t.sRepresentationName
  ,'Название задано в ручной функции' as sCaption /* а также Наименование */
  ,'{}' as jsonParams
from Btk_ObjectTypeTab t
where t.id = ` + idpObjectTypeTab;

Пример вызова API-метода, возвращающего SQL-запрос с нужными значениями:

Pro_ActionAccessApi.getTabGstUserCanEditActionAccess(idpObjectTypeTab);

Параметры выборки#

Поле Параметры выборки хранит JSON-строку или SQL-выражение, которое формирует jsonb-объект с параметрами для загружаемой закладки. Значение используется при формировании атрибутов закладки и должно соответствовать ожидаемому формату.

Пример строки с параметрами выборки:

'{
  "byList#": true
  ,"gidListSrcAttrName": "super$super$gid"
  ,"bNeedToShowObjectType#": 1
  ,"gidDocDetListAttrName": "super$gidaDetChosen_dz"
}'

Вариант с подстановкой готового jsonb-объекта:

jsonb_build_object('idBisObj#', :super$idBisObj)

Подключение динамических закладок#

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

Существует два варианта вывода детализации фрейма:

  • в виде закладок;

  • в виде списка закладок.

Детализация в виде закладок#

Набор закладок отображается снизу или справа от карточки либо списка.

Для подключения в AVM нужно указать выборку с динамическими закладками:

<tabComposer>
    <frame filter.isVisible="false">
        <card>
            <layout>
                <hBox>
                    <attr name="sNumber"/>
                    <attr name="sCaption"/>
                    <attr name="idPrjVerHL"/>
                </hBox>
                <hBox>
                    <attr name="idDepOwnerHL"/>
                    <attr name="idObjectTypeHL"/>
                    <attr name="idStateHL"/>
                </hBox>
            </layout>
        </card>
    </frame>
    <tabItems isVisible="true"
              selection="gtk-ru.bitec.app.btk.Btk_ObjectTypeTabAvi"
              representation="List_Tab"
              selection.selectionAttr="SSELECTIONNAME"
              selection.representationAttr="SREPRESENTATIONNAME"
              selection.captionAttr="SCAPTION"
              selection.imageIndexAttr="NIMAGE"
              selection.paramsAttr="JSONPARAMS"/>
</tabComposer>

Детализация в виде списка закладок#

Набор закладок отображается в виде списка закладок, справа от которого выводится содержимое текущей закладки.

Для подключения в AVM нужно указать выборку с динамическим содержимым:

<dynamicComposer>
    <frame filter.isVisible="false"
           header.isWide="true"
           toolBar.isCaptionsVisible="true">
        <card useMasterData="false"/>
    </frame>
    <dynamicItems masterAlign="top">
        <dynamicItem align="client"
                     representation="DynList"
                     selection="gtk-ru.bitec.app.btk.Btk_ObjectTypeTabAvi"/>
    </dynamicItems>
</dynamicComposer>

Параметры динамических закладок#

Дополнительные атрибуты для динамических закладок, настраиваемые на типе объекта, могут использоваться для изменения поведения детализации. Для этого им передают уникальные значения или псевдонимы, которые затем используются для получения данных.

За хранение параметров отвечает атрибут Btk_ObjectTypeTab#sParamsClause, использующий формат JSON.

Параметр sParamsClause можно настроить двумя способами:

  • при регистрации закладки типа объекта через код в функции Btk_ObjectTypeTabApi#registerTab;

  • в интерфейсе приложения в поле Параметры выборки раздела Закладки типа объекта.

Примечание

Значение переменной sParamsClause явно преобразуется к типу JSONB, предоставляемому PostgreSQL, поэтому должно являться валидным JSON-объектом, например:

  • с использованием функции jsonb_build_object('key1', value1, 'key2', value2);

  • строкой типа '{"key1": value1, "key2": value2}'.

Итоговый JSON-объект доступен как атрибут выборки Btk_ObjectTypeTabAvi.List_Tab или Btk_ObjectTypeTabAvi.DynList. Он может быть получен с помощью функции Btk_ObjectTypeLib#tabParamsJSON, откуда по ключу можно достать нужные значения.

Кроме стандартных типов данных, используемых JSON, значение внутри объекта может быть псевдонимом, соответствующим любому доступному параметру выборки. Например, для получения идентификатора объекта мастер-детали можно использовать выражение :super$id. Тогда итоговый JSON будет выглядеть так: jsonb_build_object('idMaster', :super$id).

Свойства типа объекта#

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

Основные параметры:

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

  • Версионный — признак того, что для объектов данного типа используется версионность. Если признак включен, для типа объекта дополнительно задается класс версий.

  • Класс версий — класс, по которому определяются состояния, доступные для настройки на типе объекта при использовании версионности.

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

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

  • Жизненный цикл — ссылка на настройку жизненного цикла документа. Жизненный цикл описывает последовательность состояний, через которые проходит объект, например: Создан > На согласовании > Утвержден.

  • Изображение — номер изображения, используемого как иконка типа объекта.

  • Коллекция изображения — коллекция изображений, из которой берется иконка типа объекта. Параметры Изображение и Коллекция изображения используются для визуального отображения типа объекта в списках, меню и других элементах интерфейса.

  • Требуется акцепт при выгрузке во внешнюю систему — признак необходимости акцепта при передаче объекта во внешнюю систему. Используется логикой выгрузки для определения, нужно ли выполнять дополнительное подтверждение перед передачей данных.

  • Требовать прикрепленный документ — признак необходимости прикрепленного документа для объектов данного типа. Может использоваться в бизнес-логике, например при смене состояния объекта. Стандартное поведение зависит от места применения проверки.

  • Запрещено редактирование объектов после создания — запрещает редактирование объекта после его создания.

  • Тип сторно — ссылка на тип сторнирования Btk_ReverseType. Используется для типов документов, которыми сторнируются обычные документы. В стандартной настройке могут использоваться значения Обратное движение и Сторно.

Запрет редактирования объектов после создания#

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

Флаг запрета редактирования задается на типе объекта в разделе Свойства типа объекта. Атрибут — Запрещено редактирование объектов после создания.

Особенности реализации

Проверка происходит перед flush на всех выборках. Учитываются как параметры, хранящиеся в JSON, так и параметры в базе данных. Атрибуты-исключения обрабатываются по имени, без учета регистра.

Главный метод проверки находится в Btk_ObjectTypePkg.validateReadOnly().

Примечание

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

Запрещено редактировать объект класса <наименование класса> с типом <наименование типа объекта> после создания. Системные имена измененных атрибутов: <системные имена атрибутов, запрещенных к редактированию>

Атрибуты-исключения#

Функционал позволяет отключить запрет на редактирование для конкретных параметров с помощью флага Отключен запрет редактирования. При этом проверки для остальных параметров класса сохраняются.

Пути настройки исключений в интерфейсе:

  • Атрибуты классаНастройка системы > Сущности > Типы объектов > Типы объектов > Управление атрибутами;

  • Атрибуты типа объектаНастройка системы > Сущности > Объектные характеристики;

  • Атрибуты шаблонаНастройка системы > Настройки и сервисы > Шаблоны характеристик > Атрибуты шаблона.

Примечание

Системные атрибуты, имя которых заканчивается на _dz, а также bNotUsed (Не используется) и dExpiryDate (Дата окончания использования) можно изменять даже при включенной настройке Запрещено редактирование объектов после создания.

Печатные формы#

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

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

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

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

Основные параметры:

  • Код — системный код настройки печатной формы.

  • Печатная форма — печатная форма, которая будет доступна для выбранного типа объекта.

  • Порядковый номер — определяет порядок отображения печатной формы в списке доступных операций печати.

  • Наименование операции — наименование операции, которое отображается пользователю в интерфейсе.

  • Доступен — определяет, доступна ли печатная форма для использования.

  • Печать по умолчанию — определяет печатную форму, которая используется по умолчанию.

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

  • JEXL-скрипт — скрипт, который выполняется перед формированием печатной формы. В скрипте можно вызвать операцию выборки, в которой на стороне Scala выполняются необходимые проверки или альтернативная логика формирования результата. Например, вместо стандартной печати может быть открыт PDF-файл из Диадока.

  • Тип документа для сохранения — тип документа Btk_ObjectType, в который можно сохранить результат формирования печатной формы как прикрепленный документ. Для выбора выводятся типы wf_doc, связанные с типом-источником через Wf_DocTypeObjApply; при этом связь может быть задана через класс или подкласс без явного указания типа.

Если поле Тип документа для сохранения заполнено, при формировании печатной формы система выводит окно выбора способа обработки результата:

  • Скачать файл — файл скачивается стандартным способом;

  • Сохранить как прикрепленный документ — система создает документ wf_doc указанного типа и прикрепляет его к объекту-источнику через Wf_ObjectDoc.

Дополнительные вкладки:

  • Доступ по состояниям — позволяет ограничить доступность печатной формы по состояниям класса.

    • Состояния класса — состояние, в котором печатная форма доступна.

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

  • JEXL-скрипт фильтрации ПФ — JEXL-условие, которое управляет доступностью печатной формы. Скрипт позволяет показывать или скрывать печатную форму в зависимости от данных объекта, состояния или других условий, доступных в контексте выполнения.

Для привязки печатной формы и активации операции Печать:

  1. Нажмите Создать.

  2. Выберите нужную печатную форму.

  3. Нажмите Выбор.

  4. При необходимости заполните параметры доступности, порядковый номер и дополнительные условия вывода.

Управление атрибутами#

Раздел Управление атрибутами позволяет для типа объекта указать обязательные для заполнения атрибуты, настроить их подсветку в интерфейсе и задать состояния, при которых выполняется проверка на заполненность.

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

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

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

Параметры управления атрибутом

  • Порядок подстановки — определяет очередность подстановки значения по умолчанию. Используется, когда для типа объекта настроено несколько атрибутов со значениями по умолчанию и порядок их заполнения имеет значение.

  • Атрибут — атрибут класса, для которого задаются настройки.

  • Проверяемый класс — определяет класс, атрибут которого будет использоваться. Это позволяет добавлять на объект атрибуты не только из его собственного класса, но и из того же бизнес-объекта. Такая настройка позволяет применять конфигурацию атрибута ко всем записям указанного класса с заданным типом объекта, а также ко всем их дочерним записям, даже если те принадлежат другому классу или имеют иной тип объекта.

  • Обязателен для ввода — атрибут становится обязательным. Система не позволит сохранить объект, пока это поле не будет заполнено. Проверка выполняется на сервере перед событием flush, то есть перед сохранением объекта.

  • Отображаемое имя — название атрибута в системе, задаётся программистом в коде и недоступно для редактирования через интерфейс.

  • Только чтение — атрибут нельзя редактировать вручную. Используется, если значение заполняется автоматически, например через интеграцию или бизнес-логику. Нельзя одновременно установить признаки Обязателен для ввода и Только чтение — эти режимы исключают друг друга.

  • Отключен запрет на редактирование после создания — если включено, атрибут можно изменять после создания объекта.

  • Значение по умолчанию — параметры, определяющие, какое значение будет автоматически подставлено при создании нового объекта.

    • Тип атрибута — тип данных атрибута, например строка, число, дата или ссылка. Поле выводится для информации по выбранному атрибуту и не редактируется вручную.

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

    • Значение по умолчанию — значение, которое автоматически подставляется в атрибут объекта после присвоения объекту данного типа.

    • Использование текущей даты — признак, по которому для атрибута с типом Дата после изменения типа объекта подставляется текущая дата.

  • Ограничение по параметрам выборки — параметры, управляющие визуальной подсветкой обязательного атрибута или применением режима Только чтение. Работают только если включён один из параметров: Обязателен для ввода или Только чтение. По умолчанию поля не заполнены.

    • Имя выборки — системное имя выборки, в которой применяется настройка одного из параметров. Если поле не заполнено — действует во всех выборках.

    • Имя отображения — отображение, в котором применяется настройка одного из параметров, например Card, List. Если поле не заполнено — действует во всех отображениях.

    • Системное имя атрибута — имя, используемое, если атрибут в запросе выборки переименован, например SELECT t.idState AS idStateCnt. Без этого параметра система не сможет сопоставить атрибут и применить к нему настройки. Если поле не заполнено, используется стандартное имя, например idState.

Пример ограничения по выборке

Если для атрибута включён флаг Обязателен для ввода или Только чтение, то при указании выборки или отображения атрибут в этой выборке:

  • подсвечивается красным, если установлен флаг Обязателен для ввода;

  • недоступен для редактирования, если установлен флаг Только чтение.

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

Дополнительные вкладки

  • Состояния доступности для изменения атрибута — вкладка для настройки состояний, в которых атрибут разрешено изменять. Позволяет ограничить редактирование атрибута в зависимости от состояния объекта.

    • Состояния класса — состояния, в которых действует разрешение на изменение атрибута.

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

Переходы состояний#

Раздел Переходы состояний используется для настройки допустимых переходов между состояниями для типа объекта: из какого состояния в какое состояние можно перевести объект данного типа.

Состояния класса позволяют управлять бизнес-логикой объекта: доступом на редактирование атрибутов, возможностью выполнения операций в зависимости от состояния и другими сценариями.

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

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

  • Порядковый номер — определяет порядок отображения состояния.

  • Системное имя — системное имя состояния.

  • Глобальное наименование — полное наименование состояния, используемое как общее название состояния в системе.

  • Наименование — наименование состояния, отображаемое в интерфейсе.

  • Цветовой индикатор — цветовое обозначение состояния в интерфейсе. Используется для визуального различения состояний в списках и карточках.

  • Стартовое состояние — определяет состояние, которое присваивается объекту при создании.

  • Переопределен проектно — признак того, что настройка состояния переопределена на проектном уровне относительно базовой настройки.

  • Наличие процедур — признак наличия процедур или обработчиков, связанных с данным состоянием или переходами из него.

  • Не активно — признак отключения состояния. Неактивное состояние не используется как доступное состояние для объектов данного типа.

Параметры переходов состояния

  • Показать переходы класса — признак отображения переходов, заданных на уровне класса. Позволяет видеть не только переходы, настроенные для типа объекта, но и общие переходы класса.

  • Конечное состояние — состояние, в которое разрешен переход из выбранного состояния.

  • Стадия ЖЦ — стадия жизненного цикла, с которой связан переход состояния.

  • Условие — условие, при выполнении которого доступен переход состояния.

Настройка допустимых переходов для состояния выполняется в правой части формы Переходы состояний с использованием операций Создать и Удалить.

Внимание

Права на переводы состояний могут быть ограничены дополнительно средствами подсистемы администрирования.

Атрибут состояния#

Настройка состояний подразумевает наличие в классе атрибута, ссылочного на состояние, и атрибута типа объекта.

<attr name="idState"
      attribute-type="Long"
      caption="Состояние"
      order="40"
      type="refObject"
      ref.class="Btk_ClassState"/>

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

Список состояний можно настроить в карточке класса либо вручную через метод *Api().regState. При создании состояний необходимо помнить, что у класса должно присутствовать ровно одно начальное состояние.

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

Сеттеры состояний не проверяют эти переходы. Переходы влияют только на выпадающий список состояний.

Выборка для выпадающего списка состояний класса, в которые возможен переход от текущего:

gtk-ru.bitec.app.btk.Btk_ClassStateAvi#Lookup_Class

Пример разметки атрибута в AVM:

<attr name="idStateHL" caption="Состояние" order="30.1" isLastInLine="false">
    <editor>
        <lookup lookupQuery="gtk-ru.bitec.app.btk.Btk_ClassStateAvi#Lookup_Class"
                changeableAttr="idState"
                isLookupLazyLoad="true"
                lookupKeyAttr="id"
                lookupListAttr="sHeadLine"/>
    </editor>
    <card isControlWidthFixed="true" controlWidth="60"/>
    <ref class="Btk_ClassState"/>
</attr>

Методы для работы с состояниями:

/**
* Метод ищет состояние по системному имени и системному имени класса, к которому оно относится.
* @param spSystemName  Системное имя состояния
* @param spMasterClass Системное имя класса, к которому относится состояние
* @param bpRaiseErr    При значении = 1.nn будут создаваться исключения, если не найден класс либо нужное состояние
*/
Btk_ClassStateApi().findByNameAndClass(spSystemName:NString, spMasterClass:NString, bpRaiseErr:NNumber = 0.nn): NLong

/**
* Возвращает начальное состояние для класса.
* @param idpMasterClass идентификатор класса
*/
Btk_ClassStateApi().getClassStartState(idpMasterClass: NLong) :NLong

/**
* Возвращает номер состояния класса по его id.
*/
Btk_ClassStateApi().getOrder(idp: NLong): NNumber

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

Если в классе объявлен специальный атрибут с признаком isStateMC=true, фреймворк автоматически сохраняет в него номер текущего состояния.

<attr name="idStateMC"
      attribute-type="Number"
      caption="Состояние"
      order="51"
      type="basic"
      isVisible="false"
      isStateMC="true" />

История состояний#

Для классов, имеющих атрибут состояния idState, по умолчанию ведется история состояний. Данные хранятся в классе Btk_ObjectStateHistory. Через DPI-сеттер состояния создаются записи в журнале изменения состояний.

Для отключения истории состояний используется атрибут isStateHistoryEnabled тега class.

Для просмотра истории состояния объекта:

  1. Откройте Информацию об объекте.

  2. Перейдите на закладку История состояний.

Откроется универсальная закладка Btk_ObjectStateHistoryAvi.List_GidObj, которая отображает историю состояний объекта. Закладка работает от супер-параметра, в котором указан gid объекта.

Возможные параметры закладки Btk_ObjectStateHistoryAvi.List_GidObj:

  • sGidAttrName — имя атрибута, в котором хранится gid объекта из мастер-выборки. По умолчанию используется gid.

  • bWithStack — признак необходимости отображения стека вызова. Доступные значения: 0, 1. По умолчанию используется 0.

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

<tabItem selection="gtk-Btk_ObjectStateHistoryAvi"
         representation="List_GidObj"
         caption="История состояний">
    <params>
        <param name="sGidAttrName"
               value="gid"
               dataType="String"/>
        <param name="bWithStack"
               value="1"
               dataType="Number"/>
    </params>
</tabItem>

Вызов процедур на переход#

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

Есть несколько типов событий, на которые можно настроить вызов произвольных процедур:

  • На вход в состояние — процедуры будут вызваны, если это состояние будет конечным при любом переходе. Настраивается в детализации к состоянию.

  • На выход из состояния — процедуры будут вызваны, если это состояние будет начальным при любом переходе. Настраивается в детализации к состоянию.

  • На переход — процедуры будут вызваны, если будет выполнен именно этот переход. Настраивается в детализации к переходу.

Порядок вызова событий:

  1. Выполнение процедур на выход из состояния.

  2. Выполнение процедур на переход.

  3. Выполнение процедур на вход в состояние.

Доступные переменные в JEXL-скрипте при стандартном вызове процедуры:

  • roprop объекта, для которого была вызвана смена состояния;

  • idOldState — старое состояние объекта;

  • idNewState — новое состояние объекта.

Примечание

Для спецификации MCT (Mct_Specification) с версионностью процедура смены состояния вызывается отдельным механизмом, так как состояния хранятся на версиях документа, а не на самом документе.

В этом случае переменные rop, idOldState и idNewState недоступны. В процедуру передается только id — идентификатор спецификации MCT.

Управление проектными настройками состояний#

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

Функционал используется для:

  • защиты проектно настроенных переходов от случайных изменений;

  • требования явного подтверждения при ручном вмешательстве;

  • автоматического проставления флага проектного переопределения.

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

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

  • если состояние не проектно настроено (bIsProjectSet = 0), операция требует подтверждения пользователя;

  • если состояние проектно настроено (bIsProjectSet = 1), изменение выполняется без подтверждения.

Пример проверки начального состояния:

private def withProjectSetConfirmation(bvIsProjectSet: Boolean, warningText: String, operation: () => Unit): Unit = {
  if (bvIsProjectSet) {
    operation()
  } else {
    dialogs.showMsgDialog(
      msgBoxType = MsgDlg.confirmation,
      text = warningText,
      buttons = List(MsgDlgButton.yes, MsgDlgButton.no)
    ) match {
      case MsgDlgButton.yes => operation()
      case _ =>
    }
  }
}

Добавление перехода

  • Проверяется флаг bIsProjectSet начального состояния.

  • При bIsProjectSet = 0 выводится предупреждение: Внимание, внесение ручных правок автоматически проектно переопределяет переходы между состояниями!

  • После подтверждения пользователем создается новый переход и устанавливается флаг bIsProjectSet = 1.

Удаление перехода

  • Проверяется флаг bIsProjectSet начального состояния.

  • При bIsProjectSet = 0 выводится предупреждение: Внимание, удаление перехода состояний автоматически проектно переопределяет начальное состояние!

  • После подтверждения пользователем переход удаляется и устанавливается флаг bIsProjectSet = 1.

Для проставления поля проектного переопределения в true используется метод:

// После ручных изменений система автоматически устанавливает флаг
if (!bvIsProjectSet) {
  classStateApi.setbIsProjectSet(startStateRop, 1.nr)
}

Регистрация перехода состояния в API

Метод Btk_StateChangeApi.register() предоставляет параметр bpIgnoreProjectSet для управления проверкой проектных настроек:

/**
  * Метод регистрации возможных переходов состояний
  *
  * @param idpStartState       Начальное состояние
  * @param idpFinishState      Конечное состояние
  * @param idpObjectType       Тип, для которого будет возможен переход
  * @param bpIgnoreProjectSet  Проверка для возможности пересоздать переход
  */
def register(
  idpStartState: NLong,
  idpFinishState: NLong,
  idpObjectType: NLong,
  bpIgnoreProjectSet: Boolean = false
): ApiRop

Обработка зависимостей при удалении перехода состояний

// При удалении перехода выполняются дополнительные проверки
override def delete(rop: ApiRop): Unit = {
  Btk_Ept().beforeDeleteStateChange(rop.get(_.id))  // проверка перед удалением
  Btk_AcRoleStateChangeGrantApi().deleteByStateChange(rop.get(_.id))  // очистка прав доступа
  super.delete(rop)
}

Особенности работы

  • При bpIgnoreProjectSet = false переход создается только если начальное состояние проектно не переопределено, то есть bIsProjectSet = 0.

  • При bpIgnoreProjectSet = true переход создается независимо от проектных настроек.

  • При программном создании перехода флаг bIsProjectSet автоматически устанавливается в значение 1.

Типы прикрепленных файлов#

Раздел Типы прикрепленных файлов используется для настройки типов файлов, которые можно прикреплять к объектам выбранного типа.

Параметры настройки

  • Тип прикрепленного файла — тип файла, который можно прикреплять к объектам данного типа.

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

Настройка прикрепленных документов#

Раздел Настройка прикрепленных документов используется для настройки применимости типов прикрепленных документов к объектам.

Основные параметры

  • Класс — класс объекта-источника, для которого настраивается применимость типа прикрепленного документа.

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

  • Тип прикрепленного документа — тип документа, который разрешено прикреплять к объекту-источнику.

  • Тип объекта источника — тип объекта, к которому применяется настройка прикрепления документа.

  • Подписывать последнюю версию при подписании объекта-источника — признак, по которому последняя версия прикрепленного документа подписывается при подписании объекта-источника.

  • Состояние объекта источника для проверки прикрепления — состояние объекта-источника, при котором проверяется наличие прикрепленного документа данного типа.

  • Показывать тип в списке документов объекта — признак отображения данного типа прикрепленного документа в списке документов объекта.

  • Основной тип приложения — признак основного типа прикрепленного документа для выбранной области применения. Используется, если среди нескольких допустимых типов нужно выделить основной.

  • Иконка — изображение, которое используется для визуального отображения элемента в интерфейсе.

Настройки

  • Состояние объекта-источника — состояние объекта-источника, для которого действует настройка ограничения или режима работы с прикрепленным документом.

  • Создание новой версии с применением исправлений — признак, разрешающий создавать новую версию прикрепленного документа с учетом внесенных исправлений.

  • Режим внесения изменений — режим, который определяет, как пользователь может изменять прикрепленный документ или его версию.

  • Запрет изменения прикрепленного документа — запрещает изменение прикрепленного документа для указанной области действия настройки.

  • Запрет удаления прикрепленного документа — запрещает удаление прикрепленного документа.

  • Запрет добавления прикрепленного документа — запрещает добавление прикрепленного документа.

  • Запрет просмотра прикрепленного документа — запрещает просмотр прикрепленного документа.

Объектные привилегии для отмены ограничений

  • Объектная привилегия — объектная привилегия, наличие которой у пользователя отменяет заданное ограничение.

Операции отчетной формы#

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

Параметры настройки

  • Порядковый номер — определяет порядок отображения операции.

  • Иконка — изображение, которое используется для визуального отображения элемента в интерфейсе.

  • Наименование — наименование операции, отображаемое в интерфейсе.

  • Процедура — процедура, которая выполняется при запуске операции отчетной формы.

Объектные характеристики#

Раздел Объектные характеристики используется для настройки характеристик, которые выводятся для типа объекта. Характеристики отображаются на закладке Реквизиты карточки объекта.

Объектные характеристики используются, когда для объектов одного класса нужно задать разные наборы дополнительных реквизитов в зависимости от типа объекта. Состав характеристик может настраиваться непосредственно на типе объекта или через шаблон атрибутов.

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

Параметры настройки

  • Системное имя — системное имя характеристики.

  • Наименование — наименование характеристики, отображаемое в интерфейсе.

  • Тип отображаемого значения — способ отображения значения характеристики в интерфейсе.

  • Значение по умолчанию — значение, которое автоматически подставляется для характеристики.

  • Тип — тип элемента настройки характеристики. Используется для различения групп, атрибутов и других элементов структуры характеристик.

  • Тип данных — тип значения характеристики, например строка, число, дата или ссылка.

  • Домен ссылочности — область допустимых ссылочных значений для характеристики. Используется для характеристик, значение которых является ссылкой на объект.

  • Отключен запрет редактирования — если признак включен, характеристику можно редактировать после создания объекта.

Для добавления группы нажмите Создать группу и введите название группы.

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

Из справочника Атрибуты класса выберите нужный атрибут и нажмите Выбор.

Положение атрибутов можно изменять с помощью Сдвинуть вверх и Сдвинуть вниз.

Период расчета#

Раздел Период расчета используется для настройки периодов расчета для выбранного типа объекта.

Параметры настройки

  • Тип периода — тип периода расчета, который используется для выбранного типа объекта.

  • Наименование — наименование периода расчета, отображаемое в интерфейсе.

  • Код налогового периода — код периода, который используется при формировании налоговой отчетности.

  • Заполнение данных о реорганизации — признак или настройка заполнения сведений о реорганизации при расчете или формировании отчетности.

ИФНС для вывода 4 раздела налоговой декларации по имуществу#

Раздел ИФНС для вывода 4 раздела налоговой декларации по имуществу используется для настройки ИФНС, которые применяются при выводе 4 раздела налоговой декларации.

Параметры настройки

  • Код ИФНС — код инспекции ФНС.

  • Наименование ИФНС — наименование инспекции ФНС, отображаемое в интерфейсе.

Автовычисляемые колонки#

Раздел Автовычисляемые колонки используется для настройки параметров автоматического вычисления значений для колонок типа объекта.

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

Параметры настройки

  • Колонка — колонка, для которой настраивается автоматическое вычисление.

  • Наименование — наименование автовычисляемой колонки, отображаемое в интерфейсе.

  • Сделать нередактируемым — делает значение колонки недоступным для ручного редактирования.

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

  • Только без значения — ограничивает автовычисление только случаями, когда в колонке еще нет значения.

Чтобы добавить автовычисляемую колонку:

  1. Нажмите Создать.

  2. Выберите нужный атрибут из справочника Атрибуты класса.

  3. Нажмите Выбор.

  4. Задайте настройки автовычисляемой колонки.

  5. Укажите SQL-выражение для вычисления.

Лист рассылки системных уведомлений#

Раздел Лист рассылки системных уведомлений используется для настройки получателей системных уведомлений для выбранного типа объекта.

В разделе можно указать тип системного уведомления, пользователя или ОФС, а также настроить дополнительные условия рассылки.

Параметры настройки

  • Тип системных уведомлений — тип уведомления, для которого настраивается рассылка.

  • Пользователь — пользователь, которому будет направляться системное уведомление.

  • ФИО — фамилия, имя и отчество пользователя.

  • ОФС — организационно-функциональная структура, для которой настраивается рассылка.

  • Только руководителю — признак отправки системного уведомления только руководителю выбранной ОФС.

  • Не активна — отключает запись настройки. Неактивная запись не используется при рассылке уведомлений.

Настройка связей между типами документов при создании#

Раздел Настройка связей между типами документов при создании используется для настройки связи между текущим типом объекта и типом документа, который может быть создан на его основании.

Эта настройка определяет тип документа-приемника и метод создания документа для текущего типа объекта.

Параметры настройки

  • Тип приемник — тип документа, который создается на основании текущего типа объекта.

  • Метод создания документа — метод, который используется для создания документа-приемника.

Функциональные настройки#

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

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

Параметры настройки

  • Код — код функциональной настройки.

  • Наименование — наименование функциональной настройки, отображаемое в интерфейсе.

  • Описание — описание функциональной настройки.

  • Наличие — признак применения функциональной настройки для выбранного типа объекта.

  • Логическое — логическое значение функциональной настройки.

  • Числовое — числовое значение функциональной настройки.

  • Строковое — строковое значение функциональной настройки.

  • Json — значение функциональной настройки в формате JSON.

Документооборот#

Раздел Документооборот используется для настройки участия типа объекта в документообороте и параметров выбора маршрутов бизнес-процессов.

Настройка Документооборот активирует операцию Документооборот в карточке объекта. Для этого нужно включить признак Используется в ДО.

Атрибут Доступна рассылка от списка задач включает рассылку по документу из списка задач.

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

Параметры типа объекта

  • Используется в ДО — включает использование типа объекта в документообороте.

  • Функция уточнения маршрута — функция, которая уточняет доступный маршрут бизнес-процесса для объекта данного типа.
    Функцию можно задать в виде JEXL-скрипта. В JEXL-скрипт передается параметр gidObjgid объекта, для которого запускается документооборот. Функция должна вернуть объект класса Bpm_ProcessSchema. Для получения схемы бизнес-процесса по коду можно использовать метод:

    Bpm_ProcessSchemaApi.findByMnemoCode(<код схемы бизнес-процесса>);
    
  • Доступна рассылка от списка задач — включает рассылку по документу из списка задач.

  • Отправлять вложением в задачу — признак добавления документа или сформированного вложения в задачу бизнес-процесса.

  • Всегда показывать окно выбора схемы бизнес-процесса — признак, при котором пользователю всегда отображается окно выбора схемы бизнес-процесса, даже если доступен один маршрут.

  • Отображение информации при выборе маршрутов — отображение, данные которого выводятся пользователю при выборе маршрута бизнес-процесса.

  • Отображать служебные маршруты по умолчанию — признак отображения служебных маршрутов в списке маршрутов без дополнительного включения пользователем.

Схемы бизнес-процессов

  • Код — код схемы бизнес-процесса.

  • Наименование — наименование схемы бизнес-процесса, отображаемое в интерфейсе.

  • Описание — описание схемы бизнес-процесса.

  • Служебный маршрут — признак служебной схемы бизнес-процесса. Такие маршруты обычно используются для технических или вспомогательных сценариев.

Разрешенные состояния для процесса ДО

  • Состояния — состояние объекта, в котором разрешен запуск процесса документооборота.

Отражение в учете#

Раздел Отражение в учете используется для настройки данных объекта, которые применяются при отражении в учете.

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

Основные параметры

  • Группы видов учета — группы видов учета, в которых может отражаться объект данного типа.

  • Отражать в учете — определяет, используется ли объект данного типа для отражения в учете.

Параметры отражения в учете

  • Атрибут состояния — атрибут объекта, в котором хранится состояние, используемое при отражении в учете.

  • Номер состояния для отражения в учете — номер состояния, при достижении которого объект должен отражаться в учете.

  • Проводки выполняются во внешней системе — признак того, что проведение и формирование проводок выполняются во внешней системе, а не средствами текущей системы.

  • Вариант автоматического отражения — режим автоматического отражения объекта в учете.

  • Источник процедуры проведения в учете — источник, из которого берется процедура проведения объекта в учете.

  • Процедура проведения — процедура, которая выполняет проведение объекта в учете.

  • Процедура для отмены проведения в учете документа — процедура, которая отменяет проведение одного документа в учете.

  • Процедура для массовой отмены проведения в учетах документов — процедура, которая выполняет массовую отмену проведения документов в учетах.

  • Настройка определения счетов учета для документов — настройка, по которой для документов определяются счета учета.

Настройки обязательности заполнения счетов учета для типа документа

  • Тип счетов учета — тип счетов учета, обязательность заполнения которых задается для типа документа.

Замещения прав#

Раздел Замещения прав используется для настройки временной передачи прав от отсутствующего пользователя замещающему пользователю.

В разделе можно указать период замещения, причину замены и параметры передачи отдельных прав.

Параметры настройки

  • Только действующие замены — отображает только действующие записи замещения.

  • Отсутствующий пользователь — пользователь, права которого передаются на период отсутствия.

  • ФИО отсутствующего — фамилия, имя и отчество отсутствующего пользователя.

  • Замещающий пользователь — пользователь, которому передаются права на период замещения.

  • ФИО замещающего — фамилия, имя и отчество замещающего пользователя.

  • Дата начала — дата начала периода замещения.

  • Дата окончания — дата окончания периода замещения.

  • Причина замены — причина оформления замещения.

  • Передача прав подписи — режим передачи прав подписи от отсутствующего пользователя замещающему пользователю.

  • Передача прав на задачи — режим передачи прав на выполнение задач отсутствующего пользователя замещающему пользователю.

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

  • Наличие ЭП у замещающего пользователя — информационный признак наличия электронной подписи у замещающего пользователя.

  • Примечание — дополнительная информация по записи замещения.

Выгрузка в файл#

Раздел Выгрузка в файл используется для настройки операций формирования файлов по метасхемам для выбранного типа объекта.

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

Параметры настройки

  • Порядковый номер операции — определяет порядок отображения операции выгрузки.

  • Изображение — номер изображения, используемого как иконка операции.

  • Наименование операции — наименование операции, отображаемое в интерфейсе.

  • Метасхема — метасхема, по которой формируется файл.

  • Процедура формирования имени файла — процедура, которая формирует имя выгружаемого файла.

  • Кодировка — кодировка формируемого файла.

  • Сохранять в файл — признак сохранения результата формирования в файл.

  • Доступен фоновый режим — признак доступности выполнения операции выгрузки в фоновом режиме.

Пообъектные права по умолчанию#

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

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

В разделе можно указать пользователя, роль, вид роли ОФС или группу доступа, для которых должны применяться права на тип объекта.

Параметры настройки

  • Пользователь — пользователь, для которого настраиваются права по умолчанию.

  • Роль — роль, для которой настраиваются права по умолчанию.

  • Вид роли ОФС — вид роли организационно-функциональной структуры, для которого назначаются права по умолчанию.

  • Группа доступа — группа доступа, для которой назначаются права по умолчанию.

Типы текстовых примечаний#

Текстовые примечания — это объекты класса Btk_DocNote, предназначенные для хранения дополнительной текстовой информации по документу. Они позволяют фиксировать комментарии и указания, а также передавать их из родительского документа в дочерний.

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

Один тип текстового примечания можно подключить к нескольким типам объектов. Для наследования у родительского и дочернего типов объектов должна быть выбрана одна и та же запись справочника.

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

Для использования текстовых примечаний в прикладном классе необходимо программно добавить var-коллекцию класса Btk_DocNote. Настройки типа объекта определяют доступные типы примечаний и их поведение, но не подключают коллекцию к классу.

Раздел Типы текстовых примечаний используется для подключения типов текстовых примечаний к выбранному типу объекта и настройки их поведения.

Параметры настройки

  • Тип текстового примечания — тип текстового примечания, доступный для типа объекта.

  • Разрешить наследование — разрешает наследование текстового примечания от родительского объекта к дочерним объектам.

  • Ограничивать редактирование по создателю — разрешает редактирование примечания только пользователю, который его создал.

  • Способ копирования — определяет способ переноса текста примечания в дочерний объект.

  • Разрешить перезапись примечания потомка — разрешает заменять примечание дочернего объекта значением примечания родительского объекта.

Добавление типа текстового примечания#

Чтобы добавить тип текстового примечания в настройки типа объекта:

  1. Выберите тип объекта.

  2. В области Разделы настройки выберите Типы текстовых примечаний.

  3. Нажмите Создать.

  4. В поле Тип текстового примечания откройте список значений.

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

  6. Настройте правила наследования, редактирования, копирования и перезаписи примечания.

Наследование текстовых примечаний#

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

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

Перенос примечаний выполняется из прикладного кода с помощью метода:

Btk_DocNoteApi().migrateNotes(gidParent, gidChild)

Параметры метода:

  • gidParent — глобальный идентификатор родительского объекта;

  • gidChild — глобальный идентификатор дочернего объекта.

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

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

  • С помощью ссылки — у примечания дочернего объекта сохраняется ссылка на примечание родительского объекта. Дочерний объект использует текст родительского примечания, поэтому изменение исходного текста отображается в дочернем объекте. При редактировании примечания в дочернем объекте ссылка на родительское примечание удаляется, после чего дочерний объект хранит собственное значение;

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

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

  • если признак включен, значение примечания дочернего объекта заменяется значением примечания указанного родительского объекта;

  • если признак выключен, существующее значение примечания дочернего объекта сохраняется.

Если дочерний объект становится родительским для следующего объекта, ссылки между примечаниями формируются по цепочке. Каждое примечание непосредственно ссылается только на примечание родительского объекта предыдущего уровня.

Например:

  • примечание 2 ссылается на примечание 1;

  • примечание 3 ссылается на примечание 2;

  • примечание 4 ссылается на примечание 3.

У примечания 4 нет прямой ссылки на примечание 1. Текст для примечания 4 получается последовательным переходом по цепочке примечание 4 > примечание 3 > примечание 2 > примечание 1.

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

Удаление объектов с текстовыми примечаниями

Для каскадного удаления текстовых примечаний вместе с основным объектом var-коллекция Btk_DocNote подключается с признаком cascadeOnDelete="true":

<var-collection
    name="Btk_DocNote"
    ref.attr="gidSrc"
    cascadeOnDelete="true"/>

Параметр ref.attr="gidSrc" определяет атрибут, по которому примечания связаны с основным объектом. Признак cascadeOnDelete="true" включает каскадное удаление коллекции.

Если основной объект содержит дочернюю коллекцию, каскадное удаление также настраивается для этой коллекции.

Например, основной класс Stm_OrderOut содержит коллекцию примечаний и дочернюю коллекцию Stm_OrderOutDet:

<var-collection
    name="Btk_DocNote"
    ref.attr="gidSrc"
    cascadeOnDelete="true"/>

<collection
    name="Stm_OrderOutDet"
    ref.attr="idDoc"
    cascadeOnDelete="true"/>

В дочернем классе Stm_OrderOutDet также подключается коллекция примечаний:

<var-collection
    name="Btk_DocNote"
    ref.attr="gidSrc"
    cascadeOnDelete="true"/>

При удалении записи Stm_OrderOut кодогенератор каскадно удаляет связанные записи Stm_OrderOutDet. При удалении каждой дочерней записи удаляется принадлежащая ей коллекция Btk_DocNote.

Коллекция примечаний самой записи Stm_OrderOut также удаляется каскадно. Основной объект удаляется после удаления принадлежащих ему коллекций.

В приведенном примере основной и дочерний классы находятся в одном модуле, связаны через атрибут типа Long, а соответствующие коллекции описаны в ODM-разметке.

Настройка сторон документа#

Раздел определяет поведение закладки Стороны документа в карточке документа: доступные типы сторон, способы указания подписанта и доверенности, правила автоматического добавления строк и ограничения уникальности.

Параметры настройки#

Типы сторон.
Тип стороны выбирается с помощью кнопки с тремя точками.

Тип стороны

1

Собственная сторона

2

Контрагент

3

Плательщик

4

Грузоотправитель

5

Грузополучатель

6

Получатель платежа

7

Приоритетный получатель платежа

Ограничение и добавление сторон.

Параметр

Тип

Назначение

Ограничить перечень типов сторон

Признак

Ограничивает выбор типов сторон на закладке Стороны документа значениями, настроенными для текущего типа объекта.

Добавлять в документ при создании

Признак, включён по умолчанию

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

Уникальный в рамках документа

Признак

Запрещает добавлять в документ более одной стороны данного типа.

Способ указания подписанта.
Способ выбирается из выпадающего списка.

Способ

1

Из справочника контактных лиц

2

Из доверенности

3

Текстовый ввод

4

Из справочника физ. лиц

Способ указания доверенности.
Способ выбирается из выпадающего списка.

Способ

1

Указание номера и даты

2

Доверенности контактного лица

3

Доверенности физ. лица

4

Общий список доверенностей

5

Документ физ. лица

6

Текстовый ввод

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

Операции и позиционирование.

Операция или действие

Требуется проверка

Результат

Создать

Да

Добавляется новая пустая строка.

Удалить

Нет

Удаляются выбранные строки.

Позиционирование на поле

Да

Выделяется выбранное поле.

При создании строки и позиционировании на поле система проверяет заполнение сторон документа. Если хотя бы в одной строке не заполнено поле Сторона документа, выводится ошибка Необходимо заполнить обязательное поле «Сторона документа». Если все стороны заполнены, действие выполняется.

Матрица совместимости#

Матрица определяет возможность совместного использования способов указания подписанта и доверенности.

Значение

Описание

+

Сочетание способов допустимо.

нет перехода

Сочетание невозможно. Пользователь не может установить выбранный способ.

стирается

При установке способа указания подписанта или доверенности ранее выбранный способ сбрасывается. Пользователю потребуется указать подписанта или доверенность заново.

Наименование способа

Ранее выбранный способ указания подписанта заменяется способом, указанным в ячейке.

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

Способ указания подписанта

Доверенности контактного лица

Доверенности физ. лица

Документ физ. лица

Общий список доверенностей

Текстовый ввод

Указание номера и даты

Из доверенности

+

+

стирается

+

стирается

стирается

Из справочника контактных лиц

+

Из справочника физ. лиц

Из справочника физ. лиц

+

+

+

Из справочника физ. лиц

Из справочника контактных лиц

+

+

+

+

+

Текстовый ввод

Из справочника контактных лиц

Из справочника физ. лиц

Из справочника физ. лиц

+

+

+

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

Способ указания доверенности

Из доверенности

Из справочника контактных лиц

Из справочника физ. лиц

Текстовый ввод

Доверенности контактного лица

стирается

+

стирается

стирается

Доверенности физ. лица

стирается

стирается

+

стирается

Документ физ. лица

нет перехода

стирается

+

стирается

Общий список доверенностей

+

+

+

+

Текстовый ввод

нет перехода

+

+

+

Указание номера и даты

нет перехода

+

+

+

Доверенность не задана

нет перехода

+

+

+

Закладка «Стороны документа»#

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

Тип стороны.
Тип стороны можно изменить в любой строке с помощью выпадающего списка.

Доступность типов определяется настройкой Ограничить перечень типов сторон:

  • если настройка включена, доступны только типы сторон, настроенные для текущего типа объекта;

  • если настройка выключена, доступны все предопределённые типы сторон.

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

Сторона.
Сторона выбирается с помощью кнопки с тремя точками из следующих справочников:

  • Контрагенты;

  • Физические лица;

  • Сотрудники.

ФИО подписанта.
Подписант указывается способом, заданным в настройках типа объекта. Совместимость способов указания подписанта и доверенности приведена в разделе Матрица совместимости.

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

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

Регистрация настроек из кода#

Настройки типа объекта можно регистрировать программно. Такой способ используется, когда раздел настройки должен поставляться вместе с конфигурацией модуля или проекта и автоматически добавляться при установке или обновлении.

Регистрация из кода позволяет:

  • создать раздел настройки типа объекта;

  • указать выборку и отображение, которые будут открываться в этом разделе;

  • подключить раздел настройки к нужному классу;

  • зарегистрировать расширение, через которое настройка связывается с типом объекта.

Регистрация раздела настройки типа объекта#

Раздел настройки типа объекта регистрируется через Btk_ObjectTypeDetApi. После регистрации раздел связывается с классом через Btk_ObjectTypeDetClassApi, а расширение подключается через Btk_OTExtensionSettingApi.

Пример регистрации раздела настройки:

def dataInstall(): Unit = {
  session.commit()
  session.setDefaultUOWEditType(RWSharedUOWET)

  // Настройка детализации для типа объекта
  val idvOTDet = Btk_ObjectTypeDetApi()
    .registerByMnemoCode("Prs_LotSpecType")
    .setsCaption("Настройки типа позиции спецификации")
    .setsSelectionName("gtk-ru.bitec.app.pdoc.lot.spectype.Prs_LotSpecTypeAvi")
    .setsRepresentationName("Card_idObjectType")
    .setnOrder(30.nr)
    .register

  session.flush()

  // Регистрация раздела настройки для класса Prs_LotSpec
  Btk_ObjectTypeDetClassApi().register(idvOTDet, Prs_LotSpecApi().idClass)

  // Регистрация расширения
  Btk_OTExtensionSettingApi().register(
    Prs_LotSpecApi().idClass,
    idClass,
    Btk_AttributeApi().findByMnemoCode(idClass, "idObjectType")
  )

  session.commit()
}

В примере:

  1. Btk_ObjectTypeDetApi().registerByMnemoCode(...) создает раздел настройки типа объекта и задает его параметры: наименование, выборку, отображение и порядок вывода.

  2. Btk_ObjectTypeDetClassApi().register(...) подключает созданный раздел настройки к классу, для типов объектов которого он должен отображаться.

  3. Btk_OTExtensionSettingApi().register(...) регистрирует расширение и связывает его с атрибутом idObjectType.

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

Регистрация связанных стандартных настроек#

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

  • Btk_TabApi().register — регистрация закладки в общем справочнике закладок;

  • Btk_ObjectTypeTabApi().registerTab — привязка закладки к типу объекта;

  • Btk_ClassStateApi().register — регистрация состояния класса;

  • Btk_StateChangeApi().register или Btk_StateChangeApi().registerForObjectType — регистрация переходов состояний.

Регистрация закладки#

Пример регистрации закладки в общем справочнике закладок:

def regTab(): Unit = {
  session.commit()
  session.setDefaultUOWEditType(RWSharedUOWET)

  Btk_TabApi().register(
    spCaption = "Товарные позиции",
    spSel = "gtk-Stm_ActInDetAvi",
    spRep = "List_idDoc",
    idprefClass = idClass
  )

  Btk_TabApi().register(
    spCaption = "Складские ордера",
    spSel = "gtk-Stk_WarrantInAvi",
    spRep = "LinkDocs",
    idprefClass = idClass
  )

  session.commit()
}

Пример регистрации скрипта в теге dbData:

<script name="regTab" version="1">
    <install>Stm_ActInApi.regTab();</install>
</script>

Регистрация состояний класса#

Пример регистрации состояний класса:

def regState(): Unit = {
  session.commit()
  session.setDefaultUOWEditType(RWSharedUOWET)

  Btk_ClassStateApi().register(
    idpMasterClass = idClass,
    spSystemName = "Forming",
    spCaption = "Формируется",
    bpStartState = 1.nn,
    npOrder = 100.nn
  )

  session.flush()

  Btk_ClassStateApi().register(
    idpMasterClass = idClass,
    spSystemName = "Executing",
    spCaption = "Исполняется",
    bpStartState = 0.nn,
    npOrder = 200.nn
  )

  Btk_ClassStateApi().register(
    idpMasterClass = idClass,
    spSystemName = "Done",
    spCaption = "Выполнена",
    bpStartState = 0.nn,
    npOrder = 300.nn
  )

  session.commit()
}

Пример регистрации скрипта в теге dbData:

<script name="regState" version="1">
    <install>Stm_ActInApi.regState();</install>
</script>

Привязка закладок и переходов к типу объекта#

Пример привязки закладок и переходов состояний к уже созданному типу объекта:

def regObjectTypeSettings(idvObjectType: NLong): Unit = {
  session.commit()
  Btk_Pkg().setRWSharedUOWEditType()

  var idvTab = Btk_TabApi().findByMnemoCode("Stm_ActInDetAvi.List_idDoc")
  if (idvTab.isNotNull) {
    Btk_ObjectTypeTabApi().registerTab(
      idpObjectType = idvObjectType,
      idpTab = idvTab,
      spCaption = "Товарные позиции",
      npOrder = 10.nn
    )
  }

  idvTab = Btk_TabApi().findByMnemoCode("Stk_WarrantInAvi.LinkDocs")
  if (idvTab.isNotNull) {
    Btk_ObjectTypeTabApi().registerTab(
      idpObjectType = idvObjectType,
      idpTab = idvTab,
      spCaption = "Складские ордера",
      npOrder = 20.nn
    )
  }

  Btk_StateChangeApi().registerForObjectType(
    idvObjectType,
    List(
      "Forming" -> "Executing",
      "Executing" -> "Done",
      "Executing" -> "Forming",
      "Done" -> "Forming",
      "Done" -> "Executing"
    )
  )

  session.commit()
}