Послезное:
Проблемы:
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=42&LESSON_ID=4933#mistake_1
Интеграция с 1С: https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=42&CHAPTER_ID=04912
http://dermanov.ru/exp/bitrix-integration-with-1c-brief-introduction/
Первую общую выгрузку из 1C в битрикс, лучше разбить:
- Выгрузить XML из 1С
- Загрузить полученные файлы на FTP и запустить импорт XML
- Импортировать оба файла import.xml, потом offers.xml
Можно включить «режим отладки” обмена — отключить перезапись файлов в папке /upload/1c_catalog. Таким образом можно отключить удаление файлов выгрузки после завершения обмена.
Для этого нужно объявить константу в файле dbconn.php:
define(«BX_CATALOG_IMPORT_1C_PRESERVE», true);
Проблема: медленный импорт из 1C
- в инфоблоке ВЫКЛЮЧИТЬ:* — данная рекомендация для XML актуальна
- Индексировать разделы для модуля поиска
- Индексировать элементы для модуля поиска
- в Проактивной защите :
- отключить хранение сессий в базе
- и смену идентификатора сессии.
Настройки модуля
Торговый каталог
НЕТ — Разрешать сохранять товары без цен:
НЕТ — Разрешать сохранять товары, у которых заполнены не все диапазоны цен:
НЕТ — Показывать вкладку Торговый каталог для товаров, имеющих торговые предложения
ДА — Устанавливать параметр «НДС включен в цену» при создании новых товаров и предложений (не работает, если выгружается из 1С)
ДА — Включить количественный учет
НЕТ — Разрешить покупку при отсутствии товара (включая разрешение отрицательного количества товара)
НЕТ — Разрешить подписку при отсутствии товара
НЕТ — Включить складской учет
Складской учет внутри Битрикса — это как раз тот случай когда у вас нет 1С, и вы пытаетесь простенький учет вести с помощью Битрикса, если у вас есть 1С и вы планируете ее интегрировать с Битрикс, эту галочку нужно обязательно отключить.
НЕТ — Включить резервирование
Информационные блоки
ДА — Показывать код загрузки из внешних источников (нужен для понимания в какой инфоблок будет грузится товары из 1С и видеть коды товаров)
Магазин > Настройки > Интеграция с 1С
ДА — Использовать контрольные суммы элементов для оптимизации обновления каталога
НЕТ — Использовать сжатие zip, если доступно
если сервер мощный то можно включить, на слабом сервере будет делаться чуть дольше, но зато без ошибок
ДА — Не менять код (название) типа цены, если используется внешний код (XML_ID)
Магазин > Настройки > Цены > Типы цен
- Установить Внешний код такой же который выгружается из 1С
- Группы пользователей, имеющие права на просмотр этого типа цен (для разных групп своя цена)
init.php
// НДС включен в цену
AddEventHandler(«sale», «OnProductAdd», «OnProductAdd»);
function OnProductAdd($ID,$Fields){
$res=Array(«VAT_INCLUDED»=>’Y’);
CCatalogProduct::Update($ID,$res);
}
// событие, вызываемое после окончания обмена одним XML-файлом.
AddEventHandler(«catalog», «OnSuccessCatalogImport1C», «MyOnSuccessImport»);
function MyOnSuccessImport($arEvent){
CModule::IncludeModule(‘iblock’);
$obEl = new CIBlockElement();
$res = CIBlockElement::GetList(false, array(«IBLOCK_ID»=>4,»PREVIEW_PICTURE»=>false,»ACTIVE»=>’Y’), Array(«ID»));
while($ar_fields = $res->GetNext()){ $obEl->Update($ar_fields[«ID»] , array(‘ACTIVE’ => ‘N’)); }}
// удаляем картинки которые приходят из выгрузки , если в 1С их нету, а магазин грузят вручную
AddEventHandler(«iblock», «OnBeforeIBlockElementUpdate»,»DoNotUpdate»);
function DoNotUpdate(&$arFields)
{
if ($_REQUEST[‘mode’]==’import’)
{
unset($arFields[‘PREVIEW_PICTURE’]);
unset($arFields[‘DETAIL_PICTURE’]);
}
}
AddEventHandler(«iblock», «OnBeforeIBlockElementAdd»,»DoNotAdd»);
function DoNotAdd(&$arFields)
{
if ($_REQUEST[‘mode’]==’import’)
{
unset($arFields[‘PREVIEW_PICTURE’]);
unset($arFields[‘DETAIL_PICTURE’]);
}
}