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

Исполнитель: ООО МайТэк

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

Задача

В текущей актуальной версии системы DIRECTUM механизм связывания документов имеет ряд ограничений, которые не позволяют пользователям гибко управлять связями документов. Чтобы снять эти ограничения было разработано техническое решение «Управление связями документов», которое представляет собой альтернативный расширенный механизм управления связями документов.

Возможности

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

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

Описание 

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


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

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

  •  - Создание связи с документом из системы DIRECTUM. Существует возможность выбрать сразу несколько документов.
  •  - Создание документа из файловой системы с автоматическим связыванием документа с текущей записью справочника или документом.
  •  - Обновление дерева связей документов.
  •  - Редактирование выбранных связей документов.
  •  - Удаление выбранных связей документов.
  •  - История работы со связью документа.
  •  - Сортировка связей документов по наименованию.
  •  - Свернуть/развернуть группы типов связей документов.
  •  - Справка по работе со связями документов.

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


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

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

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

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

Настройка доступа к типам связей документов осуществляется в справочнике «Типы связей документов».

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

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

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

Результаты применения решения

Для администратора

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

Для прикладного разработчика

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

Для пользователя

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

Ознакомиться с возможностями решения можно в предлагаемом ниже демо-ролике.

Номинация: Forum
Организация: ООО МайТэк
20
Подписаться
Опубликовано:
6 декабря 2018 в 15:11
  • 4

Комментарии

Дмитрий, мой вам респект.

Задумывался над тем, что бы пилить подобную разработку, но требования по интерфейсу ставил сильно выше. А потому не поднял . Вот ведь как... общие проблемы системы ведут к подобным идеям.

В идеях на реализацию были ещё некоторый фичи: А именно:

Типы связей, которые эти связи хранят в левых источниках информации. Например: связь вида: документ -> карточка -> карточка -> документ. Можно было бы составить SQL запрос, который такую связь отображал бы. А в вашей разработке, например, на тип связи этот запрос назначить. И для этого типа связь бралась бы из другого источника.

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

Михаил Тарасов: обновлено 07.12.2018 в 07:03

Михаил, спасибо вам за отзыв! Согласен, решение есть куда развивать, но пока решили оставить его в таком виде. Большинству пользователей системы и этого функционала более чем достаточно и при необходимости решение можно доработать уже персонально под конкретные требования заказчика.

А можете поподробнее пояснить про связь вида "документ -> карточка -> карточка -> документ"? Не совсем понятно что это за связь и какую задачу она должна решить.

Ну, например: 

Реальный кейс из нашей практики. Есть у нас договорные документы (не стандартный модуль Directum). В карточке документа ссылка на карточку договора. В карточке договора (доп. соглашения. Используется одна карточка) ссылка на другую карточку договора. А на неё, в свою очередь ссылается ещё один договор. Вот и выходит: Документ -> карточка -> карточка -> документ. Такая же история у нас с закупочными ордерами. 

Договорной документ -> карточка договора -> карточка ордера -> закупочный ордер.

Сейчас есть вычисления, которые отслеживают каждый элемент этой связи (ссылка документа на карточку, ссылка карточки на карточку, ...) и при их изменении, создает стандартную связь Directum между документами (Доп. соглашением и договором. Ордером и доп. соглашением.)

Помимо того, что стандартные связи не надёжны (ваша разработка эту проблему решает), их приходится дублировать. И отслеживать изменения... А вообще то было бы замечательно, если факт связи устанавливался в результате одного SQL запроса, в котором бы join'ились бы необходимые для этой связи таблицы...

Или ещё пример: 
Есть у нас инвойсы, упаковочные листы и сертификаты качества. Эти документы размещаются и связываются на основе данных из учетной системы. Связь производится отслеживанием изменений в SQL View, предоставляемым через DBLink сторонней системой. По результатам анализа изменений view, документы связываются или отвязываются в Directum. И тоже было бы здорово отображать эти связи, не храня их в Directum...

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

Авторизуйтесь, чтобы написать комментарий