Архив рубрики: 1С-Битрикс. Туда и обратно…

Bitrix. Тормозит выгрузка на сайт. Часть первая. Одинэсная.

На очередном проекте (каталог 16к позиций + предложения + картинки) столкнулся с невозможностью выгрузки каталога на сайт. Навовсе. Долго-долго шкрябает, что-то выгружает, но завершить не может. Читать далее

Bitrix при обмене заказами возвращает некорректный XML.

В первой позиции файла указывается не объявление XML а мусорный пробельный символ или перевод строки. Подозреваю проблему с кодировкой. Появилось после обновления.
Временное быстрое решение — костыль в файл ядра.

1С-Bitrix. Выгрузка множественного свойства.

1. Добавить в схему возможность выгрузки значений множественного свойства.

2. Указать, что свойство множественное в классификаторе

3. Выгрузить свойства как множественные

Bitrix. Обмен заказами. Формирование имени контрагента.

Имя контрагента в 1С формируется:
1. Для юрлица из поля «Полное наименование»

2. Для физлица из поля «ФИО агента»!!! млдь!!!! АГЕНТА!!! Ттвою так…

Закат солнца вручную — запускаем событие в битриксе.

Все вполне очевидно. Хотя, пришлось слегка покопаться в исходниках.
Здесь используем событие OnSuccessCatalogImport1C модуля catalog. В данном случае, нужно было почистить мусор после импорта порции кривых данных из 1С.
Событие вызывается после импорта каждого файла *.xml, полученного от 1С. Имя файла передается во второй параметр обработчика события. Событие удобно использовать, например, для поиска пустых цен у торговых предложений. OnPriceUpdate — в данном случае использовать не получилось, т.к. цена не нулевая, а отсутствующая, и в файле не передается, и, соответственно, событий не генерирует (это по логике — не проверял).
Для проверки функциональности обработчика в работе использовал следующий код.

//Создаем описание события
$evt = new \Bitrix\Main\Event('catalog', 'OnSuccessCatalogImport1C');
//Получаем экземпляр менеджера событий
$man = \Bitrix\Main\EventManager::getInstance();
//Отправляем...
$man->send($evt);

Bitrix. Синхронизация заказов возращает html. II

В продолжение Bitrix. Синхронизация заказов возращает html.

Выяснил, что отключить вывод html вместо xml можно отключив галку :

2016-07-22_13-52-19

Или отключив админские права у пользователя из под которого идет обмен, т.к.:

$bDesignMode = $GLOBALS[«APPLICATION»]->GetShowIncludeAreas() && is_object($GLOBALS[«USER»]) && $GLOBALS[«USER»]->IsAdmin();

Нифига не очевидно, но как то так.

Очистка кэша после импорта скидок

После импорта скидок на сайт (bitrix), необходимо обновить кэш связанной информации для отображения новых цен/скидок в публичке.

CCatalogDiscount::ClearDiscountCache(array(
'PRODUCT' => true,
'SECTIONS' => true,
'PROPERTIES' => true
));

Не импортировать верхний уровень

При выгрузке каталога вложенные группы вываливаются в корень

С галкой (см. картинку) нужно обращаться с осторожностью. Читать далее

Способ доставки с сайта в 1С.

Для того, чтобы способ доставки приземлялся в заказе куда нужно, а именно сюда…
Способ доставки
Нужно установить в настройке обмена (в настройке документа заказ клиента) соответствие поля способ доставки свойству документа по наименованию так…
Способ доставки2
«Тип данных» = «Из дополнительных свойств документа (по Наименованию)»
«Значение» = «Способ доставки» — вбиваем ручками.

При подстановке значения при импорте заказа, система уидит что тип поля = ПеречислениеСсылка.СпособыДоставки и будет сопоставлять значение по представлению.
Соответственно наименование службы доставки (по идее) должно соответствовать представлению значения перечисления.
Способ доставки3
Пока в состоянии предположения. Проверяю.