Діагностика та усунення помилок обміну 1С та 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Діагностика та усунення помилок обміну 1С та 1С-Бітрікс
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Діагностика та усунення помилок обміну 1С і 1С-Бітрікс

Обмін зламався — товари не оновлюються, замовлення не потрапляють у 1С. Стандартна ситуація для будь-якого магазину, що працює довше півроку. Проблема в тому, що повідомлення про помилки в CommerceML-обміні нечіткі, а причин може бути десятки. Нижче — систематичний підхід до діагностики.

Перша точка діагностики: лог обміну в Бітрікс

Магазин → Журнал обміну з 1С — перше місце для перевірки:

  • Зелений рядок — обмін пройшов успішно
  • Червоний рядок — помилка, розкрити для деталей
  • Відсутність записів — обмін не запускався (проблема в розкладі або авторизації)

Типові повідомлення та їх значення:

Повідомлення Причина
Невірний логін або пароль Користувач обміну заблокований або змінився пароль
Невірна відповідь сервера HTTP 500 на 1c_exchange.php, дивитися PHP error_log
Не знайдено властивість PROP_XXX Властивість видалено на сайті, але 1С все ще її передає
Перевищено ліміт часу Таймаут PHP при розборі великого XML
Помилка розбору XML Пошкоджений файл або неправильне кодування

Діагностика через прямий запит

Перевірити роботу endpoint вручну через curl або Postman:

# Крок 1: авторизація
curl -c cookies.txt \
  "https://myshop.ua/bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth" \
  -u "login:password"

# Крок 2: ініціалізація
curl -b cookies.txt \
  "https://myshop.ua/bitrix/admin/1c_exchange.php?type=catalog&mode=init"

Відповідь success на перший запит — авторизація працює. Відповідь failure — перевірити права користувача та статус облікового запису.

Помилки типу «товари задвоїлися»

Найнеприємніша ситуація: після обміну кількість товарів в інфоблоці подвоїлася. Причина — змінилися GUID-ідентифікатори товарів у 1С (перенос бази, реструктуризація), Бітрікс не знайшов наявні елементи за ID і створив нові.

Діагностика:

SELECT XML_ID, COUNT(*) as cnt
FROM b_iblock_element
WHERE IBLOCK_ID = :iblock_id
GROUP BY XML_ID
HAVING cnt > 1;

Дублі: записи з однаковим XML_ID або схожим артикулом, різним ID.

Усунення:

  1. Знайти відповідність старих і нових GUID через артикул або штрих-код
  2. Оновити XML_ID у наявних елементів на нові GUID із 1С
  3. Деактивувати (не видаляти) дублі
  4. Запустити обмін повторно — тепер 1С знайде елементи за коректним XML_ID

Помилки при обміні замовленнями

Замовлення не потрапляють у 1С. Перевірити:

  1. У налаштуваннях обміну на сайті увімкнена опція «Вивантажувати замовлення»
  2. Статус замовлення включено до списку статусів для вивантаження
  3. Користувач обміну має доступ до модуля sale

1С створює замовлення з «невідомою номенклатурою». Товар у замовленні не має властивості CML2_LINK з GUID із 1С. Таке буває для товарів, створених вручну на сайті. Рішення — вручну заповнити CML2_LINK або виключити такі товари з передачі в 1С.

Проблеми з кодуванням

1С у старих конфігураціях може вивантажувати Windows-1251. Ознака — кракозябри в назвах товарів після імпорту.

// В обробнику події перед імпортом
if (!mb_detect_encoding($xmlContent, 'UTF-8', true)) {
    $xmlContent = mb_convert_encoding($xmlContent, 'UTF-8', 'Windows-1251');
}

У нових версіях УТ проблема усунена — вивантаження завжди в UTF-8.

Кейс: «зниклі» товари після планових робіт

Хостинг-провайдер переніс базу даних на новий сервер з іншою версією MySQL. Після переносу — обмін пройшов, але 12% товарів «зникли» з сайту (статус ACTIVE = N). Причина: при переносі кілька тисяч значень XML_ID отримали зайві пробіли через різницю в обробці полів CHAR і VARCHAR. Бітрікс не знайшов елементи за XML_ID із пробілом — створив нові, старі деактивував.

Діагностика показала проблему за 15 хвилин (SELECT * FROM b_iblock_element WHERE XML_ID LIKE '% %'). Виправлення: UPDATE b_iblock_element SET XML_ID = TRIM(XML_ID) — і повторний запуск обміну відновив усі товари.

Превентивний моніторинг

Налаштувати автоматичну перевірку після кожного обміну:

// Підозрілі ознаки — сигнал для сповіщення
$checks = [
    'deactivated_count' => 'SELECT COUNT(*) FROM b_iblock_element WHERE ACTIVE = "N" AND MODIFIED_BY = 1', // змінено агентом обміну
    'duplicate_xml_id'  => 'SELECT COUNT(*) FROM (SELECT XML_ID FROM b_iblock_element GROUP BY XML_ID HAVING COUNT(*) > 1) t',
    'last_exchange'     => 'SELECT MAX(TIMESTAMP_X) FROM b_iblock_element WHERE IBLOCK_ID = ' . CATALOG_IBLOCK_ID,
];

Якщо кількість деактивованих товарів за один сеанс обміну перевищує поріг (наприклад, 100 штук) — надіслати алерт і заблокувати наступний сеанс обміну до ручної перевірки.

Терміни діагностики та усунення

Тип проблеми Термін усунення
Помилка авторизації / таймаут 1–2 години
Задвоєння товарів 4–8 годин
Невідповідність кодувань 1–3 години
Втрата замовлень при обміні 2–4 години
Системні проблеми після переносу БД 1–2 дні