Главная / Кейсы / Подгрузка цен из 1С на сайт

Кейс по 1С и API

Как я собрал контур подгрузки цен из 1С на сайт через API

Это был не проект в стиле “вытащить прайс на страницу и забыть”. Задача оказалась глубже: у сайта был хрупкий слой прайсов, у 1С API был неровный контракт, а бизнесу нужен был не технический эксперимент, а управляемый и поддерживаемый контур публикации цен.

Что было до этого

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

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

Почему это не было простым запросом к API

У API данные были живые, но не идеально чистые: у части филиалов не было `priceCode`, одни и те же прейскуранты встречались у нескольких филиалов, а часть услуг приходила с нулевыми ценами или с неоднородной структурой.

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

Масштаб данных, с которым пришлось работать

16 филиалов вернул `getfilialslist` на момент аудита API
7 филиалов имели рабочий `priceCode` для загрузки цен
166k+ сырых строк услуг и цен было собрано в staging-слое
4 уникальных прейскуранта реально участвовали в выдаче
10k+ актуальных строк осталось после очистки и фильтрации мусора
1 новый рабочий контур: от 1С API к управляемой модели прайсов на сайте

Что я сделал

Проверил боевой 1С API как интеграционный источник

Сначала не строил ничего “на веру”, а проверил, что реально отдает API: филиалы, `priceCode`, структуру каталогов, качество ID и типичные сбои контракта. Это дало не презентационную, а рабочую картину данных.

Собрал staging-слой для нормализации прайсов

Поднял локальный контур на SQLite, в который складывались филиалы, группы и плоские строки услуг. Это позволило тестировать модель “услуга - цена - филиал” отдельно от фронта и без риска ломать боевой сайт.

Подготовил новый слой публикации для сайта

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

Какие сложности пришлось разрулить

  • Нечистый контракт API: неоднородные ответы, строковые ID и хвостовые пробелы.
  • Повторяющиеся `priceCode` у разных филиалов и нулевые цены у части услуг.
  • Наследие старой модели сайта, где прайс был скорее контентным куском страницы, чем сущностью.
  • Необходимость отделить “что дает 1С” от “как именно сайт это публикует”.

Ключевая архитектурная идея

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

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

Что получилось в итоге

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

Практический смысл для бизнеса

Для бизнеса ценность тут не в слове “API”. Ценность в том, что прайсы перестают быть хрупким ручным контуром, который держится на магии в CMS. Появляется более понятная и масштабируемая схема: 1С как источник, сайт как управляемая витрина.

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

Связанные страницы

Похожие задачи встречаются часто

Если у вас цены, остатки или каталог на сайте живут отдельно от 1С, это обычно лечится не косметикой, а нормальной схемой данных

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