5.5 Передача контекста для формы редактирования

При заполнении полей в форме редактирования может быть важен контекст, в рамках которого заполняются структурированные данные: исходные данные текущей карточки СЭД или другие параметры, которые необходимо учитывать при заполнении полей. Например: список сотрудников организации или список приложений к документу. Чтобы передать в форму редактирования данные, необходимо использовать команду initData. Команду рекомендуется выполнять до заполнения формы, т. к. некоторые переданные параметры применяются как фильтрация значений, доступных для выбора пользователю.

Команда: initData

Действие:

Передает в форму редактирования контекст ввода документа из СЭД: то есть исходные данные, которые необходимо передать в форму редактирования для использования при заполнении полей.

Параметры:

  • data (объект): {
    • session_id (строка не менее 16 символов, опционально),
    • ID сессии (песочницы) в рамках которой организована изоляция данных. Если параметр задан, в форме редактирования будут доступны только процессы по документам с соответствующим ID сессии. Если параметр не задан, то доступны данные процессов по всем документам. Параметр «session_id» назначается цифровому документу при регистрации во внутреннем модуле координации (см. раздел 6.8 Регистрация цифрового документа во внутреннем модуле координации «Портала ГосЭДО»).
    • selector (объект, опционально): {
      Объект позволяет передать вид документа, который заполняется в форме. Если данные объекта заполнены, в форме редактирования сразу откроется нужная форма ввода документа, таким образом позволяя пропустить выбор вида информационного взаимодействия, вида события и вида документа.
      • InformationInteractionsType (строка),
        Идентификатор вида информационного взаимодействия согласно справочнику НСИ Cat01-002-00003 "Виды информационных взаимодействий". Например, "Exc01-003-00001" для процесса "Служебная переписка".
      • InformationInteractionsEvent (строка),
        Идентификатор вида события согласно справочнику НСИ Cat01-002-00006 "Виды событий" для вида информационного взаимодействия, указанного в свойстве InformationInteractionsType. Например, "Exc01-004-00003-Event0001" для события "Отправка письма".
      • ElectronicDocumentsType (строка)
        Идентификатор вида документа согласно справочнику НСИ Cat01-002-00002 "Виды электронных документов" или код формы, из перечня видов документов для события, указанного в свойстве InformationInteractionsEvent. Например, "Doc01-004-00001". Также в значении параметра возможно указать строку с наименованием вида документа: например "Универсальный документ".
      • },
    • organization_guid (строка, опционально),
      GUID организации согласно ГАС, от имени которой создается документ. Если параметр не задан, то значение берется из настроек «Портала ГосЭДО» (раздел «Настройки»→«МЭДО», поле «GUID-адрес организации»).
    • organization_title (строка, опционально),
      Наименование организации, от имени которой создается документ. Если параметр не задан, то значение берется из настроек «Портала ГосЭДО» (раздел «Настройки»→«МЭДО», поле «Наименование организации»).
    • attachments ([массив объектов], опционально): [
      Массив объектов с информацией о вложенных файлах. Используется для формирования перечня приложений к документу. Например, переданный массив документов будет доступен для выбора в блоке «ПриложенияДокумента» при заполнении формы по виду документа «Служебное письмо».
      Каждый объект массива имеет следующую структуру:
      • {
      • id (строка),
        Уникальное техническое имя файла в контейнере по шаблону ГосЭДО. Согласно формату ГосЭДО техническое имя файла является строкой из символов [a-z0-9_-.] длиной от 1 до 60 и является частью ИД приложения, которое формируется по маске: enclosure_[a-z0-9_-.]{1,60}\.(gosx|pdf|zip|odt|doc|docx|ods|xls|xlsx|odp|ppt|pptx|tiff|html). Пример: в форму передано значение id=’d09de43’ и имя файла ’письмо.pdf’, в структурированных данных имя файла приложения будет сформировано как «enclosure_d09de43.pdf».
      • name (строка),
        Пользовательское имя файла, не имеющее ограничений на шаблон.
      • description (строка)
        Назначенное пользователем описание файла.
      • }
    • ],
    • linked_docs ([массив объектов], опционально): [
      Массив информации о связанных документах (контейнерах). Используется для фильтрации доступных для выбора процессов в форме редактирования. Например, при формировании доклада на поручение список связанных документов используется «Порталом ГосЭДО», чтобы при выборе значения в блоке «ИнформацияОПроцессе» отобразить только процессы по связанным документам. Если параметр не задан, то пользователю доступны все активные процессы (в рамках заданного идентификатора сессии).
      Каждый объект массива имеет следующую структуру:
      • {
      • guid (строка),
        GUID контейнера связанного документа.
      • title (строка),
        Пользовательское название документа для отображения при выборе.
      • reg_num (строка),
        Регистрационный номер документа для отображения при выборе.
      • reg_date (число)
        Дата регистрации документа (unix time) для отображения при выборе.
      • }
    • ],
    • users ([массив], опционально): [
      Массив сотрудников организации (пользователей). Используется для выбора в соответствующих полях формы редактирования, где необходимо указать сотрудника организации (например при выборе сотрудника в форме цифрового документа «Акт об ознакомлении с документом ДСП»).
      Каждый объект массива имеет следующую структуру:
      • {
      • id (строка),
        Уникальный идентификатор сотрудника организации.
      • fio (строка)
        Фамилия, имя, отчество сотрудника организации.
      • }
    • ]
  • }

Пример реализации в JavaScript:

<script>
    //функция, которая выполняется при нажатии кнопки «Инициализировать контекст»
    function initContext() {
        jsonData = {
            //идентификатор сессии
            session_id: document.querySelector('#sessionId').value,
            //данные вида информационного взаимодействия, вида события и документа
            selector: {
                InformationInteractionsType: 'Exc01-004-00003',
                //вид информационного взаимодействия
                InformationInteractionsEvent: 'Exc01-004-00003-Event0002',
                //вид события
                ElectronicDocumentsType: 'Универсальный документ' //вид документа
            },
            //GUID организации согласно ГАС
            organization_guid: 'b23a5a35-dde3-48ef-aa07-621eb56417db',
            //Наименование организации согласно ГАС
            organization_title: 'Минфин России',
            //Приложения к документу (массив объектов), в данном примере 2 приложения: проект.docx и схема.pdf
            attachments: [
                {id: 'd0725f36',name: 'проект.docx',description: 'проект договора'},
                {id: 'f09daf08',name: 'схема.pdf',description: 'схема проезда'}
                ],
            //список связанных документов (массив объектов), в данном примере 2 связанных документа
            linked_docs: [
                {guid: '3367493a-097a-468e-8ff3-7366858303e2',
                title: 'Служебное письмо №3',reg_num: '3',reg_date: 1691096400},
                {guid: '4367493a-097a-468e-8ff3-7366858303e2',
                title: 'Служебное письмо №4',reg_num: '4',reg_date: 1691200000}
            ],
            //список сотрудников организации, которые будут доступны для выбора в полях формы,
            // где нужно выбрать значение из справочника сотрудников
            users: [
                {id: 1,fio: 'Иванов Иван Иванович'},
                {id: 2,fio: 'Петров Петр Петрович'},
                {id: 3,fio: 'Сидоров Сергей Сергеевич'}
            ]
        };
        // Получение в переменную editorWindow открытого окна редактора цифровых документов по id=editor
        let editorWindow = document.querySelector('#editor').contentWindow;
        // Передача данных в форму редактирования методом POST
        // Команда initData
        // Параметры - объект jsonData, заполненный необходимыми данными выше
        editorWindow.postMessage({
            system_id: 'GosedoPortal',
            data: {
                action: 'initData',
                data: jsonData
            }
        },
        '*');
    }
</script>
<!-- фрейм с подключенной формой редактирования данных Портала ГосЭДО-->
<iframe id="editor" src="http://10.77.142.21:84/#/constructor/selector/?theme=light"></iframe>
<!-- поле для ввода идентификатора сессии -->
<input id="sessionId" type="text" placeholder="session_id (от 15 знаков)"/>
<!-- кнопка, по нажатию на которую произойдет загрузка контекста в форму-->
<button onclick="initContext()"> Инициализировать контекст</button>

С выполнением демонстрационного примера по описанной функции можно ознакомиться в разделе 4.2 Пример заполнения структурированных данных и передача контекста в редактор.

Последнее изменение: Wednesday, 26 June 2024, 13:00