Сегодня делимся интересным кейсом 3-летней давности. Решили, что он будет интересен и вам.

Готового технического задания не было. После первых встреч по Skype стало понятно, что у проекта большое будущее — спроектировать, оценить и разработать его разом не получится. Решили делать итерациями, описав в ТЗ только первый этап работ. Получился документ на 32 страницы, оцененный программистом в 200 часов. В трёх приложениях к ТЗ детально описывался формат нестандартного обмена данными с веб-сервисами 1С, даже с примерами SOAP-запросов и ответов.

Личный кабинет клиентов для компании ЕВРАЗ
Личный кабинет клиентов для компании ЕВРАЗ

Клиент

АО «ЕВРАЗ Металл Инпром» — один из ведущих российских металлотрейдеров, осуществляет поставки металлопроката производства крупных комбинатов СНГ. Основную долю продукции занимает металлопрокат производств, входящих в состав ЕВРАЗа. Является подконтрольной организацией EVRAZ plc.

С компанией ЕВРАЗ ИНТЕРВОЛГУ связывают долгие отношения: мы разработали личный кабинет клиентов компании ЕВРАЗ, сайт-визитку ЕВРАЗ Ванадий, и интернет-магазин Ассоциации Развития Стального Строительства.

Задача

В 2016 году к нам обратились за разработкой личного кабинета для сайта клиентов компании ЕВРАЗ Металл Инпром. Видение проекта было таким:

  1. сайт не заполняется вручную, вся информация подтягивается из 1С ERP;

  2. на сайте нельзя оформить заказ, только заявку;

  3. на основании заявок с сайта в 1С формируется заказы;

  4. коммерческую информацию о заказах и номенклатуре (остатки, счета, цены) на сайте хранить нельзя, нужно получать из 1С;

  5. требуется совместная работа представителей одного и того же партнера с заказами;

  6. текущий баланс клиента также получать из 1С, на сайте не сохранять.

Решение

Готового технического задания не было. После первых встреч по Skype стало понятно, что у проекта большое будущее — спроектировать, оценить и разработать его разом не получится. Решили делать итерациями, описав в ТЗ только первый этап работ. Получился документ на 32 страницы, оцененный программистом в 200 часов. В трёх приложениях к ТЗ детально описывался формат нестандартного обмена данными с веб-сервисами 1С, даже с примерами SOAP-запросов и ответов.

Дизайн и верстка

Хоть личный кабинет и не задумывался частью основного сайта http://www.emi.evraz.com, тем не менее он должен был повторять его дизайн. Задачи делать адаптивный дизайн не ставилось, но мы все равно использовали библиотеку bootstrap, чтобы повторить дизайн основного сайта.

Проведение актов сверки в личном кабинете
Проведение актов сверки в личном кабинете

Импорт всего из 1С

Как ни странно, единственным узким местом в концепции “все грузится из 1С” был список пользователей. Но и с ним удалось справиться, предложив клиенту выгружать учетные записи как справочник, в Highload-блок. Помимо информационных полей — логин и пароль. При создании записи на сайте пароль используется для создания учетной записи, а затем раз и навсегда затирается волшебным словом secret , так что никто уже не сможет узнать, какой пароль у этого пользователя.

Импорт документов из 1С
Импорт документов из 1С

Оформление заявки, а не заказа

В ходе обсуждения сайта выяснилось, что разница между заявкой и заказом минимальна. А формат, который использует система для передачи заказов в 1С настолько подходит и для заявок, что приняли решение его и использовать. В итоге получилось так: заявка — это обычный заказ, но с флагом “я заявка” (с точки зрения сайта).

Вызовом стала функция “разные контакты одной фирмы должны видеть заказы друг друга”. Решение —  создание специального “пользователя-компании”, на которого записывались все новые заказы.

Этапы оформления заявки в личном кабинете сайта
Этапы оформления заявки в личном кабинете сайта

Во время разработки был примечательный случай: никак не получалось “скрыть” чужие заказы от пользователя. Выяснилось, что это был баг в CMS: по прямой ссылке можно было увидеть любой заказ любого пользователя (исправили в интернет-магазине v16.5.9). Плакали и смеялись всей командой, ошибку исправили обновлением.

Цены, счета, баланс в 1С

Чтобы оперативно получать коммерческие данные из 1С совместно со специалистом ЕВРАЗ Металл Инпром был разработан веб-сервис на технологии SOAP. При просмотре заказов пользователем сайт формирует запрос к 1С, подписывая запрос логином и хэшем от пароля пользователя. Далее 1С выполняет 2 проверки:

  1. существует ли пользователь с таким логином и паролем вообще;

  2. имеет ли пользователь доступ к запрашиваемой информации.

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

Обмен коммерческих данных 1С с другими системами
Обмен коммерческих данных 1С с другими системами

Такая нетиповая схема разработана под требование заказчика “ничего коммерческого на сайте”, всё в 1С. Таким образом, кража пусть даже всей базы данных сайта никак не поможет злоумышленнику получить финансовую информацию клиентов ЕМИ.

Безопасность

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

Выполнение требований безопасности при обновлении
Выполнение требований безопасности при обновлении

Последующие этапы разработки

Спустя год утверждений и согласований доработок к проекту вернулись. С новыми требованиями со стороны заказчика, 10-страничным ТЗ и новым менеджером проекта. Интересный факт: за все время работы с личным кабинетом сменились менеджеры как в ИНТЕРВОЛГЕ, так и в ЕМИ. Эстафету передавали друг другу в том числе и верстальщики и программисты, хотя и не так массово. А вот бессменный разработчик 1С со стороны ЕМИ за эти два года стал нам уже как родной.

На втором этапе стало больше интеграции с 1С. Из учетной системы начали подтягивать различные документы: акты сверки, накладные, счет-фактуры и сертификаты. Доработки второго этапа уложились в 100 часов.

Сотрудничество продолжилось в феврале 2018 года ИНТЕРВОЛГА и АО «ЕВРАЗ Металл Инпром» заключили договор на третий этап разработки. Разработка таких личных кабинетов, со сложной логикой и требованиями к безопасности уже стала одним из наших профильных направлений.

Позже расскажем о продолжении и других совместных проектах.

Автор: Анатолий Ерофеев.

Комментарии (2)


  1. des1roer
    09.11.2021 13:31

    а почему soap а не rest?


    1. stepan_ovchinnikov Автор
      11.11.2021 17:41

      Добрый вечер! За SOAP было 2 аргумента: 1) для той версии 1С на тот момент это было быстрее в разработке; 2) SOAP сам себе документация, отдав программисту 1С wsdl практически ничего не пришлось объяснять дополнительно.