Почему не происходит синхронизация в Бит.Фитнес и как исправить ошибку «Сообщение обмена было принято ранее»?

Системный администратор 1С v8.3 (Управляемые формы) Сфера услуг, туризм и социальный сектор
← На главную

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

Разберем механизм работы номеров сообщений

Для начала проанализируем, как 1С понимает, какой файл обмена является «новым», а какой — «старым». В каждом узле плана обмена хранятся два ключевых счетчика:

  1. Номер отправленного сообщения: это порядковый номер, который будет присвоен следующему исходящему файлу XML.
  2. Номер принятого сообщения: это номер последнего пакета, который база успешно загрузила из другой стороны.

Когда База А отправляет файл Базе Б, она записывает в него свой номер. База Б, принимая файл, сравнивает номер в файле со своим значением Номер принятого сообщения. Если номер в файле меньше или равен уже принятому, система выдает ошибку. Это защитный механизм, предотвращающий повторную загрузку одних и тех же данных, что могло бы привести к конфликтам или избыточной нагрузке.

Выясним причины возникновения рассинхронизации

Рассмотрим подробнее ситуации, при которых счетчики в базах начинают «противоречить» друг другу:

Корректировка номеров сообщений через регистрацию изменений

Если вы столкнулись с ошибкой «Сообщение обмена было принято ранее», нам необходимо синхронизировать счетчики вручную. Для этого воспользуемся встроенной обработкой Регистрация изменений для обмена.

Рассмотрим по шагам процесс настройки для двух баз — Базы А и Базы Б:

  1. Откроем в обеих базах обработку «Регистрация изменений для обмена».
  2. Выберем нужный узел обмена (филиал или центральную базу).
  3. Нажмем кнопку изменения номеров сообщений (обычно это иконка с карандашом или кнопка «Изменить» в поле номеров).
  4. Применим следующую логику соответствия:
    — Номер отправленного в Базе А должен быть строго больше Номера принятого в Базе Б.
    — Номер отправленного в Базе Б должен быть строго больше Номера принятого в Базе А.

Проанализируем пример. Если в Базе А Номер отправленного равен 150, то в Базе Б Номер принятого должен стоять 149. Тогда следующий файл от Базы А (с номером 150) будет успешно принят Базой Б.

Проанализируем ситуацию с транспортным каталогом

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

Посмотрим, на что нужно обратить внимание при использовании Dropbox или других облаков:

Безопасность данных: риск дублей и потерь

Часто возникает вопрос: не потеряем ли мы данные, если обнулим номера? Выясним это. В современных версиях Бит.Фитнес синхронизация объектов (клиентов, карт, документов) происходит по внутреннему идентификатору GUID (Уникальный Идентификатор).

Важные моменты:

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


// Пример логики программной регистрации изменений (для ознакомления)
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Тип("ДокументСсылка.Бит_Посещение"));

Проверка XML-файла сообщения

Если интерфейс программы не дает полной картины, мы можем заглянуть «под капот» самого файла обмена. Откроем файл Message_XXX_YYY.xml любым текстовым редактором (например, Notepad++) и изучим заголовок:


<v8msg:Message>
    <v8msg:Header>
        <v8msg:ExchangePlan>Полный</v8msg:ExchangePlan>
        <v8msg:To>ФЛ</v8msg:To>
        <v8msg:From>ЦБ</v8msg:From>
        <v8msg:MessageNo>150</v8msg:MessageNo>
        <v8msg:ConfirmationNo>145</v8msg:ConfirmationNo>
    </v8msg:Header>
</v8msg:Message>

Здесь MessageNo — это номер текущего сообщения, а ConfirmationNo — номер последнего сообщения, которое эта база приняла от партнера. Сверив эти цифры со значениями в 1С, вы точно поймете, в какой базе счетчик сбился.

Итоговые рекомендации

  1. Перед любыми манипуляциями с планами обмена обязательно делайте резервные копии обеих баз.
  2. Если обмен через Dropbox нестабилен, рассмотрите вариант перехода на FTP-сервер или использование Яндекс.Диска, который иногда ведет себя корректнее с блокировками файлов в ОС Windows.
  3. Если после исправления номеров синхронизация пошла, но часть данных не появилась — используйте ручную регистрацию объектов в плане обмена.

Следуя этой инструкции, мы восстановим стабильный обмен данными в Бит.Фитнес и обеспечим актуальность информации во всех филиалах сети.

← На главную