Задача [0268]: Копирование полей между записями реестров

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

Используется: Конфигуратор -> Реестры.

Решение:

Необходимо реализовать специальный процесс действия "Сопоставление в реестр". Данный процесс будет производить сопоставление настроенных полей исходного реестра и реестра приемника следующем образом:

  1. Методолог при редактировании исходного реестра добавляет сопоставление для реестра приемника (должно быть хотя бы одно сопоставление, которое настроено именно для реестра приемника), при этом настраиваемые параметры имеют следующий смысл:

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

    • "Поле реестра приемника" - выбирается идентификатор компонента, в который процессом будет записываться сопоставляемое значение согласно "Способу сопоставления";

    • "Способ сопоставления" - выбирается один из необходимых вариантов;

    • "Параметр сопоставления" - вводится параметр, либо настраивается в диалоге для типа согласования HTD.

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

  3. При добавлении процесса "Сопоставление в реестр" редактироваться должно только название этапа. Поле "Возврат" доступно для выбора значений, остальные поля не доступны для редактирования (поле "Ответственный", поле "Нагрузка", поле "Длительность" и поле "Форма завершения").

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

    • текстовое поле Идентификатор компонента "Ссылка на реестр", в которое необходимо ввести соответствующий идентификатор (возможно исполнение альтернативного потока событий 1 при попытке сохранить введенное значение);

    • кнопка "Сохранить", которая находится в неактивном режиме при пустом текстовом поле.

    При этом допускается использование компонента, находящегося внутри динамической таблицы (в нотации dyntable-name.component-name). Сопоставление для такого компонента должно быть произведено для всех строк динамической таблицы (т.е. значения должны сопоставиться во все записи, выбранные в компоненты).

Рисунок 210. Макет диалогового окна "Параметры сопоставления"

Макет диалогового окна "Параметры сопоставления"

В случае успешного выполнения процесса:

Этап считается пройденным неуспешно в случае, если пользователь не выбрал запись, для которой должно происходить сопоставление. В ходе выполнения документа исходного реестра отобразить этап "Не сопоставлено" с комментарием: Не выбрана запись реестра (остальные поля в ходе выполнения заполнить стандартно) при этом, не изменять документ из реестра приемника (не производить сопоставление).

Выделим отдельно случай, для которого этап также считается пройденным неуспешно:

  1. В компоненте "Ссылка на реестр" формы, использованной для создания исходного реестра выбран некоторый реестр приемник либо вообще не выбран реестр.

  2. При редактировании исходного реестра добавлены сопоставления для выбранных некоторых других реестров, ни один из которых не совпадает с реестром, выбранном в шаге 1.

В качестве идентификатора компонента "Ссылка на реестр" указан идентификатор компонента из шага 1 и сохранен этап действия с процессом "Сопоставление в реестр". Причем, не важно в каком порядке методолог выполняет действия (можно сперва настроить этап действия, а затем добавлять сопоставления и наоборот).

В этом случае, необходимо отобразить этап "Не сопоставлено" с комментарием: Ошибка в конфигурации. Обратитесь к методологу. Не изменять документ из реестра приемника.

Замечание:

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

Альтернативные потоки событий:

Алтернативный поток событий №1: В случае, если методолог нажимает на кнопку "Сохранить" в диалоговом окне "Параметры сопоставления":

выводить ошибку: Введен некорректный идентификатор компонента и:

Пример использования:

Пусть имеются Методолог_1, Сотрудник_1, Сотрудник_2, Форма_И и Форма_П. По этим формам имеются Реестр_И и Реестр_П соответственно. Причем в Реестре_П содержатся записи. (И - исходный реестр для ввода новых значений, П - реестр-приемник, в который копируются значения из Реестра_И).

Формы содержат следующие компоненты:

  1. Методолог_1 открывает на редактирование Реестр_И и добавляет при активации элемента:

    • в раздел Предварительные этапы этап с типом "Согласование" и в качестве ответственного выбирает Сотрудника_2;

    • в раздел Действия этап с типом "Сопоставление в реестр". При этом необходимо в поле Идентификатор компонента "Ссылка на реестр" ввести идентификатор Компонента_Р.

  2. Также Методолог_1 добавляет сопоставление при редактировании Реестра_И для выбранного Реестра_П:

    • в качестве Поля исходного реестра - выбран идентификатор Компонента_ЧИ;

    • в качестве Поля реестра приемника - выбран идентификатор Компонента_ЧП;

    • в качестве Способа сопоставления - выбран вариант EQUAL.

  3. Сотрудник_1 создает Запись_И в Реестре_И и в компоненте выбора реестра, выбирает необходимую Запись_П из Реестра_П. Сотрудник_1 изменяет значение в Компоненте_ЧИ и нажимает зеленую кнопку с настроенным названием для запуска маршрута.

  4. Запись переходит в режим исполнения маршрута, создается работа-согласование для Сотрудника_2.

  5. Сотрудник_2 согласовывает созданную работу-согласование. После этого Компонент_ЧП в Записи_П приобретает значения из Компонента_ЧИ Записи_И и маршрут исполнения Записи_И на этом завершается.

При этом в ходе выполнения Записи_И отображается этап копирования в реестр и в Записи_П в закладке "Изменения в документе" карточки документа отобразится информация о сопоставлении полей в документ.