Коннектор к Битрикс24, В этой теме Вы можете задать вопросы касательно модуля Бэкофис 2.0 и написать свои предложения. Имеется общая группа в телеге которая объединяет пользователей Битрикс использующих интеграцию с 1С и в которой мы можем скоординировать действия по продвижени
Был интернет-магазин на редакции "Бизнес", работала синхронизация с 1С (Управление торговлей). При этом изначально с сайта в 1С были загружены товары через механизм экспорта (расширение для 1С). Далее редакцию Битрикса расширили до "Интернет магазин+CRM" , настроили обмен сделками через Коннектор (т.к. заказы в ИМ стали конвертироваться в сделки). Но возникла проблема: в сделки товары не попадают (приходит пустая строка https://disk.yandex.ru/i/maEuD1lLBM5oyQ) и на сайте, соответственно, тоже всё удаляется (т.к. 1С шлёт обратно изменения по заказу). Включать обмен товарами в Коннекторе не можем, т.к. не устраивает формат обмена (нам не нужны торговые предложения на сайте + нужны гибкие настройки, как в расширении для интернет-магазинов). Вопрос: каким образом сделать так, чтобы коннектор понимал, какие товары приходят в сделке? Единственный вариант найденный - это идентификаторы Б24 https://disk.yandex.ru/i/npVO6RzSXxwiGA , но у нас более 5 тысяч товаров, руками прописывать всё нереально.
Коннектор к Битрикс24, В этой теме Вы можете задать вопросы касательно модуля Бэкофис 2.0 и написать свои предложения. Имеется общая группа в телеге которая объединяет пользователей Битрикс использующих интеграцию с 1С и в которой мы можем скоординировать действия по продвижени
Редакция продукта - 1С-Битрикс24: Интернет-магазин + CRM. Два сайта - Б24 и интернет-магазин, всё на одном ядре. На стороне Битрикс24 и в 1С установлен Коннектор. Обмен сделками работает, но только если сделки меняются или создаются в Б24 (руками) Если создаётся заказ на сайте, то автоматом в Б24 создаётся сделка (встроенный механизм Б24). И вот эта сделка не уходит в 1С. Если же её потом руками пересохранить (поменять любое поле), то в 1С она уйдёт. Похоже на баг в механизме конвертации заказа в сделку, видимо не фиксируются изменения приложением Коннектор.
Коннектор к Битрикс24, В этой теме Вы можете задать вопросы касательно модуля Бэкофис 2.0 и написать свои предложения. Имеется общая группа в телеге которая объединяет пользователей Битрикс использующих интеграцию с 1С и в которой мы можем скоординировать действия по продвижени
На нашёл информацию о принципах работы обмена по части товаров. Может кто сталкивался и подскажет? Проблемы следующие:
1) Если удаляется номенклатура в 1С (помечается на удаление, а потом удаляется), то на сайте (в админке) с ней ничего не происходит. Должна ли быть деактивация в Б24? Вопрос отпадает, возможно клиент как-то не так удаляет номенклатуру. 2) Картинки товаров загружаются только в доп. поле MORE_PHOTO - это ок. Но если в 1С сделать главной картинку или же поменять местами, или удалить, то в Б24 ничего не поменяется - порядок остаётся, как при первой загрузке картинок. Более того, если изменить карточку картинки в 1С (добавить описание), то выгружается новая картинка https://disk.yandex.ru/i/gv22EJG9yHi0ZQ . И, что самое интересное, это та же самая картинка с точки зрения Битрикса (включен контроль дубликатов) - тот же ID, пути, название и прочее. Если брать модули обмена для магазинных редакций, то там всё понятно - изменилась картинка -> выгружаем все по новой у товара и заменяем. В случае с Б24 логика работы непонятна.
Обновления установлены и на стороне 1С (Коннектор), и в Б24.
Иван Турченко написал: Нашёл как решить проблему, закомментировав пару строк в ядре в классе обмена документами, но хотелось бы решить задачу, не влезая в ядро.
А в каком файле/части файла это нужно сделать? И что закомментировать?
Роман Павленко написал: Иван Турченко , вы почти всё делаете правильно. Только результат надо добавлять в параметр события.
Код
$event ->addResult( new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, new \Bitrix\Sale\ResultError( 'Невозможно удалить последнюю запись' ) ) );
Роман, спасибо, что ответили! Но, к сожалению, данный код тоже не отрабатывает.
Код
$inst = EventManager::getInstance();
$inst->addEventHandler('sale', 'OnBeforeCollectionDeleteItem', 'saveInfo');
function saveInfo(\Bitrix\Main\Event $event)
{
/**
* @var \Bitrix\Sale\Shipment|\Bitrix\Sale\Payment $entity
*/
if ($_SESSION['BX_CML2_EXPORT']) {
$entity = $event->getParameter('ENTITY');
if ($entity instanceof \Bitrix\Sale\Shipment) {
$event->addResult(
new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::ERROR,
new \Bitrix\Sale\ResultError('Запрет на удаление отгрузки при обмене с 1С'
)
)
);
}
if ($entity instanceof \Bitrix\Sale\Payment) {
$event->addResult(
new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::ERROR,
new \Bitrix\Sale\ResultError(
'Запрет на удаление оплаты при обмене с 1С'
)
)
);
}
}
return $event;
}
Если сделать var_dump от $event, то ошибка в него пишется, но видимо дальше где-то эти ошибки игнорируются и отгрузка всё равно удаляется. Нашёл как решить проблему, закомментировав пару строк в ядре в классе обмена документами, но хотелось бы решить задачу, не влезая в ядро.
Роман Павленко,не могли бы показать пример кода, который бы запрещал удаление документов оплаты и доставки?
Пробовал два варианта (один закомментирован) добавления ошибки:
Код
$inst = EventManager::getInstance();
$inst->addEventHandler('sale', 'OnBeforeCollectionDeleteItem', 'saveInfo');
function saveInfo(\Bitrix\Main\Event $event)
{
$result = new \Bitrix\Sale\Result();
/**
* @var \Bitrix\Sale\Shipment|\Bitrix\Sale\Payment $entity
*/
if ($_SESSION['BX_CML2_EXPORT']) {
$entity = $event->getParameter('ENTITY');
if ($entity instanceof \Bitrix\Sale\Shipment) {
$result->addError(new \Bitrix\Sale\ResultError('Запрет на удаление отгрузки при обмене с 1С'));
/*return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::ERROR,
new \Bitrix\Sale\ResultError('', 'SALE_EVENT_COMPATIBILITY_ORDER_SAVE_WRONG_ORDER'),
'sale'
);*/
}
if ($entity instanceof \Bitrix\Sale\Payment) {
$result->addError(new \Bitrix\Sale\ResultError('Запрет на удаление оплаты при обмене с 1С'));
/*return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::ERROR,
new \Bitrix\Sale\ResultError('Запрет на удаление отгрузки при обмене с 1С', 'SALE_EVENT_COMPATIBILITY_ORDER_SAVE_WRONG_ORDER'),
'sale'
);*/
}
}
return $result;
}
Но в обоих случаях возвращаемая ошибка игнорируется и документы всё равно удаляются.
К сожалению, я ошибся, сказав, что обновления проблему не решили. На конкретном сайте был обработчик, который влиял на изменения картинки. После его исправления всё стало работать корректно. Т.е. если на сайте нет каких-то доп. обработок и не кастомизирован обмен, то установка обновлений Битрикса решит проблему.
На другом проекте, с которым работаю, обмен кастомизирован и обновления там не помогут. Скорее всего там придётся решать проблему своими силами. Как найду решение для такого случая (когда нет возможности обновиться), напишу.
ТП сказала установить обновления Битрикса и проверить работы. Обновления проблемы не решили. Суть проблемы выяснил, сообщил в ТП, жду их ответа. Приведённое выше решение поможет, но только частично. При таком решении нельзя будет добавить основную картинку к товару, если её не было, или изменить основную картинку.
Суть проблемы заключается в том, что при полном обмене или выгрузке изменений, если ранее картинка была выгружена на сайт, то повторно она уже не выгружается, но при этом в XML файле с данными по товарам тег для картинки передаётся. В результате получается, что пытаемся обновить картинку у товара, но т.к. на сайт её не отправили, то она не находится, при этом текущая удаляется. Я еще не изучал код обмена, чтобы понять, как можно решить эту проблему. Дождусь ответа поддержки, а там уже видно будет, как поступать.
Недавно только приходилось решать такую задачу. Полное наименование в Битриксе выгружается в поле PREVIEW_TEXT, поэтому при обмене просто можно поменять местами поля PREVIEW_TEXT и NAME. Ниже код обработчика для такого случая:
Здесь $arFields['IBLOCK_ID']==1 вместо 1 пишете ID своего инфоблока с каталогом. Этот код необходимо разместить в /bitrix/php_interface/init.php . Но если нет опыта работы с php кодом, то обязательно сделайте сначала копию этого файла, а лучше сайта.
Также столкнулся сегодня с такой проблемой. УТ11. В файле offers.xml никогда не присутствовал тег Количество у товара, если количество равнялось 0, но при этом остаток обновлялся (устанавливался 0). Сравнил класс импорта на текущем сайте с классом на старом сайте. Обнаружил, что раньше был вот такой код:
Проблема решена. После смены типа поля на "строка" у реквизита в 1с у него остались "значения свойств объектов": http://clip2net.com/s/1xnd6 После их удаления свойства стали выгружаться нормально.
Здравствуйте. На сайте была настроена интеграция с 1с, всё работало нормально. Все свойства, выгружаемые из 1с на сайт имели тип "строка". После недавней выгрузки на сайт появилась проблема - все свойства имели значения типа "fb23ds-5dft4-45ghg..." Выяснилось, что это появилось после обновления 1с заказчика. После совета тех. поддержки обновить Битрикс проблема с показом свойств решилась, но... Все свойства в Битриксе изменили свой тип с "строка" на "список". Тех. поддержка говорит, что нужно в 1с изменить тип поля с "справочник" на "строка". Изменили, сделали выгрузку - тип свойств так и остался "списком". Кто-то сталкивался с подобной проблемой? Очень многое на сайте было сделано с учетом того, что свойства имеют тип "строка". И теперь это многое работает неправильно, т.к. для типа "список" другой принцип фильтрации.