Интеграция 1С в личный кабинет и корпоративную систему СДЭК

20.04.26

Интеграция - WEB-интеграция

Рассказываем, как встроить 1С в личный кабинет и корпоративную систему, используя технологию inframe-запуска и обеспечивая бесшовную работу с другими модулями. Разбираемся в практических аспектах организации единой точки входа, включая сквозную авторизацию через OpenID Connect и дальнейший переход на JWT-токены. Такой подход позволяет вывести 1С на фронт, сохранить целостность пользовательского опыта и распространить механизм входа на веб- и тонких клиентов. Материал будет полезен тем, кто хочет интегрировать 1С в существующую ИТ-архитектуру без нарушения целостности интерфейса и сценариев работы.

Я хочу рассказать про опыт интеграции 1С на сайт в личный кабинет: с какими проблемами сталкивались, как их решали и какие инструменты для этого использовали.

За время работы мы с командой смогли изменить позиционирование 1С от вспомогательной бухгалтерской системы до фундамента финансового, регламентированного и оперативного учета. Мы доказали, что 1С может быть средой быстрой разработки и инструментом, который обеспечивает потребности фронт- и бэк-контуров.

 

Повод для изменений: инцидент и архитектурный контекст

 

В июне 2024 года произошел коллапс, из-за которого наши сервисы были недоступны несколько дней. Функционал восстановили, но остались нюансы и потери.

 

 

Структура IT-системы выглядела следующим образом. Есть фронтовая часть с модулями: заказ, склад, закупка, юрлица и другие. За ними стоит бэк, в основном реализованный на Java, который обеспечивает работу фронта. Третьим эшелоном стоит 1С, в которую стекаются данные с бэка и ведется учет.

 

 

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

 

Решение через внедрение 1С на фронт: технология inframe

 

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

 

 

Мы предложили подход, при котором 1С, находившаяся глубоко в бэке, «растягивается» и выводится на фронт до пользователя. Это стало возможным благодаря появившемуся на тот момент функционалу inframe-запуска. Это режим встроенного окна, в котором внутри основного сайта выделяется область, и в ней открывается окно 1С.

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

 

 

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

 

Проблема авторизации и переход на OpenID Connect

 

Функционально это соответствовало нашим требованиям, но мы столкнулись с серьезным минусом – авторизацией.

 

 

 

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

В поисках решения мы пришли к тому, что 1С поддерживает различные способы авторизации, в том числе аутентификацию через OpenID Connect.

 

 

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

Получилась система, в которой при запуске 1С в inframe-режиме дополнительная авторизация не требуется. Используются результаты авторизации, которая была выполнена при входе на сайт.

 

Переход на веб-режим по требованиям безопасности

 

 

Проблему авторизации мы решили, но через некоторое время начали ужесточать требования к безопасности. По результатам расследования инцидента сформулировали новые требования, в том числе отказ от массового VPN для пользователей, терминальных доступов и подобных механизмов. Это заставило перейти от работы в тонком клиенте для большинства пользователей к работе в вебе. Благодаря предыдущим наработкам мы были к этому готовы.

Мы решили не усложнять использование inframe и запускать 1С в обычном веб-режиме для тех баз, которые не требовались клиентам и партнерам. Запуск 1С вынесли в основное меню сайта: раздел «1С СДЕК» и список всех поддерживаемых в веб-режиме баз. Таким образом, пользователь получил доступ к работе из одного сервиса. Список баз находился в этом же интерфейсе, и больше не требовалось использовать стартер 1С, прописывать базы и запускать их вручную. Все работало отсюда.

 

Ограничения веб-режима и исключения для ЗУП

 

Основной минус веб-режима в том, что он не поддерживает работу с длительными запросами. В этом случае срабатывают тайм-ауты: появляется сообщение о том, что приложение зависло и требуется подождать, после чего сеанс прерывается. Это решается оптимизацией, выводом операций в асинхронный режим или использованием регламентных заданий.

Область, которую мы не смогли закрыть, – работа с ЗУП. Она требовала глубокой переработки типового функционала, и дальнейшее поддержание ЗУП стало бы слишком трудозатратным. Поэтому по ЗУП продолжил работу по старой схеме. Большую часть систем перевели на веб.

 

Проблема с OpenID Connect после обновления платформы

 

Следующая проблема возникла при очередном обновлении платформы: OpenID Connect перестал работать для веб-форм. Эта платформа была важна, потому что в ней 1С реализовала новую механику записи в регистры сведений, когда появилась поддержка добавления и объединения записей. Это позволяло значительно оптимизировать нагрузки. Нам был нужен этот функционал, но без рабочей авторизации по OpenID Connect использовать его было невозможно.

 

Переход на JWT-токены

 

Мы начали искать альтернативу и нашли, что кроме OpenID Connect поддерживается авторизация по JWT-токену.

 

 

Эта технология тоже использует сторонние серверы аутентификации. Пользователь вводит логин и пароль на сервере аутентификации и получает в ответ не cookie-файл, как в случае с OpenID Connect, а JWT-токен – JSON Web Token. Все последующие вызовы к серверу приложений отправляются с этим токеном в заголовке. Сервер проверяет валидность токена и при успешной проверке возвращает результат, а при ошибке – отказ в доступе. Эта технология у нас заработала. Мы не стали переносить ее на все системы, а использовали только там, где критичен был переход на 25-ю версию платформы с поддержкой новой записи регистров.

 

Проблема сессий и обработки ошибок при использовании JWT

 

 

Когда мы начали работать с токенами, появилась новая проблема. Периодически сеансы завершались с сообщением о непредвиденной ошибке или о завершении сеанса администратором и предлагалось перезапустить сеанс. После перезапуска открывался уже новый сеанс, для которого старый токен был недействителен. В результате все зависало вплоть до ручного перезапуска вкладки.

Мы начали искать решение. Им оказался механизм, при котором при получении такого сообщения родительское окно – сайт – перезапускало вкладку с 1С. Она проходила авторизацию заново, получала свежий токен и продолжала работу. Проблема заключалась в том, что для родительского окна невозможно было отличить, какое именно сообщение всплывает в дочернем окне 1С. Поэтому на любое сообщение об ошибке оно реагировало одинаково и перезапускало окно, независимо от того, требовалось это или нет.

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

 

Опыт перехода на платформу 8.5

 

 

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

 

Итоги

 

  • Запуск 1С в режиме inframe удобен для интеграции, когда в существующую систему требуется добавить функционал 1С.

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

  • Обновления платформы всегда несут риски внезапных поломок того, что раньше работало стабильно.

  • Новый интерфейс 8.5 показал себя позитивно.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    24029    37    24    

28

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    22758    68    52    

43

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

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

60000 руб.

07.05.2019    42671    76    45    

31

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    5983    25    4    

27

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение освободит вас от необходимости вручную обновлять информацию о товарах в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически формирует файлы yml для дальнейшей загрузки в группы в ВК. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.

12200 руб.

29.08.2025    2518    6    6    

8
Для отправки сообщения требуется регистрация/авторизация