Создание сайта для дилеров оптового поставщика керамической плитки и керамогранита: личный кабинет с остатками, ценами по договору и заказами, которые сами попадают в 1С. Обмен построен на веб-сервисах по SOAP, а прайсы фабрик приходят в разных XML и сводятся к одному виду преобразованиями XSLT. Сайт сделал Евгений Росляков. Он занимается сайтами и интеграциями с 2016 года, работает самозанятым, до старта подписывает договор и выдаёт юрлицам закрывающие документы. Базируется в Москве, с другими городами работает удалённо.
Поставщик российский, склад в Подмосковье. Покупают у него дилеры и строительные компании, а привозит он плитку с российских и турецких фабрик.
Прежний B2B-сайт показывал вчерашние остатки и одинаковые цены для всех. У каждого дилера свои условия по договору: скидка, отсрочка, особый прайс. Дилер видел на сайте одну цифру, в счёте получал другую и звонил менеджеру.
Заказы менеджеры перебивали в 1С руками. Открывали письмо или выгрузку с сайта и вводили строки по одной. Больше всего ошибались в артикулах.
Отдельная головная боль — прайсы фабрик. Приходят они в XML, но у каждой фабрики своя схема: другие названия полей, другая вложенность, другие единицы. Всё это сводили в Excel вручную, и после каждого обновления уходило несколько часов.
Сайт должен был разговаривать с 1С напрямую. А прайсы нужно было принимать так, чтобы новая фабрика не означала новую программу.
Создание сайта вёл вместе с программистом заказчика, который отвечает за 1С (Управление торговлей). Конфигурацию знает он, сторону сайта знаю я. Мы договорились, какие сведения нужны сайту, и он опубликовал их на веб-сервере как Web Services 1С: остатки по складам, цена по договору дилера, создание заказа, статус заказа. Описание сервисов отдаётся в виде WSDL, протокол — SOAP.
Почему SOAP. Для нового проекта я бы чаще взял лёгкие REST-сервисы на JSON, 1С умеет и их. Но крупные дилеры просили именно SOAP: у них готовые учётные системы, которые работают по WSDL и строго типизированным сообщениям. Им так привычнее. Для сайта это тоже оказалось удобно: структура запроса и ответа описана заранее, ошибка формата видна сразу.
Сайт обращается к 1С через кеш на несколько минут. Остатки не меняются каждую секунду, а нагружать рабочую базу при каждом открытии каталога незачем. В кабинете дилер видит свои цены, историю заказов и статус каждого. Оформленный заказ сразу создаётся в 1С документом, менеджеру остаётся его проверить.
Те же веб-сервисы открыли крупным дилерам для их собственных систем. Доступ по логину, каждый видит только свои данные и свои цены.
Теперь о прайсах. Каждая фабрика присылает XML в своём формате. Для каждой я написал файл преобразования XSLT: он берёт её XML и выдаёт единую схему — артикул, коллекция, формат, сорт, цена. Результат загружается в 1С. Новая фабрика означает новый XSLT-файл, а не новую программу. Его пишут и проверяют на образце прайса, обновлять сам сайт не нужно.
Перед запуском сверили сотню позиций: цена на сайте, в 1С и в счёте должна была совпасть. Расхождения нашлись, несколько штук, и мы исправили их до того, как сайт увидели дилеры.
Дилер заходит в кабинет и видит текущие остатки и свою цену, ту же, что окажется в счёте. Звонков «почему здесь одна цена, а в счёте другая» стало заметно меньше.
Менеджеры перестали набирать заказы руками. Они проверяют документ, который 1С уже получила, и время уходит на разговор с клиентом, а не на артикулы.
Прайсы фабрик в Excel больше не сводят. Пришёл XML, прогнали через преобразование, загрузили. Когда подключили ещё одну турецкую фабрику, понадобился один новый файл XSLT, а сайт и 1С остались как были.
Крупные дилеры подключили свои системы к тем же сервисам и перестали присылать заказы таблицами.
Есть и ограничения. Остатки в кабинете отстают от 1С на несколько минут из-за кеша. Для плитки это терпимо, но по ходовой позиции перед самым заказом менеджер всё равно подтверждает наличие. При обновлении конфигурации 1С веб-сервисы нужно проверять, это записано в короткой инструкции для программиста заказчика.
В планах резервирование товара под заказ и расчёт доставки до адреса объекта.
Если нужен сайт для дилеров, который дружит с вашей 1С, опишите в сообщении на freelance.ru, какая у вас конфигурация и в каком виде приходят прайсы. Скажу, как лучше устроить обмен и что сделать на стороне 1С.