enumslab
Начало работы

Системы и переключение

Как работать с несколькими подключениями, переключать активную систему и почему интерфейс меняется под 1С или iiko

Что это и зачем

enumslab умеет хранить несколько учётных подключений одновременно. Каждое подключение принадлежит к одному из типов системы (поле system_type): на сегодня это 1c (1С:Предприятие через защищённый туннель) и iiko (облако iiko). В любой момент активно ровно одно подключение — все экраны, отчёты, чат, загрузка документов и аналитика работают именно с ним.

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

Как создать подключения, описано в разделах Подключение 1С и Подключение iiko.

Где находится переключатель

Переключатель подключений живёт в верхней панели справа, рядом с индикатором связи и меню пользователя. Технически это выпадающий список в блоке connection-selector.

Важная деталь: список показывается, только если у компании больше одного подключения. Если подключение одно, переключать нечего — выпадающий список не отображается, остаётся лишь индикатор-«точка» состояния связи.

Каждый пункт списка подписан так: сначала отображаемое имя подключения (display_name), а через разделитель «·» — короткая метка типа системы. Метку формирует функция getSystemLabel:

  • system_type = 1c → метка 1C
  • system_type = iiko → метка iiko
  • иной тип системы (если он появится в будущем) → значение типа в верхнем регистре, например MOYSKLAD

Если у подключения нет отображаемого имени, в подписи остаётся одна метка системы; если и её нет, подпись по умолчанию — 1С. Те же правила применяются к подсказке (title) у индикатора связи.

Как переключить активную систему (шаги)

  1. Откройте выпадающий список подключений в верхней панели справа.
  2. Выберите нужное подключение. Сразу появляется уведомление База данных изменена.
  3. Платформа проверяет подписку для выбранного подключения, обновляет права и набор доступных модулей. Меню слева перестраивается под тип системы нового подключения.

Что происходит при переключении:

  • Выбор сохраняется в браузере (ключи selectedConnectionId и selectedConnectionName), поэтому при следующем входе откроется то же подключение.
  • Выполняется проверка подписки выбранного подключения. Если подписка неактивна (ответ содержит subscription_inactive), показывается экран-блокировка с сообщением о статусе, и работать с этим подключением нельзя до восстановления подписки.
  • Проверяется связь с системой: индикатор-«точка» становится активным при ответе со статусом ok и гаснет (подпись Нет связи), если система недоступна.
  • Подгружаются тип системы и список её возможностей (capabilities) для нового активного подключения — на их основе перестраивается левое меню. Данные приходят из ответа /api/document-workflow/config.

Как интерфейс адаптируется под систему

Видимость пункта меню определяется тремя независимыми проверками. Пункт показывается, только если проходят все применимые к нему:

  • Тип системы — у некоторых пунктов задан белый список systemTypes. Если активная система в него не входит, пункт скрыт. Так разводятся функции, которые нельзя различить только по правам (например, две системы используют одно и то же право upload).
  • Возможность системы (capability) — поддерживает ли сам тип системы данную функцию. Это свойство системы, а не пользователя.
  • Право пользователя (permission) — выдано ли конкретному пользователю это разрешение администратором.

Иначе говоря, возможность отвечает на вопрос «умеет ли это выбранная система», а право — «разрешено ли это именно вам». Пункт меню виден, когда оба условия истинны (а если для пункта задан systemTypes — то ещё и активная система должна входить в белый список).

Список возможностей приходит с сервера для активного подключения. Полный набор по типам систем:

  • : чат-ассистент (chat), загрузка документов (upload), просмотр отчётов (report_viewer), конструктор отчётов (report_builder), аналитика и KPI (analytics), аномалии (anomalies), события и автоматизация (events), управление пользователями (admin), процессы — просмотр и конструктор (process_control_viewer, process_control_builder).
  • iiko: то же, но без аномалий и с дополнительной возможностью «Мониторинг» (iiko_monitoring) — раздел «Аналитика → Мониторинг», существующий только для iiko.
Различия по типам систем на уровне меню заметны прежде всего здесь: раздел Аномалии входит в возможности 1С, но не iiko; раздел Мониторинг, наоборот, есть только для iiko. Конструктор отчётов для 1С и для iiko — это два разных пункта меню с одинаковой подписью «Конструктор отчётов»: каждый ограничен своим systemTypes и показывается только для своей системы.

Если у подключения ещё не получены возможности (например, ответ сервера не пришёл или это более старая версия бэкенда), платформа действует «по умолчанию да» — функция считается доступной. Это сохраняет привычное поведение 1С неизменным независимо от момента загрузки.

Что меняется внутри модулей

Помимо состава меню, под выбранную систему адаптируется и содержимое некоторых разделов. Соответствие «тип системы → нужный компонент» задано централизованно (в реестре systemContentRegistry), без разрозненных проверок типа в коде страниц.

Для 1С

  • Загрузка документов — рабочий процесс 1С со своими типами документов (УПД, чеки, накладные и т. д.). Подробнее в разделе Загрузка документов.
  • Ассистент — подсказка под полем ввода ориентирована на учёт: «Задолженности, поступления, счета, карточки счетов». Ассистенту передаётся набор инструментов для 1С.
  • Аналитика на главной — KPI-виджеты, рассчитанные по данным 1С.

Для iiko

  • Загрузка документов — отдельный экран загрузки для iiko.
  • Ассистент — подсказка под полем ввода ориентирована на ресторанные сценарии: «Меню, поступления, продажи». Ассистенту передаётся набор инструментов для iiko.
  • Аналитика на главной — используется та же сетка виджетов, что и для 1С; iiko-специфичные показатели добавляются через галерею «Добавить виджет».
  • Мониторинг — раздел «Аналитика → Мониторинг», которого нет на подключениях 1С.
Если для какого-то типа системы конкретный раздел ещё не реализован, на его месте отображается заглушка вида «Раздел … для этой системы скоро появится». Это означает, что система распознана корректно, но содержимое для неё пока в разработке.

Возможности компании без подключения (license-only)

Часть продуктов лицензируется на уровне компании и не привязана к конкретному подключению 1С или iiko — это ЕГАИС и Меркурий. Список таких лицензированных систем приходит в поле licensed_systems ответа со списком подключений.

Если у компании нет ни одного подключения 1С/iiko, но есть лицензия на систему уровня компании, платформа не выводит тупиковый экран «нет подключений». Вместо этого открывается «license-only сессия»: права и возможности загружаются из лицензионного контекста (эндпоинт /api/me/license-context), и соответствующие разделы «Маркировки» остаются доступны. В этом режиме переключателя подключений в верхней панели нет, поскольку подключений нет.

На сегодня в license-only сессии «оживают» именно ЕГАИС и Меркурий: только эти продукты попадают в licensed_systems по лицензии компании. Право на «Честный Знак» (chz_viewer) — тоже глобальное (на уровне компании), но выдаётся отдельно администратором и само по себе не открывает license-only сессию.

Права доступа

Права (permissions) выдаются пользователям администратором на странице Пользователи. При этом какие именно права администратор может выдать — зависит от типа системы подключения: в списке доступных разрешений показываются только те, что применимы к этой системе (то есть возможности активного подключения).

  • Права, привязанные к подключению (чат, загрузка, отчёты, аналитика, аномалии, события, администрирование, процессы), действуют в рамках конкретного подключения и его типа системы. На вкладке «Подключение» из списка скрыты глобальные права (ЕГАИС, Меркурий, ЭДО, Честный Знак) — они живут в отдельной таблице.
  • Глобальные права — ЕГАИС, Меркурий, ЭДО и Честный Знак — выдаются на уровне компании (не привязаны к подключению) на отдельной вкладке «Общие» в управлении пользователями.
  • Возможность «Мониторинг» (iiko_monitoring) существует только для iiko, поэтому соответствующее право имеет смысл лишь на iiko-подключениях.

Итоговая видимость функции — это пересечение условий: возможность системы (а где задано — и её тип), и личное право пользователя. Если право выдано, но активная система функцию не поддерживает, пункт всё равно не появится — и наоборот.

Частые вопросы

Почему я не вижу переключатель систем? Он показывается только при наличии более чем одного подключения. С единственным подключением переключать нечего.

Я переключился, но часть пунктов меню исчезла. Это ошибка? Нет. Меню перестраивается под тип системы и набор её возможностей. Например, при переходе с 1С на iiko исчезают «Аномалии» и появляется «Мониторинг».

После переключения экран заблокирован сообщением о подписке. У выбранного подключения неактивна подписка. Восстановите подписку — после этого блокировка снимается. Переключение на другое, активное подключение блокировку для него не вызовет.

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

Запомнит ли система мой выбор? Да, активное подключение сохраняется в браузере и восстанавливается при следующем входе. Список подключений в фоне обновляется автоматически (примерно раз в минуту), подхватывая новые, восстановившиеся или остановленные подключения.

На этой странице