Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Нетривиальная интеграция сайта с 1С — это все что не укладывается в стандартный обмен данными.
Сперва давайте разберемся, что такое стандартный обмен.
В Битриксе есть встроенный функционал для обмена с 1С, благодаря чему любой обмен должен настраиваться в пару кликов :)
Что умеет штатный механизм обмена
Импорт каталога товаров из 1С на сайт.
Экспорт каталога товаров с сайта в 1С.
Экспорт заказов/контрагентов с сайта в 1С.
Импорт заказов/контрагентов из 1С на сайт.
Импорт справочников из 1С на сайт.
Есть одно маленькое условие для корректной работы механизма обмена — ваша 1С должна быть типовой (а по возможности и сайт), то есть не модифированной. Но даже это не является гарантией успешного обмена.
Признаки нетривиальной интеграции с 1С
Доработанная под логику бизнеса 1С.
Нужные данные не выгружаются на сайт.
Нужные данные выгружаются на сайт, но не туда.
При выгрузке есть ошибки.
Будьте готовы, что доработки потребуется либо со стороны 1С, либо со стороны сайта, а то и в двух системах.
Кейсы по обмену данными с 1С на примере интернет-магазина канцтоваров
Интернет-магазин канцтоваров — это крупный поставщик канцелярских товаров на российском рынке, ведущий оптовый оператор и трижды обладатель престижной канцелярской премии «Золотая Скрепка» в номинации «Лучшая национальная торговая компания».
С этой компанией работают более 3500 компаний в 80 регионах России: оптовые покупатели, корпоративные клиенты, специализированные магазины и крупные торговые сети. Масштаб впечатляет.
Для оптимизации работы с организациями (юридические лица и индивидуальные предприниматели) было принято решение о создании корпоративного интернет-магазина .
Оптовый интернет магазин имеет свои особенности, что отличает его от розничного:
Персональные цены.
Упрощенная навигация и быстрый поиск.
Товары без картинок и подробных описаний.
Табличная форма заказа.
Оптовые единицы измерения.
Заказ по списку.
Личный кабинет с платежным балансом счета.
“Поговорить с вашим менеджером”.
Счета-фактуры, товарно-транспортные накладные, договоры, акты.
Интеграция с учетной системой и логистикой.
Эти нюансы обязательно надо учитывать при проектировании.
Кейс 1: Обмен партнерами и контрагентами
Задача:
Что есть на стороне 1С:
Партнеры -> У каждого партнера есть несколько контрагентов -> У каждого контрагента есть несколько договоров, расчетных счетов и адресов доставок, а также информация по остатку и персональному менеджеру.
Что требуется на стороне сайта:
Партнеры из 1С должны формировать пользователей на стороне сайта. При этом регистрация на самом сайте должна отсутствовать. У каждого пользователя должна быть возможность переключения между своими контрагентами. При этом у каждого контрагента должна быть своя корзина, свой личный кабинет и свои персональные цены (о ценах в кейсе 2). Договора, р/с и адреса должны использоваться при оформлении заказа, остаток и персональный менеджер должен отображаться в личном кабинете.
Решение:
На стороне 1С:
Потребовалось сформировать соответствующие справочники, которые можно выгрузить штатным механизмом.
На стороне сайта:
Программирование формирование пользователей.
Программирование переключения между контрагентами и отображения соответствующих им данных.
Доработка оформления заказа на основании данных контрагента.
Доработка отображения данных контрагента в личном кабинете.
С какой проблемой столкнулись и как решили:
На стороне 1С были изменены данные контрагентов и выгружены на сайт. На стороне сайта часть контрагентов подверглись изменениям, а часть контрагентов эта участь миновала. Стали разбираться и выяснили, что для контрагента приходит уникальный код версии. Если он изменился, то данные изменяются на сайте, если нет, то остаются неизменными. Отказ от сравнения версий на стороне сайта помог решить проблему с обновлением информации.
Вывод:
Нетиповой обмен требуется дорабатывать на стороне двух систем. Могут встретиться различные сложности. Главное, чтобы хватило компетенции определить источник проблемы и исправить. Имея большой опыт в разработке и интеграции различных систем, мы делаем это успешно.
Кейс 2: Индивидуальные цены
Задача:
Что есть на стороне 1С:
У контрагентов есть типовые и индивидуальные соглашения, в которых определены индивидуальные типы цен и скидки.
Что требуется на стороне сайта:
Цены должны соответствовать ценам из соглашений в 1С.
Решение:
На стороне 1С:
Потребовалось сформировать соответствующие справочники, которые можно выгрузить штатным механизмом.
На стороне сайта:
Было придумано решение, которое позволило использовать штатные возможности отображения скидок Битрикса, но их расчет осуществлять с использованием справочников из 1С.
Когда вы заходите на страницу с товаром, то его цена с учетом скидки неизвестна. Расчет происходит “на лету” из справочника скидок контрагентов и подставляется в нужном месте по технологии Ajax. Это сделано для ускорения отображения страницы за счет возможности создания ее кэша (готовых страниц).
С какой проблемой столкнулись и как решили:
Сортировка товаров по цене. Так как цены со скидкой “прилетают” после загрузки страницы, то корректная сортировка возможна только после их получения. В данному случае применимо решение с небольшой погрешностью. Товары можно отсортировать по цене без применения скидок, а в рамках страницы уже с учетом скидок после их получения. Погрешность будет наблюдаться именно на стыке страниц при постраничной навигации.
“Умный” фильтр. Использование “умного” фильтра в Битрикс основано и возможно по присвоенному контрагенту типу цены без скидок. Для учета скидок потребуется данный инструмент прилично доработать, что может быть неоправданно затратно.
Какие варианты для выгрузки индивидуальных цен были рассмотрены:
Рассчитывать цены на стороне 1С с учетом скидок. Выгружать их в виде типов цен для контрагента на сайте. На сайте предполагается 2000 - 3000 контрагентов, что равносильно 2000 - 3000 типам цен. Редактирование товара с таким количеством типов цен на стороне сайта становится невозможным, так как страница редактирования просто зависает или выдают ошибку о нехватке памяти. При этом открытие страницы с “лица” сайта со списком товаров осуществляется за 20 - 30 секунд, что также неприемлемо.
Рассчитывать цены на стороне сайта с учетом скидок в специальную таблицу. Потом выводить цены уже исходя из нее. Расчет цен для одного контрагента для всех товаров на стороне сайта с использованием сервера заказчика составляет 20 секунд. Для 2000 - 3000 - это уже 11 ~ 17 часов. С учетом изменения и выгрузок скидок каждые 20 - 30 мин, получаем нерабочий вариант.
Вывод:
Индивидуальные цены на сайте - достаточно сложная задача. Учитывая ограниченность возможностей технических ресурсов и используемых трудозатрат, ее решение не будет идеальным. Мы решили данную задачу вышеописанным способом. Если у вас есть интересное решение, то можете поделиться им в комментарии.
Заключение
В этом проекте были достигнуты следующие бизнес-результаты:
Компания начала работать с клиентами быстрее, лучше, эффективнее и напрямую.
Автоматизированы рутинные операции (все заказы попадают напрямую в 1С).
Это стало возможным за счет наших интеграционных компетенций:
Проектирование крупных информационных систем.
Разработка на Битрикс.
Разработка высоконагруженных проектов.
Интеграция 1С-Битрикс с 1C и другими системами.
Создание интернет-магазинов с адаптивным дизайном.