Введение#
Одним из основных инструментов Лексемы являются Документ и Реестр документов. Документ выполняет функцию структурированного хранения и вывода информации из БД. В Лексеме документ – это форма (наследник от Form), которая имеет привязку к модели и обладает рядом дополнительных свойств для работы с данными. С точки зрения БД документ – это одна строка в таблице. Реестр документов – это список (форма с одной лишь таблицей) в котором выведены документы, он выполняет менеджерские функции над документами (создание, просмотр, удаление).
Документ#
Как писалось выше, документ – это форма, привязанная к модели (таблице в БД). Чтобы создать такую форму, класс должен быть наследован от класса Document и иметь переопределённое свойство binding, которое должно возвращать модель, к которой привязан документ.
Пример.
Класс документа City (город).
Методы#
Методы экземпляра класса Document:
| Наименование | Описание |
|---|---|
| save() | метод, содержащий логику сохранения, в том числе функционал оптимистического блокировщика |
| copy() | метод копирования документа |
| onSaved() | стандартный "обработчик" сохранения, отправляющий событие saved сервиса документов |
| reloadData() | выполняет перезагрузку данных, на которых построен документ |
Статические методы класса Document:
| Наименование | Описание |
|---|---|
| loadData() | описывает логику загрузки данных документа |
Пример. Добавим к предыдущему примеру кнопки Сохранения изменений документа в заголовок.
Макет.
Класс.
Регистрация#
Регистрация документа прописывается в units.json. Параметр caption не указывается, чтобы не выводить его в меню.
Реестр документов#
Для управления документами в Лексеме существует «Реестр документов», он выполняет следующие функции:
Создание новых документов
Вывод существующих документов
Открытие существующего документа
Удаление документа
По сути это форма, на которой расположен только один контрол – grid (таблица) и управляющие кнопки в заголовке.
Класс, описывающий реестр, должен быть отнаследован от класса Registry, привязан к модели (свойство binding) и переопределить свойство documentKey. Макет должен содержать аналитический грид (таблица, в которой возможен только вывод информации) с id=’grid’ и ссылкой на форму документа (viewName).
Пример.
Макет реестра документов «Город».
Класс формы.
Обратите внимание, что в макете кнопки управления смотрят на методы createDocument и deleteSelectedDocuments, но в классе невидна их реализация. Дело в том, что это стандартные методы реестра, их описание смотрите ниже.
В классе свойство documentKey возвращает идентификатор формы документа, он указывается при регистрации формы в units.json, в свойстве key. Данный параметр необходим для корректной работы функции createDocument.
Свойства#
| Наименование | Описание |
|---|---|
| trackableSources | возвращает массив отслеживаемых сущностей (по умолчанию - свойство binding текущего класса) |
| grid | возвращает ссылку на грид, который является основным гридом реестра (по умолчанию - первый найденный на форме грид) |
| documentKey | возвращает ключ документа, используется в методе создания документа из реестра и из меню |
Методы#
| Наименование | Описание |
|---|---|
| createDocument | обёртка над методом создания документов, привязанная к источнику данных, на которой построен реестр |
| copyDocument | метод копирования документа |
| deleteSelectedDocuments | метод, запрашивающий у пользователя подтверждение удаления объектов, выделенных в основном гриде, и удаляющий их в случае получения подтверждения |
| onDocumentSaved | стандартный "обработчик" события сохранения документов сервиса документов |
| loadData | описывает логику загрузки данных реестра |
| getDataParameters | статический метод, отвечающий за получение параметров для загрузки источника данных |
| openDialog | обёртка над методом вызова диалога выбора периода, сохраняющая выбранный период и перезагружающая источник данных с учётом новых параметров |
| getPeriod | метод, возвращающий объект с тремя свойствами (rDate, beginDate, endDate), если вызван в реестре с настроенным свойством dateProperty в модели, либо пустой объект. |
Регистрация#
Реестр, как и все формы регистрируется в units.json.
Свойство caption необходимо для вывода ссылки на реестр в меню.
Свойство creation не обязательно, при его включении появляется возможность создания нового документа прямо из меню. В этом случае в меню рядом с ссылкой на реестр появится иконка создания нового документа.


