- Главная [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- Начало работы
- Работа с типами
- Глобальный контекст и изоляция
- Работа с приложениями
- Массовые действия с элементами приложения
- Работа с внешними сервисами
- Скрипты в виджетах
- Веб компоненты
- Права доступа
- Начало работы с процессами
- Начало работы с подписями
- Начало работы с предпросмотром файлов
- Начало работы с организационной структурой
- Начало работы с пользователями и группами
- Начало работы с типом данных Таблица
- Как решить вашу задачу
- Как сделать пользовательское отображение элементов приложений
- Как сделать динамическое отображение полей/виджетов со сложным условием
- Как регистрировать документ
- Как рассчитывать интервал между датами
- Как создать замещение пользователя
- Как использовать пагинацию и сортировку при поиске элементов приложения
- Документооборот
В этой статье
Документооборот
Работа с номенклатурой (делами), регистрациями и резервированием регистрационных номеров документов, а также с листами согласования и ознакомления осуществляется с помощью методов типа DocflowApplicationItemRef.
Работа с листами согласования/ознакомления
Получить листы согласования/ознакомления можно с помощью методов getApprovalLists и getInformLists. Так можно получить листы согласования:
const item = await Context.data.n1; const approvalLists = await item.docflow().getApprovalLists();
В дальнейшем можно продолжать работу с листами — например, получить статусы, списки согласующих/информируемых (респондентов), даты создания и изменения:
for (const list of approvalLists) { const {status, respondents, createdAt: __createdAt} = list; }
Листы согласования/ознакомления представлены типом BaseList.
Работа с номенклатурой (делами)
Получить конкретное дело можно с помощью метода DocflowApplicationItemRef.getNomenclature. Для получения данных дела необходимо передать его идентификатор. Его можно получить двумя способами.
Пример получения идентификатора из настроек регистрации приложения:
const settings = await Application.getSettings(); settings.registrationSettings.nomenclatureIds.forEach(nomenclatureId => { ... });
Пример получения идентификатора из списка регистраций элемента приложения типа Документ:
const item = Context.data.d1! const registrations = item.docflow().getRegistrations(); registrations.forEach(registration => { const {nomenclatureId} = registration; ... })
Данные дела представлены типом TNomenclature. Получение и обработка данных дела может выглядеть так:
const item = Context.data.d1! const settings = await Application.getSettings(); const nomenclatures = []; for (const nomenclatureId of settings.registrationSettings.nomenclatureIds) { const nomenclature = await item.docflow().getNomenclature(nomenclatureId); if (nomenclature !== undefined) { const {id: __id, name: __name} = nomenclature; nomenclatures.push(nomenclature); } }
Регистрация и резервирование регистрационных номеров приложений
Каждое приложение может быть зарегистрировано в нескольких делах, если такое предусмотрено настройками приложения. Для получения регистраций документа можно воспользоваться методом DocflowApplicationItemRef.getRegistrations. Регистрации имеют тип ApplicationItemRegistration. Например, получить идентификаторы дел, в которых могут быть зарегистрированы элементы приложения типа Документ, можно следующим образом:
const item = Context.data.d1! const registrations = await item.docflow().getRegistrations(); for (const registration of registrations) { const nomenclatureId = registration.nomenclatureId; }
Для управления регистрациями можно использовать методы DocflowApplicationItemRef.register и DocflowApplicationItemRef.deleteReservation. Данные методы принимают идентификатор дела, в котором надо зарегистрировать элемент приложения или для которого нужно отменить регистрацию. Пример регистрации элемента приложения типа Документ для всех дел из настроек приложения:
const item = Context.data.d1! const settings = await Application.getSettings(); settings.registrationSettings.nomenclatureIds.forEach(nomenclatureId => { item.docflow().register(nomenclatureId); })
Также существует возможность ручной регистрации с указанием номера регистрации. Ручная регистрация доступна в том случае, если предусмотрена настройками дела. Для ручной регистрации элемента приложения типа Документ можно использовать метод DocflowApplicationItemRef.manualRegister. Пример ручной регистрации:
const item = Context.data.d1! const settings = await Application.getSettings(); settings.registrationSettings.nomenclatureIds.forEach(nomenclatureId => { item.docflow().manualRegister("Номер тест 1", nomenclatureId); })
Для предварительного резервирования номера регистрации можно использовать метод DocflowApplicationItemRef.reserve. Этот метод возвращает зарезервированный номер. Для отмены резервирования номера используется метод DocflowApplicationItemRef.deleteReservation. Оба метода принимают идентификатор дела в качестве параметра. При ошибке резервирования будет сгенерирована ошибка. Пример резервирования номера в определённом деле для элемента приложения типа Документ:
const item = Context.data.d1! const settings = await Application.getSettings(); const nomenclatures = []; for (const nomenclatureId of settings.registrationSettings.nomenclatureIds) { const nomenclature = await item.docflow().getNomenclature(nomenclatureId); if (nomenclature !== undefined) { nomenclatures.push(nomenclature); } } const nomenclatureName = 'Название нужного дела'; const nomenclatureForReservation = nomenclatures.find(nom => nom.name === nomenclatureName); if (nomenclatureForReservation !== undefined) { const reservedNumber = await item.docflow().reserve(nomenclatureForReservation.__id); }