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". Также в значении параметра возможно указать строку с наименованием вида документа: например "Универсальный документ". - },
- InformationInteractionsType (строка),
- 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 Пример заполнения структурированных данных и передача контекста в редактор.