Как правильно настроить снятие регистрации изменений и выгрузку нулевых остатков при обмене 1С:УТ 11 с 1С-Битрикс

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При интеграции 1С:Управление торговлей 11 и 1С-Битрикс специалисты часто сталкиваются с ситуацией, когда стандартные механизмы планов обмена 1С ведут себя не совсем привычно. Основные вопросы обычно касаются того, как очищается очередь изменений, почему сайт «не видит» обнуление остатков и где искать техническую информацию о результатах обмена. Рассмотрим эти процессы детально, опираясь на логику работы модуля обмена версий 7.х.

Механизм регистрации и снятия изменений в модуле Битрикс

Для начала разберем, как именно 1С понимает, какие данные нужно отправить на сайт. В типовых обменах между базами 1С используются номера сообщений (НомерОтправленного и НомерПринятого). Однако модуль обмена с Битрикс использует более сложную надстройку. Рассмотрим этот алгоритм по шагам.

Проанализируем работу системы при использовании «Пакетов выгрузки»:

  1. При запуске обмена модуль обращается к плану обмена и считывает все зарегистрированные объекты (номенклатуру, цены, остатки).
  2. Эти данные не просто передаются в XML, а помещаются во внутреннюю таблицу или специальный регистр сведений Пакеты выгрузки.
  3. Снятие регистрации с узла плана обмена в 1С происходит в два этапа. Сначала объекты помечаются как «находящиеся в процессе передачи», а окончательная очистка регистрации происходит только после того, как сервер сайта вернет строку success в ответ на POST-запрос.

Выясним причину, по которой регистрация может «зависать». Если во время передачи 40 000 позиций произошел сетевой сбой или скрипт на стороне сайта упал по таймауту, 1С не получит заветное подтверждение. В этом случае при следующем сеансе обмена все те же 40 000 позиций снова будут сформированы в пакет. Именно поэтому важно следить за стабильностью HTTP-соединения.

Где найти ответный файл от сайта и как его прочитать

Многие администраторы ищут XML-файл ответа от Битрикса, аналогичный файлам обмена. Однако Битрикс не генерирует ответный файл в формате XML. Обмен происходит по протоколу HTTP, и сайт отвечает короткими текстовыми строками прямо в теле HTTP-ответа.

Чтобы детально проанализировать, что именно «отвечает» Битрикс, выполним следующие действия в интерфейсе 1С:

  1. Откроем настройки узла обмена с сайтом.
  2. Перейдем на вкладку Дополнительно или Логирование (название зависит от конкретной версии модуля 7.х).
  3. Установим флаг Сохранять файлы обмена на диске и укажем путь к папке логов.
  4. Включим Детальный лог обмена.

После завершения обмена в указанной папке мы найдем не только файлы import.xml и offers.xml, но и текстовые файлы, содержащие ответ сервера. Рассмотрим примеры возможных ответов:

Проблема «исчезающих» остатков: почему товар остается на сайте

Разберем классическую ситуацию, описанную в теме: в настройках обмена в 1С установлен фильтр «Остаток > 0». Логика пользователя понятна — не хочется выгружать лишнее. Но это приводит к критической ошибке синхронизации. Проанализируем, почему так происходит.

Когда товар есть в наличии (например, 5 штук), он попадает под фильтр, выгружается на сайт, и сайт отображает 5 штук. Как только в 1С товар продается и его остаток становится равным 0, происходит следующее:

  1. Объект «Номенклатура» регистрируется к обмену, так как остаток изменился.
  2. Модуль обмена начинает формировать пакет данных.
  3. Модуль применяет установленный вами фильтр Остаток > 0.
  4. Так как остаток теперь равен 0, товар не проходит фильтрацию и просто не включается в XML-файл.
  5. Сайт не получает никакой информации об этом товаре. Раз информации нет, Битрикс считает, что ничего не изменилось, и продолжает показывать старый остаток (5 штук).

Решение проблемы:

Никогда не используйте фильтр по остатку в общих настройках компоновки данных (СКД) модуля обмена. Вместо этого разберем правильный алгоритм настройки:

  1. Удалите фильтр Остаток > 0 из общих отборов.
  2. В настройках модуля на вкладке Выгрузка товаров найдите раздел настройки остатков.
  3. Используйте опцию Выгружать все товары или убедитесь, что в схему выгрузки попадают товары с нулевым остатком.
  4. В этом случае 1С передаст в файле offers.xml тег <Количество>0</Количество>. Битрикс, получив этот ноль, корректно обновит информацию в интернет-магазине.

Регистрация изменений при полной выгрузке

Рассмотрим вопрос о том, снимается ли регистрация при включении режима «Полная выгрузка». В модуле Битрикса версии 7.0.1.13 этот механизм работает следующим образом:

При активации полной выгрузки 1С игнорирует таблицу регистраций и просто выбирает все товары, подходящие под фильтры. Однако, если обмен завершился успешно (получен ответ success), модуль автоматически очищает всю регистрацию изменений для данного узла. Это логично: раз мы выгрузили абсолютно всё, то состояние сайта и 1С теперь идентично, и хранить старые «хвосты» регистраций нет смысла.

Если же вы хотите принудительно очистить регистрацию программно (например, при написании своего обработчика), можно использовать следующий подход через объект ПланыОбмена. Рассмотрим пример кода:


// Очистка регистрации для конкретного узла
УзелОбмена = ПланыОбмена.Битрикс.НайтиПоКоду("SITE_1");
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);

Но помните, что при использовании модуля Битрикс лучше доверять штатному механизму завершения обмена, чтобы не нарушить целостность пакетов выгрузки.

Оптимизация: как сократить время обмена с 5 часов до нескольких минут

В ситуации пользователя полная выгрузка картинок занимает 5 часов. Это говорит о том, что настройки оптимизации не задействованы. Посмотрим, как можно ускорить этот процесс в современных версиях модуля.

В модуле 7.х реализован механизм хэширования файлов. Разберем, как его настроить:

Также проанализируем настройку Размер пакета. Для больших каталогов (40 000+ позиций) не рекомендуется выгружать всё одним огромным файлом. Установите размер пакета (например, по 500 товаров). Это позволит 1С снимать регистрацию изменений порциями. Если на 39-й тысяче товаров произойдет обрыв, первые 38 500 товаров уже будут считаться успешно выгруженными и их регистрация будет снята.

Подводя итог: корректная работа обмена 1С-Битрикс строится на понимании того, что это не просто «выгрузка файла», а полноценный диалог между двумя системами. Убирайте лишние фильтры в СКД, следите за логами ответов сервера и используйте встроенные механизмы оптимизации картинок — это залог актуальных остатков и быстрого обмена.

← На главную