Настройка синхронизации данных требуется в случае работы с модулем «Студент» (Личный кабинет студента — ЛКС). Для использования модуля «Абитуриент» (Личный кабинет абитуриента — ЛКА) настройка синхронизации данных не требуется.
Перед синхронизацией убедитесь, что версии приложений ТАНДЕМ.Университет и ТАНДЕМ.Интеграция являются одинаковыми, а релизы актуальными.
Настройка ТАНДЕМ.Интеграция
Добавление адаптера для связи с личными кабинетами
Более подробная информация по настройке адаптеров находится в руководстве по ТАНДЕМ.Интеграция
Перейдите в меню Система | Настройки | Интеграция | Подсистемы.

Нажмите кнопку [Добавить подсистему].
В открывшемся окне заполните поля:
- Адрес адаптера подсистемы НСИ – Адрес по которому доступен интеграционный адаптер приложения личных кабинетов.
- Логин – Указывается в настройках адаптера.
- Пароль – Указывается в настройках адаптера.
- Код подсистемы – Уникальный код для идентификации подсистемы в ТАНДЕМ.Интеграция.
- Наименование подсистемы – Название для отображения в списке подсистем. Обычно указывается понятное название. Например «Тестовый адаптер для личных кабинетов».

Во время настройки ТАНДЕМ.Интеграция попытается автоматически сконфигурировать адаптер и возможно выдаст ошибку:
Адрес
http://lk.example.com/adapterне доступен. Вероятно, данная подсистема не поддерживает автоконфигуирование.
Можно её проигнорировать и настраивать дальше. Если при сохранении выдаётся ошибка о недоступности подсистемы, то следует проверить корректность ввода адреса адаптера ЛК, правильность его настройки и доступность для сервера ТАНДЕМ.Интеграция на указанном адресе адаптера ЛК. Если адаптер ЛК не доступен по объективным причинам в данный момент, то адаптер всё равно сохранится после повторного нажатия кнопки [Сохранить].
Настройка адаптера
После добавления адаптера необходимо выставить права на чтение для необходимых справочников на вкладке Права доступа:

На вкладке Подписки включите подписку для необходимых справочников.
Список справочников (потоков) представлен в разделе Взаимодействие с модулями ТАНДЕМ.Университет.

Первичная синхронизация
Для более быстрой загрузки больших объёмов данных предусмотрен механизм импорта данных из файлов. Данный механизм позволяет более быстро провести первичную синхронизацию данных за счёт отсутствия необходимости формирования и расшифровки SOAP-пакетов для сетевого обмена данными между синхронизируемыми приложениями.
ВНИМАНИЕ! Выгрузку и загрузку данных следует выполнять в следующей последовательности:
- Выгрузить все необходимые справочники из подсистемы ТАНДЕМ.Университет
- Загрузить данные, полученные на шаге п.1 в Интеграционную шину (ТАНДЕМ.Интеграция)
- Выгрузить те же справочники из Шины.
- Загрузить данные, полученные на шаге п. 3 в Личный кабинет.
Перед первичной синхронизацией необходимо остановить очереди пакетов в ТАНДЕМ.Интеграция и ТАНДЕМ.Университет. Меню Интеграция | Очередь пакетов.


Важно помнить, что при этом отправка новых изменений будет временно приостановлена и будет происходить накопление изменений в очереди пакетов. Как только очередь разблокируют, пакеты будут отправлены в Шину и пересланы подсистемам-подписчикам. Чтобы более свежие данные, поступающие в пакетах из очереди не перетерлись более старыми данными из выгрузки, не рекомендуется возобновлять отправку изменений до окончания синхронизации выгрузками.
ВНИМАНИЕ! Очереди разблокируются автоматически после перезапуска, или обновления приложения. Если процедура синхронизации ещё не завершена, но требуется перезапустить приложения, то необходимо заблокировать очереди пакетов сразу после старта приложения.
Выгрузка данных из ТАНДЕМ.Университет
Необходимо выгрузить справочники из ТАНДЕМ.Университет. Выгрузка справочников осуществляется из меню Интеграция | Справочники НСИ:

В меню выгрузки выберите необходимые справочники . И нажмите кнопку [Выгрузить].
Выгружать справочники желательно порциями, так можно будет загружать часть данных в Шину и ЛК параллельно тому, как выгружаются остальные.

Список необходимых справочников (потоков)
На этот же список нужно настроить подписки на стороне ТАНДЕМ.Интеграция в меню настройки адаптера. Как настраивать адаптер смотрите в Настройка ТАНДЕМ.Интеграция.
Список поддерживаемых потоков с описанием можно найти в разделе Взаимодействие с модулями ТАНДЕМ.Университет.
После окончания генерации файлов их можно будет скачать в том же меню. Для этого необходимо выбрать нужный файл в списке готовых архивов и нажать кнопку [Скачать]:

Загрузка данных в подсистему ТАНДЕМ.Интеграция
Полученный архив необходимо загрузить в ТАНДЕМ.Интеграция. Форма загрузки доступна в меню Интеграция | Справочники НСИ по нажатию ссылки [Загрузить данные справочников из файла]. При этом откроется форма загрузки данных:

Загрузка архива с данными осуществляется посредством выбора соответствующего файла в поле Архив с XML-Файлами (по клику на иконке с открытой папкой справа от поля ввода) и нажатия ссылки [Добавить архив для обработки]. При этом архив будет загружен в рабочую папку на сервере приложения ТАНДЕМ.Интеграция. После завершения загрузки можно будет выбрать этот архив в списке Файлы для загрузки.
Для корректной загрузки данных в систему в случае отсутствия части ссылочных объектов, требуется так же указать подсистему-источник, из которой выгружен архив с данными. Поле Подсистема-источник появится после выбора файла для загрузки. В это поле необходимо указать подсистему ТАНДЕМ.Университет. Запуск процедуры импорта осуществляется по нажатию ссылки [Начать импорт]. При этом откроется диалоговое окно прогресса загрузки. По окончании загрузки будет выдано сообщение об окончании загрузки.
Галочка «Отправить данные из архива подписчикам» должна остаться отключенной, поскольку загрузку в ЛК предполагается выполнять вручную.
Выгрузка данных из ТАНДЕМ.Интеграция
Выгрузка данных из продукта ТАНДЕМ.Интеграция осуществляется аналогично выгрузке из продукта ТАНДЕМ.Университет.


Загрузка данных в ЛК
Архив необходимо загрузить на сервер где установлено приложение личных кабинетов в директорию адаптера для обмена данными с интеграционной шиной.
Обычно, устанавливается рядом с приложением личного кабинета. Например в
/var/www/html/nsi-adapterили/var/www/html/lk/nsi-adapter.
Распакуйте содержимое архива в директорию адаптера nsi-adapter/storage/uploads.
Обновите адаптер и само приложение до последней версии. Находясь в корневой директории с адаптером, выполните команду:
root:/var/www/html/nsi-adapter# git pull origin master
Для загрузки файлов должна быть установлена утилита xml_split.
Для этого выполните:
sudo apt update
sudo apt install xml-twig-tools
Для начала загрузки файлов выполните:
root:/var/www/html/nsi-adapter# php artisan xml:upload
Можно указать загрузку конкретного файла. Для этого укажите в качестве параметра имя нужного файла:
root:/var/www/html/nsi-adapter# php artisan xml:upload --file=CourseType.xml
Взаимодействие с модулями ТАНДЕМ.Университет
Личный кабинет взаимодействует с другими системами ОУ благодаря интеграционной шине, которая позволяет внедрить единые стандарты интеграции разнородных программных продуктов в единую, согласованную по данным информационную систему Университета.
Перечень используемых интеграционных потоков:
| № пп | Код интеграционного потока | Код справочника в БД ЛК | Название |
|---|---|---|---|
| 1 | AcademicDegreeType | academic_degrees | Ученая степень |
| 2 | AcademicGroupType | groups | Академическая группа |
| 3 | AcademicStatusType | academic_statuses | Ученое звание |
| 4 | AddEventTypeType | tr_journal_add_event_type | Тип дополнительных событий журнала |
| 5 | CompensationTypeType | compensation_types | Вид возмещения затрат |
| 6 | CourseType | courses | Курс |
| 7 | DepartmentType | departments | Подразделение |
| 8 | DepartmentTypeType | department_types | Тип подразделения |
| 9 | DevelopFormType | develop_forms | Форма освоения |
| 10 | DevelopPeriodType | develop_periods | Срок освоения |
| 11 | EducationalProgramType | educational_programs | Направление подготовки (образовательная программа) |
| 12 | EducationLevelsHighSchoolType | education_levels_high_schools | Образовательная программа |
| 13 | EducationYearType | education_years | Учебный год |
| 14 | EduLevelType | edu_levels | Уровень образования |
| 15 | EduPlanBlockType | edu_plan_blocks | Блок учебного плана (версии УП) |
| 16 | EduPlanRowLoadType | edu_plan_row_loads | Итоговая нагрузка строки учебного плана по видам нагрузки |
| 17 | EduPlanRowTermActionType | edu_plan_row_term_actions | Нагрузка строки версии учебного плана в семестре (по формам контрольных мероприятий) |
| 18 | EduPlanRowTermLoadType | edu_plan_row_term_loads | Нагрузка строки версии учебного плана в семестре (по видам теоретической нагрузки) |
| 19 | EduPlanRowTermType | edu_plan_row_terms | Нагрузка в семестр строки учебного плана |
| 20 | EduPlanRowType | edu_plan_rows | Строка учебного плана |
| 21 | EduPlanVersionType | edu_plan_versions | Учебный план (версия) |
| 22 | EduProgramQualificationType | edu_program_qualifications | Квалификация профессионального образования |
| 23 | EduProgramSubjectType | edu_program_subjects | Направление подготовки профессионального образования |
| 24 | EduSpecializationBaseType | edu_specialization_bases | Направленность высшего профессионального образования |
| 25 | EmployeeDepartmentHeadType | employee_department_heads | Руководитель подразделения |
| 26 | EmployeeForPpsEntryType | employee_for_pps_entries | Сотрудник для записи в реестре ППС |
| 27 | EmployeeStatusType | employee_statuses | Состояние сотрудника |
| 28 | EmployeeType | employees | Сотрудник |
| 29 | EmploymentTypeType | employment_types | Тип назначения на должность |
| 30 | EnrEnrollmentExtractType | enr_enrollment_extract | Выписка приказа о зачислении абитуриентов |
| 31 | EnrOrderType | enr_orders | Приказ на абитуриентов |
| 32 | EnrOrderTypeType | enr_order_types | Тип приказа о зачислении |
| 33 | EppControlActionTypeType | epp_control_action_types | Форма контроля |
| 34 | EppGroupTypeType | epp_group_types | Вид потоков |
| 35 | EppRealEduGroupRowType | epp_real_edu_group_rows | Запись обучающегося в потоке |
| 36 | EppRealEduGroupType | epp_real_edu_groups | Поток обучающихся |
| 37 | EppRegistryElementPartFControlActionType | epp_registry_element_part_f_control_actions | Итоговое контрольное мероприятие (часть версии элемента реестра) |
| 38 | EppRegistryElementPartType | epp_registry_element_parts | Часть версии элемента реестра |
| 39 | EppRegistryStructureType | epp_registry_structures | Структура реестра |
| 40 | EppStudentWorkPlanElementType | epp_student_work_plan_elements | Мероприятие обучающегося из РУП (МРУП) |
| 41 | EppYearEducationProcessType | epp_year_education_processes | Начало учебного года |
| 42 | EppYearPartType | epp_year_parts | Часть года (в учебном году) |
| 43 | ExtractStatesType | extract_states | Состояние выписки |
| 44 | ForeignLanguageSkillType | foreign_language_skills | Степень владения иностранным языком |
| 45 | ForeignLanguageType | foreign_languages | Иностранный язык |
| 46 | GradeType | grades | Тарифный разряд |
| 47 | HourlyPaidEmployeeForPpsEntryType | hourly_paid_employee_for_pps_entries | Почасовик для записи в реестре ППС |
| 48 | HourlyPaidEmployeeType | hourly_paid_employees | Сотрудник-почасовик |
| 49 | HumanAcademicDegreeType | human_academic_degrees | Ученая степень физического лица |
| 50 | HumanAcademicStatusType | human_academic_statuses | Ученое звание физического лица |
| 51 | HumanContactDataType | human_contact_data | Контактные данные физического лица |
| 52 | HumanType | humans | Физическое лицо |
| 53 | IdentityCardKindType | identity_card_kinds | Вид удостоверения личности |
| 54 | IdentityCardType | identity_cards | Удостоверение личности |
| 55 | LksStudentPortfolioElementKindType | portfolio_element_kinds | Вид достижения |
| 56 | LksStudentPortfolioElementStatusType | portfolio_element_statuses | Статус элемента портфолио |
| 57 | LksStudentPortfolioElementType | portfolio_elements | Элемент портфолио студента |
| 58 | OrderStatesType | order_states | Состояние приказа |
| 59 | OrganizationType | organizations | Учреждение |
| 60 | PersonForeignLanguageType | person_foreign_languages | Иностранный язык персоны |
| 61 | PlaceType | places | Помещение |
| 62 | PostType | posts | Должность |
| 63 | PpsEntryByEmployeeType | pps_entry_by_employees | Запись в реестр ППС (на базе сотрудника) |
| 64 | RealEduGroup2PpsEntryType | real_edu_group2_pps_entries | ППС для потока обучающихся |
| 65 | RegistryDisciplineType | registry_disciplines | Элемент реестра дисциплин для учебного плана |
| 66 | ScheduleEventPlaceType | schedule_event_places | Связь события с местом |
| 67 | SessionSlotLinkMarkType | session_slot_link_marks | Оценка обучающегося в сессии (ссылка) |
| 68 | Student2EduPlanBlockType | student2_edu_plan_blocks | Связь студента с блоком учебного плана |
| 69 | StudentCategoryType | student_categories | Категория обучающегося |
| 70 | StudentOrderChangeFioExtractType | student_order_change_fio_extracts | Детальная информация приказа по обучающемуся (о смене ФИО) |
| 71 | StudentOrderExtractType | student_order_extracts | Выписка из приказа по движению контингента обучающихся |
| 72 | StudentOrderMoveExtractType | student_order_move_extracts | Детальная информация приказа по обучающемуся (о переводе) |
| 73 | StudentOrderType | student_orders | Приказ по движению контингента обучающихся |
| 74 | StudentOrderTypeType | student_order_types | Типы приказов по движению контингента обучающихся |
| 75 | StudentStatusType | student_statuses | Состояние обучающегося |
| 76 | StudentType | students | Обучающийся |
| 77 | TimeTableEventRealType | time_table_event_reals | Событие оперативного расписания |
| 78 | TimeTableVersionType | time_table_versions | Версия расписания |
| 79 | TrAbsenceReasonType | tr_journal_absence_reasons | Причины пропуска занятий |
| 80 | TrJournalGroupEmployeeType | tr_journal_group_employees | Преподаватель в потоке обучающихся в журнале |
| 81 | TrJournalGroupEventStudentResultType | tr_journal_group_event_student_results | Баллы обучающегося по событию |
| 82 | TrJournalGroupEventType | tr_journal_group_events | Событие в журнале |
| 83 | TrJournalGroupStudentType | tr_journal_group_students | Обучающийся в потоке обучающихся в журнале |
| 84 | TrJournalGroupType | tr_journal_groups | Поток обучающихся в журнале |
| 85 | TrJournalPartType | tr_journal_parts | Раздел реализации |
| 86 | TrJournalType | tr_journals | Журнал преподавателя по предмету (реализация дисциплины) |
| 87 | TrJournalEventType | tr_journal_events | Событие в реализации дисциплины |
| 88 | TrStudentJournalRatingType | tr_student_journal_ratings | Балл обучающегося по реализации мероприятия |
| 89 | TtEvent2PpsType | tt_event2_pps | ППС для события расписания |
| 90 | TtEventReal2EduGroupType | tt_event_real2_edu_groups | Связь события оперативного расписания с потоком обучающихся |
| 91 | YearDistributionPartType | year_distribution_parts | Часть учебного года |
| 92 | YearDistributionType | year_distributions | Разбиение учебного года |
