<< Click to Display Table of Contents >> Администрирование (Windows) > Обновление системы > Обновление среды разработки > Изменения базового решения Directum RX Изменения в версии 4.8 |
Обмен документами с филиалами и подразделениями контрагентов
В модуле Parties (Контрагенты) для типа справочника Counterparty (Контрагент) в свойство-коллекцию ExchangeBoxes (Электронный обмен) добавлены свойства:
•CounterpartyBranchId – ИД филиала в сервисе обмена;
•CounterpartyParentBranchId – ИД филиала или подразделения, которые в сервисе обмена находится на ступень выше по иерархии, чем CounterpartyBranchId.
В модуле Exchange (Электронный обмен):
1.Добавлены серверные функции и перегрузки модуля:
Элемент разработки |
Описание |
---|---|
Серверные функции |
|
AddServiceCounterpartyDepartmentNote() |
Добавляет примечание с информацией о филиале или подразделении в карточку документа |
GetExchangeDocumentHistoryComment() |
Получает комментарий для записи в историю документа |
GetCounterpartyDepartmentBox() |
Получает абонентский ящик подразделения контрагента |
GetCounterpartyDepartments() |
Получает абонентские ящики подразделений контрагента |
Перегрузки |
|
SendDocuments() |
Отправляет документы в сервис обмена |
2.Клиентская функция модуля SendResultToCounterparty() сделана виртуальной.
3.Добавлены идентификаторы подразделений отправителя и получателя.
4.В структуре SendToCounterpartyInfo добавлены свойства:
•CounterpartyDepartments – список подразделений контрагента;
•CounterpartyDepartmentBox – подразделение контрагента.
5.В типе справочника ExchangeDocumentInfo (Сведения о документе обмена) добавлены:
•свойство CounterpartyDepartmentBox – запись справочника CounterpartyDepartmentBox (Абонентский ящик подразделения контрагента);
•серверная функция GetCompanyNameWithDepartment(), которая получает наименованием организации и подразделения через запятую.
6.В типе задачи ExchangeDocumentProcessingTask (Задача на обработку входящих документов эл. обмена) и типе задания ExchangeDocumentProcessingAssignment (Задание на обработку документов) добавлено свойство CounterpartyDepartmentBox – запись справочника Абонентский ящик подразделения контрагента.
7.Обновлены сторонние библиотеки DCX.
В модуле ExchangeCore (Электронный обмен. Настройки):
1.Добавлены:
•тип справочника CounterpartyDepartmentBox (Абонентский ящик подразделения контрагента);
•серверная функция GetCounterpartyDepartmentBoxes(). Получает список абонентских ящиков подразделений контрагента, с которыми возможен обмен через указанный абонентский ящик нашей организации.
2.В типе задачи CounterpartyConflictProcessingTask (Задача на обработку конфликтов синхронизации контрагентов) добавлены свойства:
•CounterpartyOrganizationId – ИД головной организации в сервисе обмена;
•CounterpartyBranchId – ИД филиала в сервисе обмена.
3.В типе справочника BusinessUnitBox (Абонентский ящик нашей организации) добавлены серверные функции:
Функция |
Описание |
---|---|
UpdateExchange() |
Обновляет реквизиты электронного обмена |
CreateCounterpartyExchangeBox() |
Создает электронный обмен с филиалом контрагента для СБИС и c головной организацией для Диадок и СБИС |
FindSbisCounterparty() |
Ищет организацию в Directum RX с установленным обменом, соответствующую организации в сервисе СБИС |
CreateCounterpartyConflictTask() |
Создает и отправляет задачу на обработку конфликта синхронизации контрагента |
SyncBoxCounterpartyBranches() |
Синхронизирует филиалы и подразделения контрагентов с сервисом обмена |
SyncCounterpartyOrgStructureUnits() |
Синхронизирует филиалы и подразделения контрагентов |
GetHeadCounterparties() |
Получает список контрагентов из сервиса обмена, с которыми установлен эл. обмен в Directum RX |
SyncCounterpartyBranches() |
Синхронизирует филиалы контрагента |
SyncCounterpartyBranch() |
Синхронизирует филиал контрагента |
CreateCounterpartyBranch() |
Создает филиал контрагента |
ConvertBranchToOrganization() |
Преобразовывает филиал контрагента в организацию |
SyncCounterpartyDeletedBranches() |
Синхронизирует статусы для удаленных филиалов из сервиса обмена |
GetHeadCompany() |
Получает головную организацию из Directum RX |
GetCounterpartyBranchName() |
Получает имя филиала организации из Directum RX |
CreateCounterpartyExchangeBoxRecord() |
Создает электронный обмен с филиалом контрагента для Диадок |
UpdateCounterpartyExchangeBoxRecord() |
Обновляет данные о филиале при его изменении на сервисе обмена |
SyncCounterpartyDepartments() |
Синхронизирует подразделения контрагента из сервиса обмена |
SyncCounterpartyDepartment() |
Синхронизирует одно подразделение контрагента из сервиса обмена |
CloseCounterpartyDeletedDepartments() |
Закрывает подразделения контрагента, удаленные в сервисе обмена |
CreateCounterpartyDepartmentBox() |
Создает абонентский ящик подразделения контрагента |
UpdateCounterpartyDepartmentBox() |
Обновляет абонентский ящик подразделения контрагента |
CloseCounterpartyBranchesForClosedContacts() |
Закрывает эл. обмен с филиалами, если был закрыт обмен с головной организацией на сервисе обмена |
CloseCounterpartyDepartmentsForClosedContacts() |
Закрывает абонентские ящики подразделений контрагентов, с которыми закрыт обмен в сервисе обмена |
CloseCounterpartyDepartmentsWithChangeBranchId() |
Закрывает абонентские ящики подразделений контрагентов, для которых изменился родительский филиал |
CloseCounterpartyBranches() |
Закрывает эл. обмен с филиалами контрагента |
CloseCounterpartyDepartmentBoxes() |
Закрывает абонентские ящики подразделений контрагента |
GetParentBranch() |
Получает филиал, к которому относится подразделение в сервисе обмена |
SendNotices() |
Отправляет уведомления о завершении синхронизации филиалов |
4.В тип задачи CounterpartyConflictProcessingTask (Задача на обработку конфликтов синхронизации контрагентов) добавлены свойства:
•CounterpartyOrganizationId – идентификатор организации контрагента в сервисе обмена;
•CounterpartyBranchId – идентификатор филиала контрагента в сервисе обмена. Аналогичное свойство добавлено в тип справочника CounterpartyQueueItem (Элемент очереди синхронизации контрагентов).
5.Обновлены сторонние библиотеки DCX.
Формирование электронных доверенностей
1.В тип документа PowerOfAttorneyBase (Базовая доверенность) добавлены свойства:
•Powers (Полномочия);
•AgentType (Тип представителя). Возможные значения: Employee (Сотрудник), LegalEntity (Юридическое лицо), Enterpreneur (Индивидуальный предприниматель), Person (Физическое лицо);
•IssuedToParty (Кому выдана). Если свойство AgentType заполнено значением Employee (Сотрудник), то IssuedToParty заполняется персоной сотрудника Person (Физическое лицо), указанного в поле IssuedTo (Кому выдана);
•Representative (Представитель).
2.В тип документа FormalizedPowerOfAttorney (Электронная доверенность) добавлены свойства:
•FtsListState (В реестре ФНС). Возможные значения: OnRegistration (На регистрации), OnRevoke (Запрошен отзыв), Rejected (Ошибка регистрации), Registered (Зарегистрирован), Revoked (Отозван);
•RegisteredSignatureId (ИД подписи). Содержит идентификатор подписи, которой была подписана доверенность при регистрации в реестре ФНС;
•FtsRejectReason (Ошибка регистрации в ФНС).
3.В модуле Docflow (Документооброт) добавлены:
•тип документа PowerOfAttorneyRevocation (Заявление на отзыв доверенности). Создается только программно;
•сторонняя библиотека FormalizeDocumentsParser, которая используется для формирования XML-файла эл. доверенности форматов 002 и 003, а также заявления на отзыв доверенности.
Преобразование электронных доверенностей в PDF
Для типа документа FormalizedPowerOfAttorney (Электронная доверенность) добавлено преобразование в формат PDF с отметкой об ЭП. Все данные для формирования PDF берутся из XML-файла и электронной подписи.
При создании эл. доверенности:
•XML-файл генерируется с помощью библиотеки FormalizeDocumentsParser;
•XML-файл преобразуется в PDF без отметки об ЭП и помещается в PublicBody (Отображаемое представление для версии документа).
При импорте эл. доверенности:
•XML-файл доверенности помещается в Body (Содержимое версии документа), подпись импортируется;
•XML-файл преобразуется в формат PDF с отметкой об ЭП и помещается в PublicBody (Отображаемое представление для версии документа).
Преобразование XML-файла в формат PDF происходит поэтапно:
•из XML в HTML с помощью библиотеки FormalizeDocumentsParser;
•из HTML в PDF с помощью библиотеки Aspose в изолированной области PdfConverter модуля Docflow.
При необходимости можно изменить визуальное отображение эл. доверенности. Для этого нужно перекрыть серверную функцию GetFormalizedPowerOfAttorneyAsHtml() типа документа FormalizedPowerOfAttorney (Электронная доверенность) и написать свою логику формирования HTML.
Регистрация документов в реестре ФНС
Для регистрации эл. доверенностей и заявлений на отзыв в модуле Docflow (Документооборот):
•добавлен тип справочника PowerOfAttorneyQueueItem (Элемент очереди синхронизации эл. доверенностей). Наследник от Sungero.ExchangeCore.QueueItemBase. Очередь используется для регистрации эл. доверенностей и заявлений на отзыв, а также для установки их текущего статуса в реестре ФНС. Записи справочника создаются программно. Справочник скрыт в проводнике веб-клиента;
•сценарий ApprovalRegistrationFtsStage (Регистрация эл.доверенности/заявления на отзыв в реестре ФНС). Наследник от ApprovalFunctionStageBase (Этап типа «Сценарий»);
•асинхронные обработчики SetFPoARegistrationState (Получение статуса регистрации эл. доверенности в сервисе доверенностей и его установка) и SetFPoARevocationState (Получение статуса регистрации заявления на отзыв в сервисе доверенностей и его установка).
Порядок регистрации:
1.При нажатии на кнопку Зарегистрировать в ФНС в карточке документа или при выполнении сценария «Регистрация эл. доверенности/заявления на отзыв в реестре ФНС» в ходе согласования по регламенту отправляется синхронный запрос на добавление операции регистрации в очередь сервиса доверенностей.
2.Если операция добавилась в очередь, то возвращается ИД операции в сервисе доверенностей. ИД записывается в свойство OperationId (ИД операции) элемента очереди PowerOfAttorneyQueueItem. Также заполняется свойство OperationType (Тип операции): для эл. доверенности значением Registration, для заявления на отзыв – Revocation.
3.Дальнейшую обработку элементов очереди выполняют асинхронные обработчики SetFPoARegistrationState и SetFPoARevocationState. Они устанавливают актуальный статус для эл. доверенностей и заявлений на отзыв.
4.Если асинхронные обработчики не смогли получить статус документа, например, из-за недоступности сайта ФНС, то они отправляют запрос повторно. Количество повторов задается в новом параметре FPoAGetOperationRetriesMaxCount таблицы Sungero_Docflow_Params, по умолчанию – 50 раз. При превышении лимита, в карточке документа поле В реестре ФНС заполняется значением Ошибка регистрации, а в группе «Подробнее» фиксируется причина ошибки.
Проверка статуса электронных доверенностей в реестре ФНС
За проверку текущего статуса действующих электронных доверенностей отвечают новые компоненты модуля Docflow (Документооборот):
•фоновый процесс SyncFormalizedPowerOfAttorneyState (Делопроизводство. Проверка статуса эл. доверенностей в реестре ФНС);
•асинхронные обработчики SyncFormalizedPoAWithService (Установка актуального статуса эл. доверенности) и SetSignatureSettingValidTill (Заполнение даты действия права подписи в соответствии с эл. доверенностью).
Для отозванных доверенностей в справочник PersonalSetting в группу настройки уведомлений добавлены свойства MyRevokedFormalizedPoANotification (Уведомлять об отзыве моих доверенностей) и MySubordinatesRevokedFormalizedPoANotification (Уведомлять об отзыве доверенностей моих подчиненных).
Порядок проверки статуса:
1.Фоновый процесс работает с элементами очереди PowerOfAttorneyQueueItem, у которых свойство OperationType (Тип операции) заполнено значением StateCheck (Проверка статуса). Он получает эл. доверенности из очереди и делит их на пакеты.
2.По каждому пакету эл. доверенностей запускается асинхронный обработчик SyncFormalizedPoAWithService. Он получает актуальный статус документов из реестра ФНС и заполняет поля Состояние и В реестре ФНС в их карточках.
Если эл. доверенность отозвана:
•отправляет уведомление об отзыве согласно персональным настройкам PersonalSetting;
•запускает асинхронный обработчик SetSignatureSettingValidTill. В свою очередь этот обработчик заполняет поле Действует по в праве подписи, оформленной на доверенность.
В таблицу Sungero_Docflow_Params добавлен параметр SearchFPoAInFtsRegistryTemplateParamName – шаблон, по которому формируется гипрессылка на эл. доверенность на сайте ФНС.
Настройка интеграции с сервисом доверенностей
1.Добавлен новый модуль PowerOfAttorneyCore (Электронная доверенность. Настройки). Он содержит типы справочников для работы с эл. доверенностями и сервисом доверенностей:
•PowerOfAttorneyServiceApp (Приложение сервиса доверенностей) – хранит данные для подключения к сервису;
•PowerOfAttorneyServiceConnection (Подключение нашей организации к сервису доверенностей) – хранит настройки подключения к сервису.
Модуль PowerOfAttorneyCore скрыт с панели навигации в проводнике веб-клиента.
2.Добавлена библиотека PowerOfAttorneyServiceExtensions для работы с запросами к сервису доверенностей. В библиотеку включены методы для:
•отправки на регистрацию эл. доверенности и заявления на отзыв;
•проверки статусов эл. доверенностей;
•получения метаданных эл. доверенности.
3.Подключены сторонние библиотеки Polly и Polly.Contrib.WaitAndRetry (лицензия BSD-3-Clause). Они позволяют повторять HTTP-запросы к модулю PowerOfAttorneyCore по заданному таймауту.
Таймаут по умолчанию задается в константах модуля PowerOfAttorneyCore:
•PoARegisterRequestTimeout и PoARegisterOperationTimeout – на регистрацию и отзыв эл. доверенности;
•CheckPoAStateRequestTimeout и CheckPoAStateOperationTimeout – на синхронную проверку статуса;
•PoAAsyncActionsRequestTimeout и PoAAsyncActionsOperationTimeout – на остальные асинхронные операции.
Особенности обновления
В тип документа PowerOfAttorneyBase (Базовая доверенность) добавлены свойства AgentType (Тип представителя), IssuedToParty (Кому выдана). После обновления системы на новую версию в ранее созданных доверенностях свойства по умолчанию заполняются:
•AgentType заполняется значением Employee (Сотрудник);
•IssuedToParty заполняется значением Person (Персона) из прежнего поля IssuedTo (Кому выдана).
Прочие изменения по эл. доверенностям
1.В справочник Person добавлено новое свойство Citizenship (Гражданство).
2.В модуле Docflow публичная функция IsLockedByMe() перенесена из клиентского кода в разделяемый.
Автоматическое создание проектов подчиненных поручений
1.В модуле Company (Компания) добавлены:
•вычисляемая папка ManagersAssistants вместо списка «Ассистенты руководителей».
•абстрактный тип справочника ManagersAssistantBase (Ассистент руководителя) в качестве предка типа справочника ManagersAssistant (Ассистент руководителя).
•В модуле Intelligence (Интеллектуальные функции) добавлен тип справочника AIManagersAssistant (Виртуальный ассистент). В него добавлена функция CreateClassifier(), которая создает классификатор по исполнителям для виртуального помощника.
2.В модуле RecordManagement (Делопроизводственные документы) добавлены:
•тип справочника ActionItemPredictionInfo (Результат обработки документа для исполнения);
•тип справочника ActionItemTrainQueueItem (Элемент очереди обучения классификатора для поручений);
•серверные функции:
Функция |
Описание |
TryFinalizeTrainQueueItemsInProcess() |
Завершает элементы очереди на обучения классификатора для поручений со статусом "В процессе"; |
SetActionItemTrainQueueStatuses() |
Устанавливает статусы элементам очереди на обучение классификатора по исполнителям |
FinalizeTraining() |
Завершает элементы очереди на обучение классификатора по исполнителям |
EnqueueActionItemsForAIAssistantTraining() |
Ставит в очередь на обучение классификатора по исполнителям отобранные данные |
SetLastActionItemTrainQueueDate() |
Устанавливает время последней обработки элемента очереди на обучения классификатора по исполнителям |
PrepareAIAssistantTrainingData() |
Готовит и получает данные для обучения классификатора по исполнителям |
GetAIAssistantTrainingData() |
Формирует структуру данных для обучения классификатора по исполнителям |
GetAIAssistantTrainingCsv() |
Формирует CSV-файл для обучения классификатора |
GetLastActionItemTrainQueueDate() |
Получает время последней обработки элемента очереди на обучение классификатора по исполнителям |
GetActionItemsForAssigneeClassifierTraining() |
Получает список поручений для обучения классификатора по исполнителям |
GetOrCreateActionItemTrainQueueItem() |
Создает элемент очереди на обучения классификатора по исполнителям |
DeleteObsoleteTrainQueueItems() |
Удаляет элементы очереди на обучение классификатора по исполнителям, по которым завершена обработка |
TryDeleteActionItemTrainQueueItem() |
Удаляет элемент очереди на обучение классификатора по исполнителям |
GetMinTrainingSetSizeToPublishClassifierModel() |
Получает минимальное количество документов в обучающей выборке для публикации модели в классификатор по исполнителям |
GetVerifiedTrainQueueItems() |
Получает готовые к обучению элементы очереди на обучение классификатора по исполнителям |
AIAssistantTrain() |
Запускает обучение классификатора по исполнителям |
3.В модуле SmartProcessing (Интеллектуальная обработка) добавлены:
•тип справочника ExtractTextQueueItem (Элемент очереди на извлечение текста);
•серверные функции:
Функция |
Описание |
GetArioTrainingTask() |
Получает информацию о задаче на обучение классификатора |
CreateClassifier() |
Создает классификатор |
GetOrCreateExtractTextQueueItem() |
Получает или создает элемент очереди на извлечение текста |
TrainClassifierAsync() |
Запускает асинхронное обучение классификатора в сервисах Directum Ario |
UnpublishClassifierModel() |
Отправляет запрос на распубликацию модели классификатора |
4.В задаче типа «Задача на исполнение поручений» (ActionItemExecutionTask) добавлены серверные функции:
Функция |
Описание |
WithDraftActionItem() |
Проверяет необходимость подготовки проекта подчиненного поручения |
GetAIAssistantPreparingActionItemDrafts() |
Получает ИД виртуального ассистента |
AddDraftActionItemToParentAssignment() |
Связывает проект подчиненного поручения с заданием |
CreateDraftActionItemExecutionTask() |
Создает проект подчиненного поручения |
5.В таблице Sungero_Docflow_Params добавлены параметры:
Параметр |
Описание |
---|---|
TextExtractionTasksMaxCount |
Максимальное количество документов для исполнения, которое можно отправить в сервисы Directum Ario для извлечения текста. Значение по умолчанию 20 |
MinTrainingSetSizeToPublishClassifierModel |
Минимальное количество документов для публикации обученной модели классификации. Значение по умолчанию 100 |
LastActionItemTrainQueueDate |
Дата последнего запуска фонового процесса «Интеллектуальные функции. Подготовка данных для обучения виртуальных ассистентов». Заполняется автоматически |
6.Изменилась схема стандартного варианта процесса «Простое поручение». В нее добавлены блоки:
•PrepareDraftActionItemBlock (Создание проекта подчиненного поручения);
•DeleteDraftActionItemBlock (Удаление неотправленных подчиненных поручений);
•WaitArioProcessingBlock (Обработка документа сервисами Directum Ario).
Оптимизация стандартных вариантов процессов
В новой версии изменились схемы стандартных вариантов процессов. Блоки в столбце Было помечены как устаревшие. Вместо них рекомендуется использовать блоки, указанные в столбце Стало:
Вариант процесса |
Было |
Стало |
---|---|---|
Простое поручение |
SendActionItemToNextCoAssigneeBlockExecute (Отправка поручения следующему соисполнителю) |
SendActionItemsToCoAssigneesBlock (Отправка поручений соисполнителям) |
Составное поручение |
SendTaskByNextActionItemPartBlockExecute (Отправка задачи по следующему пункту поручения) WaitForCompletionActionItemPartsBlockResult (Ожидание исполнения всех пунктов составного поручения) |
SendTasksByActionItemPartsBlock (Отправка поручений равноправным исполнителям) |
Рассмотрение документа несколькими адресатами |
SendReviewToAddresseeBlockExecute (Отправка задачи на рассмотрение) WaitForAddresseesReviewBlockResult (Ожидание завершения рассмотрения) |
SendReviewTasksToAddresseesBlock (Отправка задач на рассмотрение) |
Прочее
1.В тип документа OfficialDocument (Официальный документ) модуля Docflow добавлена константа DocumentHistoryCommentMaxLength. В ней указывается максимальная длина комментария в истории документа;
2.В модуле Counterparty (Контрагенты) разделяемая статическая функция GetTypeDisplayValue() помечена как устаревшая. Вместо нее рекомендуется использовать разделяемую виртуальную функцию GetTypeDisplayValue() модуля Commons (Общие справочники);
3.В библиотеке ArioExtensions:
•добавлены методы ExtractFactsAsync и DeserializeExtractFactsResultString для поддержки асинхронного извлечения фактов;
•методы библиотеки для формирования контента и отправки запросов сделаны публичными для поддержки новых методов сервисов Directum Ario.
© Компания Directum, 2024 |