Заказать обратный звонок
Написать письмо
+7 (495) 278-08-54 Москва
+7 (812) 670-07-40 Санкт-Петербург

Новости

Выгрузка кратности товара из 1С в Битрикс. Проблемы и способы реализации

Иван Рудковский

07 сентября 2022

Здравствуйте, уважаемые пользователи и партнеры 1С-Битрикс! Вас приветствует компания Сотбит.

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

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

В рамках этих статей Вы сможете ознакомиться с конкретными кейсами и вопросами, с которыми сталкивается наша команда в процессе работы, и какие способы мы находим для их решения.

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

Выгрузка кратности товара из 1С

И так, начинаем!

За девятилетний опыт практики мы провели несколько сотен интеграций с разными сайтами, и, казалось, в этом вопросе нас сложно удивить. Но в процессе работы начали поступать интересные и нетривиальные задачи, например, такие, как вышеупомянутая выгрузка кратности.

1C какой проблемой мы столкнулись

В нашем случае клиентом была поставлена задача интегрировать в выгрузку из системы учёта 1С кратности товара и наполнять корзину товарами с определённой кратностью

Казалось бы, ничего сверхъестественного, ведь механизм кратности в системе «1С-Битрикс: Управление сайтом» работает прямо из коробки, но всё же есть некоторая особенность.  

Кратность товара в 1С-Битрикс: Управление сайтом

Так уж исторически сложилось, что выгрузка товаров из 1С не подразумевает обработку кратности. Но наш пытливый ум не мог позволить просто спустить этот вопрос «на тормозах» и поставить заказчика перед фактом невозможности выполнения его задания.

В процессе поиска ответа на этот вопрос мы разработали 2 сценария доработки обмена кратностью товара. Давайте подробнее рассмотрим каждый из них.

2Первый вариант решения проблемы

Именно этот вариант был реализован нашей командой в рамках описанной выше задачи.

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

Для реализации данной доработки необходимо разместить любезно предоставленный нами ниже код по пути /bitrix/php_interface/init.php.

AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OnAfterIBlockElementUpdateHandler");
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnAfterIBlockElementUpdateHandler");

function OnAfterIBlockElementUpdateHandler($arFields)
{
   if (isset($_SESSION['BX_CML2_IMPORT'])) {
       $ratioProperty = CIBlockElement::GetProperty(
           $arFields['IBLOCK_ID'],
           $arFields['ID'],
           "sort",
           "asc",
           [
// здесь необходимо разместить символьный код свойства, в котором хранится кратность
               "CODE" => "MULTIPLICITY"
           ]
       );

       if ($obRatio = $ratioProperty->Fetch()) {
           $productRatio = $obRatio['VALUE'];
           $resRatio = \Bitrix\Catalog\MeasureRatioTable::getList(
               [
                   'filter' => [
                       'PRODUCT_ID' => $arFields['ID']
                   ]
               ]
           );

           if ($obRatio = $resRatio->Fetch()) {
               if ($productRatio != $obRatio['RATIO']) {
                   \Bitrix\Catalog\MeasureRatioTable::Update($obRatio['ID'], ['PRODUCT_ID' => $arFields['ID'], 'RATIO' => $productRatio]);
               }
           } else {
               \Bitrix\Catalog\MeasureRatioTable::Add(['PRODUCT_ID' => $arFields['ID'], 'RATIO' => $productRatio, 'IS_DEFAULT' => 'Y']);
           }
       }
   }
}

В результате выполнения кода обработчик будет изменять кратность при обновлении товара выгрузкой из 1С. 

Таким образом, проблема была решена! Мы не только порадовали клиента качественно выполненной задачей, но и при этом не нарушили концепцию архитектуры 1С-Битрикс.

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

3Второй вариант решения проблемы

Проблема выгрузки кратности через свойства товара заключается в том, что использование дополнительного реквизита влечёт за собой генерацию лишней информации, которая в последующем приводит к увеличению объёма данных, хранимых в базе данных. 

Казалось бы, как может простое число, хранящееся в товаре, существенно загрузить сайт?

Поверьте нам, ещё как может! Поскольку подобных товаров может быть десятки и сотни, при этом каждый будет содержать в себе определённое свойство и его значение, возникновение большого объёма лишней информации в базе данных неизбежно.

Как же решить эту критическую проблему? 

Лично мы нашли ответ в REST API. При данной реализации 1С инициирует обмен массивом с набором данных на сторону сайта в формате JSON, где идентификатором выступает внешний код товара, а значением — его кратность, и конечно же, с логином и паролем от пользователя 1С в системе «1С-Битрикс: Управление сайтом» (куда же без безопасности).

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

Резюме

В конечном итоге мы получаем работу сайта с кратностью, а что самое главное, получаем её, не нарушая механизм Битрикс.

Но всё же при выборе между первым и вторым вариантами решения проблемы наша команда настоятельно рекомендует выбирать именно второй

Если необходимо более подробное разъяснение по каждому из описанных способов, свяжитесь с нами любым удобным способом — мы с радостью проконсультируем Вас.

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

Оставайтесь на связи, чтобы ничего не пропустить!

И помните, дорогие друзья: если у Вас возникли вопросы и трудности при работе с платформой Битрикс, смело обращайтесь в компанию Сотбит — и мы Вам обязательно поможем!

Остались вопросы по статье?

Оставьте свой контакт и наш менеджер вас проконсультирует.



Решения
Сотбит: Оригами – интернет-магазин
39 900 руб.
11 Отзывов
Сотбит: B2B кабинет
179 900 руб.
3 Отзыва
Сотбит: B2BShop - Оптово-розничный магазин с B2B кабинетом
199 900 руб.
9 Отзывов
Сотбит: Парсер контента – сайты, excel, xml, yml, csv, rss
19 990 руб.
129 Отзывов
Сотбит: B2BMobile - мобильное приложение для B2B кабинета
49 990 руб.
Сотбит: SEO умного фильтра – мета-теги, заголовки, карта сайта
14 990 руб.
182 Отзыва
Сотбит: SEO умного поиска – мета-теги, заголовки, карта сайта
9 990 руб.
3 Отзыва
Сотбит: Мультирегиональность
14 990 руб.
37 Отзывов
Сотбит: Комплексные отзывы, комментарии, вопросы
9 990 руб.
3 Отзыва
Сотбит: 1С инструменты - расширение стандартного обмена
9 990 руб.
8 Отзывов
Сотбит: Похожие товары - как инструмент увеличения среднего чека
4 990 руб.
2 Отзыва
Сотбит: Быстрая загрузка картинок в визуальном редакторе
4 990 руб.
1 Отзыв
Сотбит: Коммерческие предложения - персональные КП для клиентов
39 990 руб.
31 992 руб.
Сотбит: Мультикорзина — несколько корзин в интернет-магазине
24 990 руб.
19 992 руб.
Сотбит: Рекламации — работа с претензиями
39 900 руб.
31 920 руб.
Сотбит: REST API
Бесплатно
Сотбит: Индивидуальные цены
39 900 руб.
Канонические ссылки (canonical)
1 000 руб.
3 Отзыва
Импорт из Excel. Загрузка каталога товаров 1С-Битрикс (admin)
5 000 руб.
29 Отзывов
Сотбит: Микроразметка Schema.org. Увеличение кликабельности в поисковых системах
4 990 руб.
Сотбит: Перекрестные продажи – похожие товары, коллекции, аксессуары
9 990 руб.
2 Отзыва
Сотбит: OpenGraph. Увеличение кликабельности постов в соц. сетях
4 990 руб.
Сотбит: Проверка контрагента
4 990 руб.
1 Отзыв
Сотбит: CRM инструменты
4 990 руб.
Сотбит: Счет на почту в PDF
4 990 руб.
3 Отзыва
Сотбит: Интеграция с Контур.Эльба
9 990 руб.
1 Отзыв
Сотбит: Расширенная регистрация и авторизация
9 990 руб.
2 Отзыва
Заказ по телефону
Бесплатно
Аспро: Оптимус - интернет-магазин
26 900 руб.
35 Отзывов
Интернет-магазин ЭЛЕКТРОСИЛА
20 900 руб.
16 720 руб.
14 Отзывов
Еще решения


Сотбит
Веб интегратор занимается разработкой сайтов на 1С-Битрикс, разработкой типовых решений, входит в ТОП-10 разработчиков для Маркетплейса 1С-Битрикс.
192029
Россия
Ленинградская область
Санкт-Петербург
м. «Петроградская», пр-т Медиков, д. 3-5, лит. А, оф. 211
+7 (812) 670-07-40
sale@sotbit.ru
,
Обратная связь