Клиент и контекст проекта
Заказчик — российский интернет-магазин товаров для дома и интерьера на платформе 1С-Битрикс. Магазин работает несколько лет, имеет развитый каталог, акции и распродажи, а также собственный калькулятор стоимости для расчёта стоимости товаров по габаритам. Сайт интегрирован с 1С для выгрузки каталога и остатков. На момент обращения владелец бизнеса ощущал сразу несколько проблем: сайт заметно «тормозил», часть свойств товара не отображалась, калькуляторы в разделах акций и распродажи перестали работать, а данные после выгрузки из 1С самопроизвольно откатывались к старым значениям.
Все работы по доработке кода, оптимизации базы данных, рефакторингу компонентов и аудиту cron-заданий я выполнил лично за одну рабочую неделю. Обезличивание: домен сайта, название юрлица, контактные данные и скриншоты с опознаваемыми элементами интерфейса в публичной версии кейса не приводятся. Я базируюсь в Москве и работаю с заказчиками из любого региона РФ, СНГ и за рубежом — в данном случае все работы были выполнены удалённо.
Проблема
При первичном аудите я выявил пять отдельных проблем, каждая из которых по-своему ухудшала пользовательский опыт и работоспособность магазина. Часть из них была связана с изменениями структуры данных при обмене с 1С, часть — с накопленным техническим долгом и устаревшими профилями импорта. Ниже эти проблемы рассмотрены по отдельности, потому что именно их разделение позволило решить каждую из них прицельно, без побочных эффектов.
Проблема 1. Свойства товара перестали отображаться
После изменения структуры данных в 1С значения свойств товара, которые ранее приходили как одиночные строки, начали передаваться в виде списков (массивов). Шаблон карточки товара и элементов каталога на Битриксе был написан под одиночное значение, поэтому часть свойств перестала отображаться, а часть выводилась некорректно (например, в виде «Array»). Пользователи лишились ключевой информации о товаре: габаритов, материала, упаковки.
Проблема 2. Деградация скорости загрузки сайта
Сайт заметно «потяжелел»: страницы открывались с задержкой, административная часть — особенно медленно. Анализ показал критическое разрастание базы данных Битрикса: распухли таблицы логов, сессий, истории веб-аналитики. Параллельно в админке работали фоновые процессы модулей логирования и аналитики, которые клиент давно не использовал, но которые продолжали создавать паразитную нагрузку на БД.
Проблема 3. Калькулятор пропал в разделах «Акции» и «Распродажа»
В разделах со скидками перестал отображаться калькулятор стоимости. Первичный поиск причины показал, что виноваты вложенные компоненты Битрикса: они затирали данные, не передавая необходимые параметры по цепочке вызова. В результате калькулятор просто не получал нужных ему входных значений и не отрисовывался. Это напрямую влияло на конверсию в акционных разделах — самых маржинальных для интернет-магазина.
Проблема 4. Калькулятор не работал со свойством «Формат»
Значительная часть калькуляторов стоимости не функционировала из-за ошибок в обработке характеристики «Формат» (габариты товара). Аудит показал три связанных фактора: неоднородность данных из 1С (менеджеры в 1С использовали как русскую букву «Х», так и латинскую «X» для разделения габаритов — например, «7,5х30» и «7,5×30»); разные разделители десятичных дробей (точка и запятая вразнобой, вопреки системным требованиям); некорректный алгоритм парсинга строки в два числа для вычислений.
Проблема 5. Данные из 1С затирались старыми значениями
Самая коварная проблема: после успешной полной выгрузки из 1С корректные данные через некоторое время самопроизвольно откатывались и затирались старыми значениями. Со стороны выглядело так, будто 1С работает неправильно, но на самом деле виноват был не обмен с 1С. Потребовался детальный аудит cron-заданий и профилей импорта на стороне сайта, чтобы найти источник паразитной перезаписи.
Решение
Работы велись в течение одной рабочей недели. Все пять задач я выполнил лично: от первичного аудита до рефакторинга кода, оптимизации БД и финального тестирования. Подход — поэтапный, с приоритетом на самые «болезненные» для бизнеса проблемы (калькуляторы в акциях и затирание данных из 1С).
Этап 1. Переработка вывода свойств в шаблоне
- Перепрограммирован шаблон вывода карточки товара и элементов каталога.
- Логика обработки значений переписана для корректной итерации массивов и конвертации списочных значений в удобочитаемую строку.
- Добавлена защита: если значение пришло в виде строки — выводится как строка; если в виде массива — объединяется через разделитель. Это делает шаблон устойчивым к будущим изменениям формата данных из 1С.
- После правок все свойства товара корректно отображаются на фронтенде без потерь.
Этап 2. Оптимизация базы данных и административной части Битрикс
- Проведена глубокая оптимизация базы данных: очищены и переиндексированы распухшие таблицы логов, сессий и истории.
- Удалены устаревшие записи, занимавшие значительную долю объёма БД.
- В административной части 1С-Битрикс отключены неиспользуемые модули логирования и инструменты веб-аналитики, создававшие паразитную фоновую нагрузку на БД.
- После оптимизации время отклика сайта значительно сократилось как на фронтенде, так и в админке.
Этап 3. Восстановление калькулятора в разделах «Акции» и «Распродажа»
- Выполнен рефакторинг передачи данных между вложенными компонентами Битрикса.
- Настроена корректная проброска параметров по цепочке вызова таким образом, чтобы данные не утрачивались на промежуточных уровнях.
- Калькулятор восстановлен в обоих разделах и работает идентично основному каталогу.
Этап 4. Доработка обработки характеристики «Формат» для калькулятора
- Реализовано приведение всех вариантов символа-разделителя (латинского «X» и русского «Х») к единому виду перед парсингом.
- Добавлена нормализация числовых значений: запятая принудительно заменяется на точку для соответствия формату Битрикса.
- Доработан механизм разбиения строки на два числа для дальнейших вычислений калькулятора.
- Все калькуляторы, использующие данную характеристику, заработали стабильно — независимо от того, в каком варианте заполнил данные менеджер в 1С.
Этап 5. Устранение конфликта перезаписи данных после выгрузки из 1С
- Проведён детальный аудит cron-профилей импорта и системных заданий Битрикса.
- Обнаружен cron-профиль импорта Excel-файла с устаревшими данными. Профиль продолжал работать по расписанию и затирал актуальные данные из 1С старыми значениями из Excel.
- Профиль деактивирован и исключён из расписания cron.
- После отключения паразитной перезаписи данных проблема потери актуальной информации из 1С решена окончательно. Дополнительно я передал клиенту список всех активных cron-профилей с рекомендацией periodically пересматривать их актуальность.
Результаты
Все пять задач успешно выполнены в течение одной рабочей недели. Сайт функционирует стабильно, данные отображаются и синхронизируются корректно. После оптимизации базы данных время отклика сайта заметно сократилось, что положительно сказалось как на пользовательском опыте, так и на SEO-показателях (поисковики учитывают скорость загрузки как фактор ранжирования). Калькуляторы стоимости во всех разделах работают штатно, данные из 1С больше не откатываются.
| Показатель | Результат |
| Срок выполнения всего комплекса работ | 1 рабочая неделя (6 рабочих дней) |
| Платформа | 1С-Битрикс |
| Решено отдельных задач | 5 |
| Время отклика сайта после оптимизации БД | снижено в несколько раз |
| Калькуляторы стоимости (восстановлено) | все использующие свойство «Формат» |
| Конфликтов перезаписи данных из 1С | 0 после деактивации устаревшего профиля cron |
| Потерь свойств товара на фронтенде | 0 (полная видимость после рефакторинга шаблона) |
| Жалоб от пользователей после релиза | 0 за период наблюдения |
Дополнительно клиент получил не только исправленные баги, но и более устойчивую к будущим изменениям архитектуру: шаблоны теперь корректно обрабатывают и строковые, и списочные значения свойств, а обработчик характеристики «Формат» устойчив к неоднородностям ввода в 1С. Это снижает риск повторного возникновения аналогичных проблем при будущих выгрузках и кадровых изменениях у клиента.
Технологический стек
1С-Битрикс PHP MySQL 1С: Предприятие (выгрузка каталога) Компоненты Битрикс (custom) Шаблоны карточки товара CRON-задачи Excel-импорт (деактивирован) Калькулятор стоимости (custom) Оптимизация БД

