К статье
Практический материал

Администрирование · 11 мин

Как изменить номер принятого сообщения в 1С

Как изменить номер принятого сообщения в 1С при обмене данными: где хранится номер, как сбросить через обработку, когда это нужно и какие риски.

Номер принятого сообщения — это служебный счётчик, который 1С ведёт для каждого узла плана обмена. Он показывает, какое по счёту сообщение обмена было успешно загружено из другой базы. Если счётчики в двух базах разошлись, обмен останавливается с ошибкой вида «Номер сообщения меньше или равен номеру ранее принятого сообщения», и данные между базами перестают синхронизироваться.

Ситуация типична для обменов через планы обмена: «Управление торговлей — Бухгалтерия», синхронизация распределённых баз, обмен с сайтом или мобильным приложением. Рассинхронизация возникает после восстановления базы из копии, ручной правки регистрации изменений, неудачной загрузки файла сообщения или повторной выгрузки старого пакета.

Исправить проблему можно двумя путями: изменить номер принятого сообщения в текущей базе или номер отправленного сообщения в базе-отправителе. Ниже разобраны оба способа, типовые обработки, риски и способы проверки результата.

Что такое номер принятого сообщения и где он хранится

При обмене данными через планы обмена каждый узел хранит два счётчика: номер отправленного сообщения и номер принятого сообщения. Отправленный — это номер последнего пакета, который текущая база выгрузила для данного узла. Принятый — номер последнего пакета, который текущая база успешно загрузила от этого узла.

Механизм работает как квитирование: база-получатель при загрузке сообщения с номером N запоминает его, а при следующей выгрузке квитанции сообщает отправителю, что пакет N принят. Отправитель после этого очищает зарегистрированные изменения с номером N и меньше. Если в базу попадает сообщение с номером, меньшим или равным уже принятому, 1С отклоняет его как повторный.

Физически оба номера — свойства узла плана обмена. В пользовательском интерфейсе типовых конфигураций они не редактируются напрямую: в карточке узла вы видите только настройки синхронизации. Менять счётчики приходится либо через специальную обработку, либо программным кодом.

Когда требуется менять номер принятого сообщения

Главный признак — ошибка при загрузке: «Номер сообщения меньше или равен номеру ранее принятого сообщения» или аналогичное сообщение в журнале регистрации и в форме синхронизации данных. Обмен при этом блокируется полностью: новые документы и справочники не переносятся ни в одну сторону.

Типичные ситуации, приводящие к расхождению счётчиков:

  • одна из баз восстановлена из резервной копии, сделанной до последнего обмена;
  • файл сообщения загружался дважды или загружался устаревший файл;
  • в настройках синхронизации выполнялась команда «Изменить номера сообщений» только в одной базе;
  • узел обмена пересоздавался, а во второй базе остался старый узел с прежними счётчиками.

Прежде чем что-то менять, выясните, какие номера сейчас записаны в обеих базах. Значения можно посмотреть в форме настройки синхронизации (в типовых конфигурациях есть команда показа номеров сообщений) или через обработку регистрации изменений. Без этой диагностики правка счётчика — вслепую.

Ошибка «номер меньше принятого»Загружается старое или повторное сообщение

Сравнить номер в файле сообщения и номер принятого в узле

Обмен шёл, потом базу восстановили из копииСчётчики откатились назад

Узнать номер отправленного в другой базе

Узел пересоздавалиСчётчики обнулились

Проверить, тот ли это узел по коду и префиксу

Способ 1: изменить номер через форму настройки синхронизации

В типовых конфигурациях на БСП (УТ 11, КА 2, ERP, БП 3.0 и другие) есть штатный путь. Откройте раздел администрирования, перейдите в «Синхронизация данных», выберите нужную настройку обмена. В меню «Ещё» или в командах формы настройки найдите пункт «Изменить номера отправленного и принятого сообщений» — название может незначительно отличаться между версиями библиотеки.

В открывшейся форме укажите новый номер принятого сообщения. Значение должно соответствовать номеру сообщения, которое вы реально собираетесь загрузить: если в базе-отправителе следующий номер отправленного сообщения равен, например, 15, то принятый в текущей базе должен быть 14, чтобы сообщение №15 было принято.

После сохранения выполните синхронизацию заново. Если ошибка ушла и данные загрузились — счётчики выровнялись. Если появилась другая ошибка (например, о расхождении версий формата), проблема не в счётчиках, и менять их дальше бессмысленно.

Порядок действий через интерфейс
  1. 1
    Сделайте резервную копию базы
  2. 2
    Откройте Администрирование → Синхронизация данных → нужная настройка
  3. 3
    Найдите команду изменения номеров сообщений в меню Ещё
  4. 4
    Установите номер принятого на единицу меньше номера ожидаемого сообщения
  5. 5
    Запустите синхронизацию и проверьте журнал регистрации

Способ 2: изменить номер программно

Если штатной команды нет (самописная конфигурация, старая версия) или нужно массовое исправление, счётчик меняется кодом. Логика проста: получить узел плана обмена по ссылке, установить свойство и записать объект.

bsl
Узел = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерия.НайтиПоКоду("000000002");
УзелОбъект = Узел.ПолучитьОбъект();
УзелОбъект.НомерПринятого = 14;
УзелОбъект.Записать();

Обратите внимание: менять нужно объект именно того узла, который соответствует базе-отправителю. В распределённых базах с несколькими узлами легко ошибиться. Проверяйте код узла и префикс — они должны совпадать с настройками второй базы.

Также в сети распространены универсальные обработки «Изменение номеров сообщений обмена», которые показывают список всех планов обмена и узлов с текущими счётчиками и позволяют править их интерактивно. Такая обработка удобна для диагностики, но использовать её нужно с тем же пониманием, что и ручной код: вы правите служебные данные напрямую.

Альтернатива: сброс через номер отправленного сообщения

Иногда удобнее править не принятый номер в текущей базе, а отправленный — в базе-отправителе. Если, например, в приёмнике принято сообщение №20, а отправитель после восстановления из копии снова выгружает сообщение №18, можно в отправителе установить номер отправленного равным 20. Тогда следующее сообщение получит номер 21 и будет нормально загружено.

Выбор стороны зависит от того, где восстановить счётчик проще и безопаснее. Правило одно: номера должны стыковаться — следующее отправленное сообщение должно быть ровно на единицу больше принятого в базе-получателе.

Маршрут решения

Как выбрать действие

В текущей базе принятый номер больше, чем отправленный в другой базеУвеличьте номер отправленного в базе-отправителе до принятого
Загружается старый файл сообщенияНе меняйте счётчики — получите из отправителя свежую выгрузку
Узел пересоздан и счётчики обнуленыУстановите принятый номер равным последнему отправленному в другой базе
Обе базы восстановлены из копий разного времениСверьте номера в обеих базах и выровняйте пару счётчиков с двух сторон

Проверка результата и типичные ошибки

После правки выполните полный цикл обмена: выгрузку из одной базы, загрузку в другую и обратную выгрузку квитанции. Признак успеха — отсутствие ошибок в журнале регистрации и в форме синхронизации, а также фактический перенос тестового документа.

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

Типичные ошибки
01
Меняют счётчик у неправильного узла — ошибка остаётся, а в соседнем обмене появляется рассинхронизация
02
Ставят номер «с запасом» — отправитель удаляет незагруженные изменения, данные теряются
03
Правят только одну сторону при расхождении обоих счётчиков — обмен снова встаёт через одну итерацию
04
Загружают старый файл сообщения вместо получения свежей выгрузки — правка счётчиков не помогает
Контрольные точки

Как проверить результат

Журнал регистрации после синхронизации
Норма

Нет ошибок о номерах сообщений

Тревожный признак

Ошибка о номере сохраняется или появилась новая

Номера в обеих базах
Норма

Следующий отправленный = принятый + 1

Тревожный признак

Разрыв больше единицы или обратное соотношение

Тестовый документ
Норма

Переносится в обе стороны

Тревожный признак

Документ не приходит или приходит повторно

Ограничения и меры предосторожности

Правка счётчиков — аварийная операция, а не штатный режим. Если рассинхронизация повторяется регулярно, ищите причину: некорректное восстановление из копий, ручной перенос файлов обмена, параллельные настройки синхронизации на одну и ту же пару баз.

Учтите ограничения: для обмена через веб-сервисы и некоторые форматы (EnterpriseData, универсальный формат) механизм счётчиков тот же, но доступ к настройкам может отличаться. В обменах с сайтом (CommerceML) счётчики сообщений обычно не используются — там эта инструкция неприменима.

Всегда делайте резервную копию обеих баз перед изменением номеров. Если в базах накопилась значимая непереданная информация, сначала выгрузите её в файл штатными средствами — это страховка на случай ошибочной очистки регистрации изменений.

Итог

Что важно запомнить

Номер принятого сообщения меняется в узле плана обмена через форму настройки синхронизации или программно. Ключевое условие — следующий номер отправленного сообщения в базе-отправителе должен быть на единицу больше принятого. Перед правкой — резервная копия и сверка номеров в обеих базах.

Частые вопросы

Где посмотреть текущий номер принятого сообщения?

В типовых конфигурациях — в форме настройки синхронизации данных, команда показа или изменения номеров сообщений. Универсальный способ — обработка регистрации изменений для обмена данными или запрос к свойствам узла плана обмена через консоль кода.

Можно ли просто обнулить оба счётчика?

Можно, но только если одновременно очистить регистрацию изменений и выполнить первичную выгрузку заново. Обнуление без этих шагов приведёт к тому, что старые сообщения будут отклоняться, а новые изменения не зарегистрируются корректно.

Почему после исправления номера ошибка появилась снова?

Чаще всего загружается один и тот же устаревший файл сообщения. Удалите старые файлы обмена и запросите из базы-отправителя свежую выгрузку. Вторая причина — расхождение счётчиков в обратном направлении, которое тоже нужно выровнять.

Чем грозит завышение номера принятого сообщения?

База-отправитель получит квитанцию о приёме сообщений, которые фактически не загружались, и удалит соответствующие зарегистрированные изменения. Эти данные без повторной регистрации в другую базу не попадут.

Работает ли этот способ для обмена УТ — БП через универсальный формат?

Да, механизм квитирования через номера сообщений в планах обмена одинаков независимо от формата выгрузки. Меняется только интерфейс доступа к настройке: ищите команду изменения номеров в форме настройки синхронизации вашей версии конфигурации.

Что делать, если узел обмена был удалён и создан заново?

Новый узел имеет нулевые счётчики, а в другой базе остались старые номера. Либо установите в новом узле принятый номер, равный последнему отправленному во второй базе, либо выполните настройку синхронизации заново с созданием начального образа — это надёжнее.