
О проекте
Филиалы зоомагазина ZooПассаж работают в Москве и области, Екатеринбурге, Новосибирске и области и во Владивостоке. Интернет-магазины компании находятся на нашей постоянной технической поддержке более 4 лет, с 2015 по 2019 год.
За это время удалось сделать много работ по автоматизации и оптимизации магазинов, что многократно увеличило продажи товаров как оптом, так и в розницу. А так же помогло запустить и автоматизировать направление продажи франшизы. Ниже мы описали несколько самых интересных, на наш взгляд, задач по доработке этого интернет-магазина.




За несколько лет технической поддержки мы сделали:
- Полный рефакторинг кода, компонентов, модулей и шаблона сайта. Переписали кастомизированные компоненты и обновили сайт до последней версии Битрикс. Перевели все возможные модифицированные модули на стандартные. Обновление скриптов ядра, отключение сжатия и оптимизации CSS , принудительный ресайз картинок. Создали функционал, позволяющий создавать поддомены, которые будут использовать одинаковые с уже существующим сайтом данные и с возможностью прикручивать отдельные модули для конкретного поддомена. Отдельные Title и Description
- Размер сайта был уменьшен с 20 гб до 7 гб без потери функционала. Увеличили скорость работы сайта. Исправили проблемы с JS скриптами при включении CDN. Правка компонента кеширования.

За несколько лет технической поддержки мы сделали:
- Полный рефакторинг кода, компонентов, модулей и шаблона сайта. Переписали кастомизированые компоненты и обновили сайт до последней версии Битрикс. Перевели все возможные модифицированные модули на стандартные. Обновление скриптов ядра, отключение сжатия и оптимизации CSS , принудительный ресайз картинок. Создали функционал, позволяющий создавать поддомены, которые будут использовать одинаковые с уже существующим сайтом данные и с возможностью прикручивать отдельные модули для конкретного поддомена. Отдельные Title и Description
- Размер сайта был уменьшен с 20 гб до 7 гб без потери функционала. Увеличили скорость работы сайта. Исправили проблемы с JS скриптами при включении CDN. Правка компонента кеширования.
Нетиповая интеграция всех интернет-магазинов зоопассаж со всеми 1С
- После переезда заказчиком на новую базу 1С, мы настроили корректную работу всех интернет-магазинов во всех городах со всеми 1С(выгрузка каталога, выгрузка заказов, механизм выставления статусов и т.д.) Создали для 1С дополнительные свойства товаров и разделов, брендов для разных городов. Настроили способы оплаты и доставки оптовых и розничных покупателей из разных городов, на основе типов плательщиков.
-Создание функционала реферальной программы лояльности с заводчиками. Кэшбэк, баллы, виртуальный счет, реферальные ссылки.
- Переработали систему скидок и сделали функционал автоматической генерации купонов. Сделали чтобы скидки и купоны выгружались в 1С. Создали скрипт сопоставление Личных данных пользователей. Доработка триггерных рассылок.
- Доработали и настроили умный поиск по сайту. Настройка формы "Повторить последний заказ". Создание функционала «Предзаказ», «Быстрый заказ». Настроили интеграцию с DPD, PickPoint, БигДата, интеграцию сервиса dadata . Реализовали функционал «Подарки в корзине» и функционал автоматической продажи подарочных карт.
Программирование системы «Программа лояльности» для оптовых и розничных покупателей.
-Все пользователи, которые регистрируются на сайте, автоматически становятся участниками программы
-Если покупатель получил карту в офлайн магазине, он просто вводит ее данные в личном кабинете, если карты нет-заполняет запрос на выпуск виртуальной карты.
По клику по этой кнопке, генерируется карта со свои уникальным шестизначным номером. Этот номер привязывается к аккаунту юзера. Изменить или повторно сгенерировать виртуальную карту нельзя. По функционалу, что пластиковая, что виртуальная – одинаковые и записываются в одно свойство контрагента.
-Баллы начисляются за активацию в программе, за собственные заказы, за привод реферала. Баллы начисляются автоматически, баллы автоматически сгорают по наступлению соответствующего срока.
-Баллами пользователи могут расплачиваться за покупки.
Синхронизация: 4 города,
4 интернет-магазина, 4 * 1С
Интернет-магазин "Зоопассаж" состоит из 4-х интернет-магазинов на четырех поддоменах для каждого города. Т.е. на сайте есть несколько регионов продаж. Каждый регион продаж имеет свой поддомен и свою собственную базу 1С. Каждая 1С-ка выгружает свой собственный инфоблок товаров и торговых предложений и получает не все заказы, а оформленные в определенном регионе продаж (в зависимости от 1С-ки).
Одной из первых появившихся проблем стало, что 4 региональных интернет-магазина синхронизированы с четырьмя системами 1С. Заказы, товары, цены, остатки, отгрузки московского интернет-магазина вдруг полетели в екатеринбургскую 1С. Четыре 1С-ки одновременно подключаются к сайтам, конфликтуют, интеграция останавливается и сервер "ложился".
Мы успешно решили и эту проблему!
Синхронизация: 4 города,
4 интернет-магазина, 4 * 1С
Интернет-магазин "Зоопассаж" состоит из 4-х интернет-магазинов на четырех поддоменах для каждого города. Т.е. на сайте есть несколько регионов продаж. Каждый регион продаж имеет свой поддомен и свою собственную базу 1С. Каждая 1С-ка выгружает свой собственный инфоблок товаров и торговых предложений и получает не все заказы, а оформленные в определенном регионе продаж (в зависимости от 1С-ки).
Одной из первых появившихся проблем стало, что 4 региональных интернет-магазина синхронизированы с четырьмя системами 1С. Заказы, товары, цены, остатки, отгрузки московского интернет-магазина вдруг полетели в екатеринбургскую 1С. Четыре 1С-ки одновременно подключаются к сайтам, конфликтуют, интеграция останавливается и сервер "ложился".
Мы успешно решили и эту проблему!

Проблема №1
Заказы из магазина летят в ту 1С-ку, которая подключилась первой, а должны лететь в 1С-ку своего города. В итоге в системах учета информация некорректна. Решение данной задачи лежит на поверхности:
У каждого сайта свой уникальный файл выгрузки, с уникальным названием. Внутри каждого файла подключается стандартный файл выгрузки из админки /bitrix/admin/1c_exchange.php
<?
define("IS_EXCHANGE", true);
require_once ($_SERVER ["DOCUMENT_ROOT"] ." / bitrix/modules/sale /admin /1c_exchange.php ");
?>
На сайте написан обработчик на событие OnBeforeProlog, при помощи которого определяется какие конфиги нужно отдать компоненту bitrix:catalog.import.1c .
$siteID = self::getSiteId();
Option::set ('sale', '1C_SALE_SITE_LIST', $siteID); // Сайт, заказы которого выгружать в "1С:Предприятие"
Option::set ('sale', '1C_SITE_NEW_ORDERS', $siteID); // Сайт, на который добавлять новые заказы и контрагенты
Option::set ('catalog', '1C_SITE_LIST', $siteID); // Привязывать вновь создаваемые инфоблоки к сайтам получается так, что настройки переключаются на каждый запрос 1С-ки, но зато без кастомизации ядра.


Проблема №2
Когда к сайту подключается несколько 1С, то они начинают конфликтовать, затирать информацию друг друга и мы сталкиваемся с проблемой - работа 1С-ок асинхронна, т.е 1С-ки могут обращаться друг к другу с разницей в секунду. А значит таблица b_xml_tree перетирается каждой выгрузкой и мы видим ошибку "SQL Query Error: INSERT INTO b_xml_tree (PARENT_ID, LEFT_MARGIN, RIGHT_MARGIN, DEPTH_LEVEL, NAME) VALUES (0, 50939, 0, 0, '')[[1146] Table '*****.b_xml_tree' doesn't exist"
Нужно было найти решение, чтобы каждая 1С-ка использовала свою собственную временную таблицу.
Исправили конструкторы классов CIBlockCMLImport и CIBlockXMLFile, передали в недостающие места (к именам временных таблиц SITE_ID) и выгрузка пошла без ошибок

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