Налаштування обміну 1С:Управління виробничим підприємством (УВП) і 1С-Бітрікс
УВП — конфігурація, яку дедалі рідше впроваджують «з нуля», але ще тисячі підприємств її експлуатують. Її особливість у тому, що механізм обміну з сайтом тут успадкований від старих версій платформи: CommerceML 2.05 замість 2.08, застарілий протокол, обмежена підтримка характеристик. Це означає, що «просто підключити» за стандартом не вийде — потрібні доопрацювання.
Технічний контекст УВП
УВП працює на платформі 1С 8.2/8.3, конфігурація підтримується в режимі «сумісність». Вбудований механізм обміну з сайтом (розділ Управління торгівлею → Обмін з сайтом) реалізує базовий CommerceML: вивантаження номенклатури, цін, залишків; приймання замовлень.
Що працює погано:
- Характеристики номенклатури вивантажуються нестабільно на великих каталогах (витік пам'яті в 8.2)
- Немає підтримки zip-архівування при вивантаженні (великі XML)
- Немає інкрементального обміну «з коробки» — тільки повний
- Застарілий формат дат і кодувань у деяких збірках
Доопрацювання інкрементального обміну
Найчастіше завдання при інтеграції УВП з Бітрікс — зробити частковий обмін (тільки змінені записи), щоб не гнати повний каталог кожні 30 хвилин.
У УВП це вирішується через зовнішню обробку. Створюємо обробку «ВивантаженняЗміненоїНоменклатури», яка:
- Читає дату останнього успішного обміну з регістру відомостей
- Вибирає номенклатуру, змінену після цієї дати
- Формує XML тільки для змінених позицій
- Викликає стандартний механізм відправки через HTTP
Дата останнього обміну зберігається в регістрі після успішної відповіді сервера. При помилці — не оновлюється, наступний запуск повторює передачу змін.
Проблема з пам'яттю при повному обміні
УВП на платформі 8.2 має відому проблему: при формуванні великого XML (від 50 тис. позицій) процес 1С зростає по пам'яті до кількох гігабайт і може впасти.
Рішення:
- Пакетне вивантаження: розбити повний каталог на пакети по 5000 позицій, надсилати послідовно. На стороні Бітрікс увімкнути режим «сесійного» завантаження (прапор
mode=fileу протоколі обміну) - Перехід на платформу 8.3: у 8.3 управління пам'яттю краще, проблема менш виражена
- Фільтрація на рівні запиту: вивантажувати тільки «Для сайту» (ввести реквізит-прапор у номенклатуру)
Налаштування на стороні Бітрікс для УВП
При роботі з УВП важливо налаштувати таймаут у Бітрікс:
У /bitrix/php_interface/dbconn.php або через .htaccess:
php_value max_execution_time 600
php_value memory_limit 1024M
Для cron-обробки обміну (якщо використовується pull-режим):
# /etc/cron.d/bitrix-1c-exchange
*/30 * * * * www-data php -c /etc/php/cli-1c.ini /var/www/bitrix/import.php
Окремий php.ini для cron (cli-1c.ini) зі збільшеними лімітами — правильна практика, яка не зачіпає веб-сервер.
Двосторонній обмін: замовлення з Бітрікс у УВП
Замовлення потрапляють у УВП як «Замовлення покупця». Часта проблема: у УВП замовлення покупця вимагає обов'язкового зазначення договору (контракту) з контрагентом. При створенні нового контрагента (нового покупця з сайту) договору немає — і замовлення створюється з помилкою або не проводиться.
Рішення: в обробці імпорту замовлень у УВП додаємо автоматичне створення договору за замовчуванням для нових контрагентів. Шаблон договору (вид, валюта, організація) — фіксований для всіх замовлень з сайту.
Кейс: виробниче підприємство, змішаний каталог
Виробник металоконструкцій: каталог із 8000 виробів, у кожного — технічні характеристики (ГОСТ, марка сталі, габарити). Частина продукції — під замовлення (виготовляється), частина — зі складу.
Завдання на сайті: показувати ознаку «під замовлення / в наявності» з актуальними залишками для складської продукції.
Реалізація: у номенклатурі УВП додано реквізит «Тип продажу» (Довідник). При вивантаженні він передається в ДодатковіРеквізити. На стороні Бітрікс — властивість «Тип продажу» керує відображенням кнопки «До кошика» / «Запитати вартість».
Залишки вивантажуються тільки для складської продукції (фільтр за «Типом продажу»). Для «під замовлення» залишок завжди = 999 (умовно «в наявності для замовлення»).
Терміни та складність
Налаштування обміну УВП ↔ Бітрікс: 4–10 робочих днів. Складніше, ніж з УТ/КА через застарілий протокол. Якщо УВП планується до заміни на ERP — рекомендую вести інтеграцію так, щоб на стороні Бітрікс логіка не прив'язувалась до специфіки УВП: XML_ID і структура каталогу повинні зберегтися при міграції.







