Пожалуйста, еще раз проверьте ваши настройки обмена по этому чек-листу. В нём перечислены наиболее часто встречающиеся проблемы, которые составляют 70% обращений в Техподдержку. Кейсы, не вошедшие в чек-лист, перечислены ниже.
Проблема. При попытке обмена заказов в 1С выходит сообщение:
Выгружено товаров: 1
Выгружено картинок: 1
Выгрузка товаров успешно завершена
Не установлен реквизит «ГруппаДоступаККонтрагенту». Элемент не записан!
Не установлен реквизит «РегионДоставки». Элемент не записан!
Не установлен реквизит «Основная форма оплаты». Элемент не записан!
{Обработка.ОбменССайтом(3468)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
Произошла ошибка: . По причине:
Не удалось найти/создать контрагента.
Не удалось обработать документы, загруженные с сервера.
Обмен не выполнен.
Не выгружен ни один заказ.
Обмен заказами завершен с ошибками!!!
Решение. Скорее всего, в используемой конфигурации предусмотрена обязательность заполнения указанных выше реквизитов для элемента справочника Контрагенты.
Проблема. Не меняется статус заказа при выгрузке из 1С
В соответствие с логикой синхронизации 1С и «1С-Битрикс: Управление сайтом», статус заказа меняется, если из 1С передались дата оплаты либо дата отгрузки товара. Чтобы эти даты попали в XML-файл, который формируется 1С и передаётся на сайт, нужно сформировать и провести нужные документы.
- В 1С:УТ зарегистрировать оплату заказа можно путем ввода на основании заказа документов оплаты, таких как Платежное поручение входящее и Приходный кассовый ордер.
- Отгрузка, как правило, регистрируется вводом на основании заказа документа Реализация товаров и услуг.
- Если в регистре Расчеты с контрагентами остаток по заказу <= 0, заказ считается оплаченным.
- Если в регистре Заказы покупателей остаток по заказу <= 0, заказ считается отгруженным. У конфигурации УПП принцип тот же.
Статусы
Статусы заказа — этапы, через которые проходит заказ во время обработки.
Подробнее…
, в которые будут переводиться заказы при получении дат оплаты и отгрузки, устанавливаются в настройках модуля интернет-магазина: параметры При получении оплаты переводить заказ в статус и При получении разрешения доставки переводить заказ в статус соответственно.
Проблема. 1С заполнена и настроена на обмен с «1С-Битрикс: Управление сайтом», который тоже настроен на интеграцию с 1С.
При нажатии на кнопку Выполнить обмен сразу появляется сообщение в 1С: Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.
Решение. Возможные ошибки:
- Обычно появляется из-за некорректной настройки выгрузки товаров на вкладке Выгрузка товаров.
Стоит обратить внимание на то, что настраивается именно фильтр(!), а не выбираются поля для выгрузки. Если отмечается поле для фильтра, то значение этого поля в фильтре должно быть задано. - В 1С: Управление торговлей обратите внимание в справочнике Номенклатура на реквизит вид номенклатуры. Должен быть обязательно признак товар (наименование товар и тип номенклатуры товар).
- Если обмен осуществляется в режиме выгрузки изменений, а этих изменений с момента последнего обмена не зафиксировано, то возникает указанная ошибка. Стоит обратить внимание на следующие моменты:
- Если осуществляется полная выгрузка каталога на сайт, то настройка фильтра необязательна (нужно снять выделение со всех отмеченных полей на вкладке Выгрузка товаров).
- Изменения товара никаким образом не относятся к сайту, т.е. удаление товаров на сайте или их редактирование не фиксируется в 1С. При обмене выгружаются изменения товаров, произведённые именно в 1С с момента последней выгрузки.
Проблема. 1С заполнена и настроена на обмен по расписанию с «1С-Битрикс: Управление сайтом». Развернута копия базы 1С.
Изменения в «1С-Битрикс: Управление сайтом» не приходят в 1С, т.е. якобы на сайте нет изменений.
Решение. На самом деле, изменения есть и они приходят в копию базы 1С.
Чтобы изменения отслеживались в оригинале базы 1С, просто поменяйте пароль у пользователя «1С-Битрикс: Управление сайтом».
Проблема. Как выгрузить каталоги из 1С в разные типы инфоблоков?
Решение. Чтобы осуществить выгрузку в разные типы инфоблока, следует поместить несколько компонентов catalog.import.1c на разные страницы.
Например, имеем две страницы: http://mysite.ru/1c_import_1.php и http://mysite.ru/1c_import_2.php. На обеих страницах настраиваем компонент catalog.import.1c — указываем в параметрах разные типы инфоблоков и устанавливаем флажок у опции Импортировать с учетом типа инфоблока.
Затем при настройке импорта в 1С, для выгрузки в нужный тип инфоблока указываем разные файлы: http://mysite.ru/1c_import_1.php либо http://mysite.ru/1c_import_2.php.
Пример файла:
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $APPLICATION->SetTitle("import1"); ?> <?$APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array( "IBLOCK_TYPE" => "books", "SITE_LIST" => array(), "INTERVAL" => "30", "GROUP_PERMISSIONS" => array(0 => "1"), "USE_OFFERS" => "N", "USE_IBLOCK_TYPE_ID" => "Y", "SKIP_ROOT_SECTION" => "N", "ELEMENT_ACTION" => "D", "SECTION_ACTION" => "D", "FILE_SIZE_LIMIT" => "204800", "USE_CRC" => "Y", "USE_ZIP" => "Y", "USE_IBLOCK_PICTURE_SETTINGS" => "N", "GENERATE_PREVIEW" => "Y", "PREVIEW_WIDTH" => "100", "PREVIEW_HEIGHT" => "100", "DETAIL_RESIZE" => "Y", "DETAIL_WIDTH" => "300", "DETAIL_HEIGHT" => "300", "TRANSLIT_ON_ADD" => "Y", "TRANSLIT_ON_UPDATE" => "Y", "TRANSLIT_MAX_LEN" => "100", "TRANSLIT_CHANGE_CASE" => "L", "TRANSLIT_REPLACE_SPACE" => "_", "TRANSLIT_REPLACE_OTHER" => "_", "TRANSLIT_DELETE_REPEAT_REPLACE" => "Y" ), false );?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Проблема. Не удалось найти вид номенклатуры
В процессе обмена 1С с сайтов возникает ошибка: Не удалось найти вид номенклатуры: Услуга Не удалось найти вид номенклатуры: Товар Не удалось найти/создать номенклатуру. Не удалось обработать документы, загруженные с сервера.
Решение. Ошибка возникает, если в 1С нет типов номенклатуры Услуга и Товар. Эти типы номенклатуры критичны для процесса обмена данными с сайтом. Следует создать в 1С эти типы номенклатуры и только поле этого осуществлять обмен.
Проблема. В процессе обмена возникает ошибка Поле объекта не обнаружено.
В процессе обмена заказами возникает ошибка: {Обработка.ОбменССайтом(3271)}: Поле объекта не обнаружено (Наименование) >> ОтобразитьСостояние(«Идентификация контрагента: » + СтрокаДД.СтруктураДанныхКонтрагента.Наименование);
Решение. Проверьте настройки интеграции с 1С, закладка
Профили обмена
Подробнее…
: установлены ли соответствия для полей заказа.
Обратите внимание на поля Полное Наименование и Наименование. Эти поля критичны для 1С.
Проблема. Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
- Возникает ошибка следующего вида:
Выгружено товаров: 679 Выгружено картинок: 469 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен. Ответ сервера. Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401 bytes) in /var/www/bitrix/modules/iblock/classes/general/cml2.php on line 483 Выгрузка товаров завершена с ошибками!
Решение. Ошибка скорее всего связана с нехваткой ресурсов на масштабирование передаваемых на сервер изображений. Выходом из данной ситуации может служить отключение опции Выгружать картинки (вкладка Выгрузка товаров в настройке обмена в 1С).
Также можно увеличить размер выделяемой памяти в настройках PHP (параметр memory_limit), для этого следует обратиться к хостинг-провайдеру.
- Возникает ошибка следующего вида:
Выгружено товаров: 46 Выгружено картинок: 0 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: DB query error. Please try later. Выгрузка товаров завершена с ошибками!
Решение. Ошибка может возникать в случае некорректной передачи файла на сервер. В процессе отправки файл может «обрезаться» и терять свою целостность, в итоге файл на сервер передаётся некорректным по содержанию.
Причиной может служить прокси-сервер, через который осуществляется обмен. Попробуйте осуществить выгрузку не через прокси-сервер. Также попробуйте отключить опцию Использовать сжатие zip, если доступно в настройках интеграции с 1С — возможно, на сервере не поддерживается ZIP-сжатие. Проверьте настройки интеграции с 1С.
Проблема. Ошибка Произошла ошибка на стороне сервера. Файл не отправлен
В процессе обмена возникает такого вида ошибка:
Выгружено товаров: 3 Выгружено картинок: 0 Выгрузка товаров успешно завершена Выгружено заказов: 1 Произошла ошибка на стороне сервера. Файл не отправлен (C:Documents and SettingsUserLocal SettingsTempv8_5075_63.zip). Обмен не выполнен Ответ сервера: Файл для импорта пуст. Обмен заказами завершён с ошибками!
Решение. Причины возникновения ошибки могут быть следующие:
- На компьютере, где установлена 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
- Некорректно работает функции расширения ZIP, вследствие чего из архива не распаковываются файлы. Для решения возникшей проблемы рекомендуется:
- Установить последние стабильные версии обновлений модуля интернет-магазина.
- На время обмена отключить на локальной машине все блокирующее ПО (антивирус, файрволлы и т.д.)
- Отключить ZIP-сжатие в настройках интеграции с 1С.
- В корне сайта в файл .htaccess добавьте строки:
RewriteEngine on RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
- Закоментируйте следующие строки в файле
bitrix/admin/.htaccess
, которые отключают mod_rewrite:#<ifmodule mod_rewrite.c=""> # RewriteEngine Off #</ifmodule>
Примечание: данный файл может отсутствовать, поскольку он создается вручную.
- В файл
bitrix/php_interface/dbconn.php
добавьте строки:$remote_user = $_SERVER["REMOTE_USER"] ? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"]; $strTmp = base64_decode(substr($remote_user,6)); if ($strTmp) list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);
Проблема. Не работает авторизация при обмене данными с 1С
Решение. Часто проблема возникает в результате работы PHP в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в PHP. Можно это проверить, посмотрев phpinfo() в разделе: Server API: CGI. Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:
Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом
Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует обратиться к хостинг-провайдеру с этой проблемой.
Проблема. При выгрузке каталога из 1C не ставит галочку уменьшать количество при заказе
Решение. Чтобы исправить это, необходимо в файле init.php добавить код, который будет срабатывать при добавление продукта (через событие OnProductAdd):
<? AddEventHandler("sale", "OnProductAdd", "OnProductAdd"); function OnProductAdd($ID,$Fields) { $res=Array("QUANTITY_TRACE"=>'Y); CCatalogProduct::Update($ID,$res); } ?>
Проблема: медленный импорт из 1C
Возможные причины:
Включённая индексация. Для ускорения можете в настройках инфоблока выключить индексацию элементов и разделов, а также свойств.
Проактивная защита, которая меняет идентификатор сессии каждую минуту. В случае интеграции с 1C приложение 1C не подхватывает новый идентификатор и пытается получить переменные сессии со старым ID сессии. В сессии хранится шаг импорта, если не удаётся в сессии найти этот шаг, то считается, что шаг равен 1, т.е. импорт начинается сначала. Попробуйте отключить хранение сессий в базе и смену идентификатора сессии.
Задача: Структура каталога на сайте должна отличаться от структуры в 1C.
Варианты решения:
Вариант 1. Делается отдельный классификатор — инфоблок и разделы. У разделов создаётся свойство привязка к разделам, и нужные «человеческие» разделы привязываются к разделам инфоблока с классификатором, который пришел из 1C. Можно сделать множественную привязку — будет проще свести в один раздел из кучи непонятных в 1C.
Вариант 2. В 1C можно создать такой объект как прайс-лист и попробовать настроить обмен с сайтом, уже используя его как прокси. Т.е. если в справочнике Номенклатура бардак и вообще куча всякого, что на сайте не должно показываться, то создаётся прайс-лист, и уже в нём создаются нужные секции. И специально обученный сотрудник добавляет в узлы прайс-листа ссылки на позиции из справочника номенклатура.
Тогда на сайт будет уходить CML, структура которого берётся из прайс-листа, а не из номенклатурного справочника.
Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:
- Выгружено товаров: 1 832
Выгружено картинок: 0
Выгружено предложений: 0
Произошла ошибка на стороне сервера.
Обмен не выполнен
Ответ сервера:
Ошибка импорта метаданных.
Выгрузка товаров завершена с ошибками!!!
Причина. Ошибка может возникать, если названия свойств начинаются с цифр. Первый знак в названии должен быть буквой.
Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:
-
Ошибка импорта метаданных. В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.
Причина: Такая ошибка возникает, когда клиент забывает указать в настройках обмена конкретное соглашение (в настройках 1С), по которому должны выгружаться цены. Соглашение указывается в отборах выгружаемых инфоблоков.
Проблема. Неполная выгрузка картинок.
Картинки выгружаются из 1С, только при первой полной выгрузке каталога товаров, не важно выгрузка была на в папку на локальном компьютере или на сайт. В последствии картинки выгружаются только новые и измененные.
Если изменены настройки в 1С и картинки не выгрузились в первый раз на сайт, то в настройках модуля обмена выполните обмен через кнопку принудительной полной выгрузке картинок.
- Ошибки на стороне веб-сервера
- Ошибки при работе с файлами данных
- Проблемы авторизации
- Ошибки MySQL
- Логические ошибки
- Диагностика отладки
- Отладка обмена на стороне 1С-Битрикс
- Модуль отладки обмена от ИНТЕРВОЛГИ
- Выводы
Настроить обмен между «1С» и «1С-Битрикс» интернет-магазина или сайта – не проблема. Эта функция присутствует «из коробки» начиная с ранних версий продуктов «1С:Предприятие», редакция Управление торговлей и «1С-Битрикс: Управление сайтом» в редакциях Малый бизнес и Бизнес.
Даже с учётом имеющейся документации по продукту, у многих разработчиков сайтов возникают сложности в корректной настройке обмена данными между этими системами. Рассмотрим самые частые проблемы, которые возникают у тех кто пытался.
Мы выделили несколько групп ошибок:
- проблемы авторизации;
- ошибки на стороне сервера;
- ошибки при работе с файлами данных;
- ошибки MySQL;
- логические ошибки.
Далее мы детально рассмотрим сами ошибки и способы их исправления.
Ошибки на стороне веб-сервера
К этой группе относятся ошибки, возникающие в подсистемах веб-сервера, отвечающих за выполнение PHP-кода. Обычно это: Nginx, Apache и сам интерпретатор языка PHP.
Возможны 2 варианта:
- Ошибка действительно вызвана неоптимальными настройками Nginx/Apache/PHP. Если Вы чувствуете неуверенность в своем веб-сервере или совсем недавно на него переехали — привлеките администратора для проверки и изменения настроек.
Название ошибки | Как исправить |
---|---|
Failed sending data to the peer (no headers, no data). |
|
Получен пустой ответ сервера. | |
Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…). | Проверить настройку memory_limit в php.ini. Должно быть указано не менее 512Mb, увеличить значение и перезагрузить сервер. Или не изменяя настройки сервера сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). Если проблема с нехваткой памяти, данное решение не подойдёт. |
- Подобная ошибка может маскировать либо некорректную настройку объема одной порции загружаемых данных (10К товаров за раз, например), либо логическую ошибку в программном коде (например, пересчет каких-нибудь значений в товарах по событию изменения).
Способы решения:
- уменьшать объем передаваемых за раз данных (проверить на 1 товаре, но лучше выставлять значение поочередно, 1, 100, 1000, 10000 и смотреть, какое значение оптимально для ваших настроек);
- временно закомментировать обработчики событий в файле /bitrix/php_interface/init.php, может быть они мешают обмену.
Ошибки при работе с файлами данных
Данные ошибки возникают при неверной настройке прав доступа к файлу. Отображение ошибок звучит следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Возможные причины и их решение:
Название ошибки | Как исправить |
---|---|
Закончилось место на диске. |
Удалить старые бэкапы или увеличить тариф на хостинге. |
По ftp файлы загружаются, а через веб-интерфейс административного раздела сайта нет. |
Обратиться в техническую поддержку хостинг-провайдера. |
Не работает или некорректно работает сжатие данных при обмене. |
Для начала можно попробовать выключить сжатие в настройках модуля обмена. Также можно проверить работу функции zip_open на сервере Откройте в браузере страницу http://<ваш_сайт>//bitrix/admin/phpinfo.php (Либо выполните команду if (exist_function (“zip_open”)){ echo “OK”; } В браузере отобразится таблица:
Для строки ZIP должно стоять «enabled». |
Проблемы авторизации
Самая распространённая проблема, если пользователь не указал данные или указал их неверно.
Название ошибки | Проблема / как исправить |
---|---|
«Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль, а также настройки подключения к Интернет». |
На сервере 1С установлено ПО, которое блокирует исходящие соединения, в этом случае при попытке обмена выдаётся ошибка. Исправляется добавлением адреса сайта в белый список ПО. |
«Авторизация не выполнена. Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль». |
Неверно указаны логин/пароль доступа к сайту. Надо проверить, получается ли по указанному доступу зайти на сайт. И проверить наличие редиректов при переходе по ссылке, например на https версию сайта. Если по ссылке http:// адрес сайта /bitrix/admin/1c_exchange.php появляется сообщение, значит с логином и паролем всё в порядке.
|
Ошибки MySQL
Ошибки возникают при соединении с базой данных MySQL, настроенной на сайте.
Название ошибки | Проблема / как исправить |
---|---|
[Illegal mix of collations (russian_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation ‘=’] |
Конфликт кодировок. Причина ошибки — таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в russian и новые таблицы создаются в не russian. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке russian. |
Логические ошибки
Ошибки пользователей неверно понимающих процесс обмена данными и, соответственно, неверно выполняющих какие-то действия.
Название ошибки | Проблема / как исправить |
---|---|
Несовместимые версии модуля обмена и базовой конфигурации 1С. |
Проверить на официальном сайте “1С-Битрикс” соответствие версий продуктов. Если версии не совпадают, переустановить модуль обмена на стороне 1С |
«Изменения товаров не зарегистрированы. Выгрузка товаров не произведена». |
Неверно настроен отбор товаров в модуле обмена. Надо проверить эти настройки. Скорей всего, выбраны параметры, которые не позволяют правильно отфильтровать параметры для выгрузки. Также это сообщение выдаётся, если если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена. В этом случае это не ошибка, а выгрузки не произошло, потому что данные со стороны 1с не были изменены. |
«Не удалось найти вид номенклатуры». |
Ошибка появляется, если в «1С» нет видов номенклатуры «Услуга» и «Товар». Эти виды критичны для процесса обмена данными с сайтом. Решение – создать в «1С» указанные виды номенклатуры. |
«Поле объекта не обнаружено». |
Не указаны соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Два поля «Полное Название» и «Название» критичны для 1С. Если их не задать, экспорт выполняться не будет. Настройка соответствий для разных типов плательщиков производится отдельно. |
Данные выгружаются на сайт, но не обновляются. |
На сайте используют контрольные суммы для ускорения обмена, а на стороне 1С программисты обычно забывают их пересчитывать, когда пытаются доработать модуль обмена. Проверяется отключением контрольных сумм на сайте. Обмен становится дольше, поэтому надо заставить специалиста 1С вернуть отключенную настройку. |
Диагностика отладки
Мы применяем два инструмента отладки обмена между 1С и 1С-Битрикс.
Отладка обмена на стороне 1С-Битрикс
При настройке выгрузки необходимо проверить существование папки /upload/1c_catalog/. В эту папку будут загружаться файлы при обмене.
При необходимости, можно удалять из папки файлы последнего обмена, т.к. по завершению обмена файлы последней операции будут храниться именно в этой папке. Выполнение этой задачи возможно сделать автоматически, например запустить «Режим отладки» процесса обмена на сайте. При включенном «режиме отладки» не будут удаляться старые файлы из этого каталога после успешного обмена.
Включить «режим отладки» можно отредактировав файл dbconn.php. А именно, создать константу такого вида: define(«BX_CATALOG_IMPORT_1C_PRESERVE», true).
На стороне 1С-Битрикс мы можем увидеть только конечные данные. Если данные приходят корректные, то они попадают в инфоблоки и это видно. Если данные приходят некорректные, то либо неверные данные были выгружены из 1С, либо выставлен неверный тип данных. Например вы пытаетесь передать многострочный список как строку.
Модуль отладки обмена от ИНТЕРВОЛГИ
Для упрощения диагностики мы создали модуль отладки обмена.
Он встраивается между 1С и 1С-Битрикс и пишет логи того, что происходит при обмене. По этим логам можно выяснить, где ошибка и исправить её. Отображение логов происходит в административной части сайта.
Модуль отладки обмена от ИНТЕРВОЛГИ лучше логов со стороны 1С-Битрикс, потому что он:
- следит за размером и в результате его работы не закончится место на сайте;
- логирует обмен справочников и заказов;
- логирует время обмена и время выполнения одного шага.
Выводы
Если не разбираться в вопросе и попытаться исправить обмен, то можно сделать только хуже и придётся или переписывать код модуля или ставить модуль обмена заново.
Наша компания обладает компетенциями в вопросе отладки обмена. Если у вас возникла подобная проблема, напишите, обсудим.
Вам может быть интересно:
- Tutorial по стандартному и нестандартному обмену сайта с 1С. Часть первая: стандартный обмен и его хитрости.
- Tutorial по обмену сайта с 1С. Часть вторая: зачем и как писать свой обмен с нуля на очередях и REST API.
- Tutorial по обмену с 1С. Часть третья: Выжимаем максимум из стандарта. Что мы хотели бы знать 1000 проектов назад.
- Tutorial по обмену с 1С. Часть четвертая: Обмен через промежуточную базу данных.
- Tutorial по обмену с 1С. Часть пятая: Наш опыт настройки 1000 и 1 обмена.
Настройка обмена выполнена правильно, но обмен все равно проходит некорректно? Рассмотрим типичные проблемы, возникающие в процессе интеграции сайта с 1С, и способы их решения.
Обмен заказами завершен с ошибками
Проблема. При попытке обмена заказов в 1С выходит сообщение:
Выгружено товаров: 1
Выгружено картинок: 1
Выгрузка товаров успешно завершена
Не установлен реквизит «ГруппаДоступаККонтрагенту». Элемент не записан!
Не установлен реквизит «РегионДоставки». Элемент не записан!
Не установлен реквизит «Основная форма оплаты». Элемент не записан!
{Обработка.ОбменССайтом(3468)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
Произошла ошибка: . По причине:
Не удалось найти/создать контрагента.
Не удалось обработать документы, загруженные с сервера.
Обмен не выполнен.
Не выгружен ни один заказ.
Обмен заказами завершен с ошибками!!!
Решение. Скорее всего, в используемой конфигурации предусмотрена обязательность заполнения указанных выше реквизитов для элемента справочника Контрагенты.
Не меняется статус заказа при выгрузке из 1С
Проблема. Не меняется статус заказа при выгрузке из 1С
В соответствие с логикой синхронизации 1С и «1С-Битрикс: Управление сайтом», статус заказа меняется, если из 1С передались дата оплаты либо дата отгрузки товара. Чтобы эти даты попали в XML-файл, который формируется 1С и передаётся на сайт, нужно сформировать и провести нужные документы.
- В 1С:УТ зарегистрировать оплату заказа можно путем ввода на основании заказа документов оплаты, таких как Платежное поручение входящее и Приходный кассовый ордер.
- Отгрузка, как правило, регистрируется вводом на основании заказа документа Реализация товаров и услуг.
- Если в регистре Расчеты с контрагентами остаток по заказу <= 0, заказ считается оплаченным.
- Если в регистре Заказы покупателей остаток по заказу <= 0, заказ считается отгруженным. У конфигурации УПП принцип тот же.
Статусы, в которые будут переводиться заказы при получении дат оплаты и отгрузки, устанавливаются в настройках модуля интернет-магазина: параметры При получении оплаты переводить заказ в статус и При получении разрешения доставки переводить заказ в статус соответственно.
Изменения товаров не зарегистрированы. Выгрузка товаров не произведена
Проблема. 1С заполнена и настроена на обмен с «1С-Битрикс: Управление сайтом», который тоже настроен на интеграцию с 1С. При нажатии на кнопку Выполнить обмен сразу появляется сообщение в 1С: Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.
Решение. Возможные ошибки:
- Обычно появляется из-за некорректной настройки выгрузки товаров на вкладке Выгрузка товаров. Стоит обратить внимание на то, что настраивается именно фильтр(!), а не выбираются поля для выгрузки. Если отмечается поле для фильтра, то значение этого поля в фильтре должно быть задано.
- В 1С: Управление торговлей обратите внимание в справочнике Номенклатура на реквизит вид номенклатуры. Должен быть обязательно признак товар (наименование товар и тип номенклатуры товар).
- Если обмен осуществляется в режиме выгрузки изменений, а этих изменений с момента последнего обмена не зафиксировано, то возникает указанная ошибка. Стоит обратить внимание на следующие моменты:
- Если осуществляется полная выгрузка каталога на сайт, то настройка фильтра необязательна (нужно снять выделение со всех отмеченных полей на вкладке Выгрузка товаров).
- Изменения товара никаким образом не относятся к сайту, т.е. удаление товаров на сайте или их редактирование не фиксируется в 1С. При обмене выгружаются изменения товаров, произведённые именно в 1С с момента последней выгрузки.
Изменения на сайте не приходят в 1С
Проблема. 1С заполнена и настроена на обмен по расписанию с «1С-Битрикс: Управление сайтом». Развернута копия базы 1С. Изменения в «1С-Битрикс: Управление сайтом» не приходят в 1С, т.е. якобы на сайте нет изменений.
Решение. На самом деле, изменения есть и они приходят в копию базы 1С. Чтобы изменения отслеживались в оригинале базы 1С, просто поменяйте пароль у пользователя «1С-Битрикс: Управление сайтом».
Как выгрузить каталоги из 1С в разные типы инфоблоков?
Проблема. Как выгрузить каталоги из 1С в разные типы инфоблоков?
Решение. Чтобы осуществить выгрузку в разные типы инфоблока, следует поместить несколько компонентов catalog.import.1c на разные страницы.
Например, имеем две страницы: http://mysite.ru/1c_import_1.php и http://mysite.ru/1c_import_2.php. На обеих страницах настраиваем компонент catalog.import.1c — указываем в параметрах разные типы инфоблоков и устанавливаем флажок у опции Импортировать с учетом типа инфоблока.
Затем при настройке импорта в 1С, для выгрузки в нужный тип инфоблока указываем разные файлы: http://mysite.ru/1c_import_1.php либо http://mysite.ru/1c_import_2.php.
Пример файла:
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("import1");
?>
<?$APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array(
"IBLOCK_TYPE" => "books",
"SITE_LIST" => array(),
"INTERVAL" => "30",
"GROUP_PERMISSIONS" => array(0 => "1"),
"USE_OFFERS" => "N",
"USE_IBLOCK_TYPE_ID" => "Y",
"SKIP_ROOT_SECTION" => "N",
"ELEMENT_ACTION" => "D",
"SECTION_ACTION" => "D",
"FILE_SIZE_LIMIT" => "204800",
"USE_CRC" => "Y",
"USE_ZIP" => "Y",
"USE_IBLOCK_PICTURE_SETTINGS" => "N",
"GENERATE_PREVIEW" => "Y",
"PREVIEW_WIDTH" => "100",
"PREVIEW_HEIGHT" => "100",
"DETAIL_RESIZE" => "Y",
"DETAIL_WIDTH" => "300",
"DETAIL_HEIGHT" => "300",
"TRANSLIT_ON_ADD" => "Y",
"TRANSLIT_ON_UPDATE" => "Y",
"TRANSLIT_MAX_LEN" => "100",
"TRANSLIT_CHANGE_CASE" => "L",
"TRANSLIT_REPLACE_SPACE" => "_",
"TRANSLIT_REPLACE_OTHER" => "_",
"TRANSLIT_DELETE_REPEAT_REPLACE" => "Y"
),
false
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Не удалось найти вид номенклатуры
Проблема. Не удалось найти вид номенклатуры
В процессе обмена 1С с сайтов возникает ошибка: Не удалось найти вид номенклатуры: Услуга Не удалось найти вид номенклатуры: Товар Не удалось найти/создать номенклатуру. Не удалось обработать документы, загруженные с сервера.
Решение. Ошибка возникает, если в 1С нет типов номенклатуры Услуга и Товар. Эти типы номенклатуры критичны для процесса обмена данными с сайтом. Следует создать в 1С эти типы номенклатуры и только поле этого осуществлять обмен.
Поле объекта не обнаружено
Проблема. В процессе обмена возникает ошибка Поле объекта не обнаружено.
В процессе обмена заказами возникает ошибка: {Обработка.ОбменССайтом(3271)}: Поле объекта не обнаружено (Наименование) >> ОтобразитьСостояние(«Идентификация контрагента: » + СтрокаДД.СтруктураДанныхКонтрагента.Наименование);
Решение. Проверьте настройки интеграции с 1С, закладка Профили обмена: установлены ли соответствия для полей заказа. Обратите внимание на поля Полное Наименование и Наименование. Эти поля критичны для 1С.
Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
- Возникает ошибка следующего вида:
Выгружено товаров: 679 Выгружено картинок: 469 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен. Ответ сервера. Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401 bytes) in /var/www/bitrix/modules/iblock/classes/general/cml2.php on line 483 Выгрузка товаров завершена с ошибками!
Решение. Ошибка скорее всего связана с нехваткой ресурсов на масштабирование передаваемых на сервер изображений. Выходом из данной ситуации может служить отключение опции Выгружать картинки (вкладка Выгрузка товаров в настройке обмена в 1С).
Также можно увеличить размер выделяемой памяти в настройках PHP (параметр memory_limit), для этого следует обратиться к хостинг-провайдеру.
- Возникает ошибка следующего вида:
Выгружено товаров: 46 Выгружено картинок: 0 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: DB query error. Please try later. Выгрузка товаров завершена с ошибками!
Решение. Ошибка может возникать в случае некорректной передачи файла на сервер. В процессе отправки файл может «обрезаться» и терять свою целостность, в итоге файл на сервер передаётся некорректным по содержанию.
Причиной может служить прокси-сервер, через который осуществляется обмен. Попробуйте осуществить выгрузку не через прокси-сервер. Также попробуйте отключить опцию Использовать сжатие zip, если доступно в настройках интеграции с 1С — возможно, на сервере не поддерживается ZIP-сжатие. Проверьте настройки интеграции с 1С.
Произошла ошибка на стороне сервера. Файл не отправлен
В процессе обмена возникает такого вида ошибка:
Выгружено товаров: 3 Выгружено картинок: 0 Выгрузка товаров успешно завершена Выгружено заказов: 1 Произошла ошибка на стороне сервера. Файл не отправлен (C:Documents and SettingsUserLocal SettingsTempv8_5075_63.zip). Обмен не выполнен Ответ сервера: Файл для импорта пуст. Обмен заказами завершён с ошибками!
Решение. Причины возникновения ошибки могут быть следующие:
- На компьютере, где установлена 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
- Некорректно работает функции расширения ZIP, вследствие чего из архива не распаковываются файлы. Для решения возникшей проблемы рекомендуется:
- Установить последние стабильные версии обновлений модуля интернет-магазина.
- На время обмена отключить на локальной машине все блокирующее ПО (антивирус, файрволлы и т.д.)
- Отключить ZIP-сжатие в настройках интеграции с 1С.
Не работает авторизация при обмене данными с 1С
Решение. Часто проблема возникает в результате работы PHP в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в PHP. Можно это проверить, посмотрев phpinfo() в разделе: Server API: CGI. Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:
- В корне сайта в файл .htaccess добавьте строки:
RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
- Закомментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:
#<ifmodule mod_rewrite.c="">
# RewriteEngine Off
#</ifmodule>
Примечание: данный файл может отсутствовать, поскольку он создается вручную.
- В файл bitrix/php_interface/dbconn.php добавьте строки:
$remote_user = $_SERVER["REMOTE_USER"]
? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);
Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом
Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует обратиться к хостинг-провайдеру с этой проблемой.
При выгрузке каталога из 1С не ставит галочку «уменьшать количество при заказе»
Проблема. При выгрузке каталога из 1C не ставит галочку уменьшать количество при заказе
Решение. Чтобы исправить это, необходимо в файле init.php добавить код, который будет срабатывать при добавлении продукта (через событие OnProductAdd):
<?
AddEventHandler("sale", "OnProductAdd", "OnProductAdd");
function OnProductAdd($ID,$Fields)
{
$res=Array("QUANTITY_TRACE"=>'Y);
CCatalogProduct::Update($ID,$res);
}
?>
Возможные причины медленного импорта из 1С
Проблема. Медленный импорт из 1C.
Возможные причины:
Включённая индексация. Для ускорения можете в настройках инфоблока выключить индексацию элементов и разделов, а также свойств.
Проактивная защита, которая меняет идентификатор сессии каждую минуту. В случае интеграции с 1C приложение 1C не подхватывает новый идентификатор и пытается получить переменные сессии со старым ID сессии. В сессии хранится шаг импорта, если не удаётся в сессии найти этот шаг, то считается, что шаг равен 1, т.е. импорт начинается сначала. Попробуйте отключить хранение сессий в базе и смену идентификатора сессии.
Если структура каталога в 1С отличается от каталога на сайте?
Задача: Структура каталога на сайте должна отличаться от структуры в 1C.
Варианты решения:
Вариант 1. Делается отдельный классификатор — инфоблок и разделы. У разделов создаётся свойство привязка к разделам, и нужные «человеческие» разделы привязываются к разделам инфоблока с классификатором, который пришел из 1C. Можно сделать множественную привязку — будет проще свести в один раздел из кучи непонятных в 1C.
Вариант 2. В 1C можно создать такой объект как прайс-лист и попробовать настроить обмен с сайтом, уже используя его как прокси. Т.е. если в справочнике Номенклатура бардак и вообще куча всякого, что на сайте не должно показываться, то создаётся прайс-лист, и уже в нём создаются нужные секции. И специально обученный сотрудник добавляет в узлы прайс-листа ссылки на позиции из справочника номенклатура.
Тогда на сайт будет уходить CML, структура которого берётся из прайс-листа, а не из номенклатурного справочника.
Ошибка импорта метаданных
Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:
Выгружено товаров: 1 832
Выгружено картинок: 0
Выгружено предложений: 0
Произошла ошибка на стороне сервера.
Обмен не выполнен
Ответ сервера:
Ошибка импорта метаданных.
Выгрузка товаров завершена с ошибками!!!
Причина. Ошибка может возникать, если названия свойств начинаются с цифр. Первый знак в названии должен быть буквой.
Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:
Ошибка импорта метаданных. В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.
Причина. Такая ошибка возникает, когда клиент забывает указать в настройках обмена конкретное соглашение (в настройках 1С), по которому должны выгружаться цены. Соглашение указывается в отборах выгружаемых инфоблоков.
Выгрузка картинок
Проблема. Неполная выгрузка картинок.
Картинки выгружаются из 1С, только при первой полной выгрузке каталога товаров, не важно выгрузка была на в папку на локальном компьютере или на сайт. В последствии картинки выгружаются только новые и измененные.
Если изменены настройки в 1С и картинки не выгрузились в первый раз на сайт, то в настройках модуля обмена выполните обмен через кнопку принудительной полной выгрузке картинок.
Время на прочтение
3 мин
Количество просмотров 32K
В этой статье мы собрали основные проблемы обмена с 1с и простые чек-листы по их решению
Статья будет полезна как программистам 1С, так и Битрикс разработчикам.
Текст структурирован по принципу: проблема — варианты решения. Если есть конкретная задача, то сразу переходите по внутренней ссылке.
Перед тем, как перейти к описаниям сначала проверьте сайт тестами битрикс (проверка системы и проверка прав доступа). Примерно половина проблем после этого исчезают.
Инструкции по 1С даны для УТ 11
- Не выгружаются цены
- Не выгружаются разделы
- Не выгружаются фото
- Задваиваются свойства
- Ошибка 502, превышение памяти или белый экран
- Символьные коды не создаются
- Много ошибок 404 после обмена с сайтом
- Подразделы перемещаются в корень сайта из родительских разделов
Не выгружаются цены
- Проверяем на стороне 1с, что
- Разрешены типовые соглашения с контрагентами
- Создано типовое соглашение с контрагентами, доступное внешним пользователям
- В нем выбран тип цены
- В товаре есть цена с этим типом цены
- В «отборе и сортировке» в товаре указано это соглашение в поле «цены»
- Если у вас Битрикс Малый бизнес, то тип цен обязательно должен быть один
Не выгружаются разделы
То есть товары попадают на сайт без разделов
Варианты причин и решений
- В разделах могут быть обязательные поля, которые из 1с не могут приходить (например, фото). Тогда при обмене не создастся раздел из-за ошибки
- В Битрикс Малый бизнес может в выгрузке быть настроено больше одного типа цен. В этом случае выгрузка не будет проходить из-за того, что сначала выгружаются цены, а потом структура разделов и если на выгрузке цен выгрузка вернет ошибку, то и разделы не загрузятся.
Не выгружаются фото
- В 1С проверить, что стоят галочки выгружать файлы и изображения
- Нажать кнопку принудительного обмена с картинками.
- Если не помогло, то проверить: в настройках обмена с 1С на стороне сайта должно быть включено «Использовать ZIP», а на сайте должен стоять ZIP-модуль.
- При этом «максимальный размер загружаемого файла» должен быть меньше, чем post_max_size и upload_max_filesize в настройках сервера. Потому что если фото не влезает в размер лимита на загрузку сервера, то разделение на несколько zip файлов может решить проблему
Задваиваются свойства
Одно и то же свойство приходит 2 и больше раз.
Причина в том, что в 1с свойства прикрепляются к видам номенклатуры и если их несколько, то и свойств создается несколько для одного И того же.
Как решать
В 1с нужно создавать свойство через копирование предыдущего и при этом обязательно указывать, что «прикрепить именно это свойство к новому виду номенклатуры»
Видео пример
502 или белый экран
Сайт падает с ошибкой 502 или с ошибкой превышения объема выделенной памяти.
В настройках обмена с 1С на стороне сайта время одного шага обмена поставить от 1 до 5 секунд
Если не помогло, то провести обмен без картинок.
Обмен может не проходить из-за того, что сайт не может нарезать превью из очень большой картинки.
Символьные коды не создаются
Скорее всего на сервере не настроен mbstring. Проверьте сайт внутренним тестом битрикс.
Много ошибок 404 после обмена с сайтом
Скорее всего у вас установлена галочка «транслитерировать символьный код из названия при обновлении раздела».
Из-за этого при изменении названия, меняется и адрес, что очень плохо для SEO
Подразделы перемещаются в корень сайта из родительских разделов
Скорее всего это происходит при обмене в режиме «только изменения» при установленной галочке «Не импортировать верхний уровень группы товаров, если он единственный»
Список дополняется по мере выявления новых проблемных мест.
P.S. Чтобы быть в курсе новых публикаций, подписывайтесь на меня в Facebook.
Отвечаем на вопросы клиентов, почему: Интеграция осуществлена, но система работает не так как ожидалось? Обмен данными между Б24 и 1С работает не у всех менеджеров? Информация контрагентах или заказах не передается?
Откроем 1С УНФ версии 1.6 и активируем портал.
Попробуем смоделировать ситуацию и выявить проблему почему так происходит:
- Обмен данными не происходит только у определенного менеджера или группы менеджеров?
- Не происходит ни каких данных из Б24 в 1С?
- Нет обратного обмена данными из 1С в Б24?
- Обмен данными не происходит у всех менеджеров одинаково?
С чего нужно начать?
- Договорится о взаимодействии и совместной работе двух администраторов Б24 и 1С.
- Проверить текущую версию модуля.
- Проверить наличие новой версии обновления.
- Перед установкой новой версии сделать бэкап базы 1С и настроек модуля синхронизации.
- Если есть новое обновление, то нужно переустановить в нерабочее время модуль синхронизации.
- Проверить исчезла ли проблема после обновления модуля или осталась.
- Проверить сопоставление пользователей в обоих системах.
- Проверить фильтры обмена на предмет ошибок и пропусков.
- Убедится в правильности настроек доступов для проблемных сотрудников в модуле CRM и 1С.
Рассмотрим ситуацию, когда обмен данными происходит не у всех менеджеров.
Возможные причины:
Часто при приглашении новых сотрудников в портал Б24 администратор просто забывает добавить их в 1С и предоставить им соответствующие доступы. В результате для них отсутствует настройки синхронизации, которые проводятся со стороны 1С в меню «настройки синхронизации с Битрикс24.CRM», вкладка «Прочие», добавить пользователя.
Другая ситуация, заказы из Б24 перетекают в 1С, меняются и синхронизируются данные, меняются стадии, но обратная связь и изменения из 1С не возвращаются в Б24, например, созданный номер заказа в 1С не попадает в Б24.
Как быть?
Проблема чаще всего бывает в ошибке настроек вкладки 1С «Настройки синхронизации сделок.»
Типовая ошибка – настроенные и сохраненные в системе жесткие фильтры для определённых диапазонов дат, сотрудников или подразделений. Нужно убедится в том, что проблемный сотрудник включен и не забыт в нужном фильтре.
Обязательно нужно проверить какой порядок синхронизации включен:
Б24 – 1С или 1С –Б24
Для решения проблемы иногда бывает достаточно просто поменять порядок.
Последний аргумент, который может повлиять на проблему – это формат работы в общих настройках.
Связь с Битрикс24.CRM через push&pull сервер или Связь с Битрикс24.CRM http сервер
Если ваша 1С работает через публичный доступ, то нужно выбирать связь с Битрикс24.CRM http сервер.
ВАЖНО:
Иногда работа в онлайн режиме приводит к многочисленным сбоям и задержкам, в таком случае рекомендуется в настройках включить режим работы по расписанию, например, с задержкой каждые 30-60-90 секунд.
Большим подспорьем является возможность сохранения истории событий в логах, который активируется в режиме общих настроек в разделе отладок и хранится в журналах ошибок и синхронизации.
Больше деталей и новостей можно узнать на наших каналах:
- YouTube канал
- Телеграм канал
- Инстаграм канал
С уважением, Лаборатория автоматизации «LOG [IN] OFF»