Почему не снимается регистрация изменений при обмене между КА 2.4 и БП 3.0?

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

При настройке синхронизации данных между конфигурациями 1С, такими как Комплексная автоматизация 2.4 и Бухгалтерия предприятия 3.0, специалисты часто сталкиваются с ситуацией, когда данные успешно передаются в базу-приемник, но в базе-источнике они продолжают числиться как «измененные». Это приводит к бесконечной повторной выгрузке одних и тех же объектов, что не только нагружает систему, но и может затирать ручные правки в базе-получателе. Разберем подробно, почему так происходит и как правильно настроить механизм квитирования.

Механизм подтверждения получения данных (квитирование)

Для начала проанализируем, как работает типовой механизм синхронизации Enterprise Data. Многие пользователи ошибочно полагают, что объект должен сниматься с регистрации в момент успешного формирования файла выгрузки. Однако это не так. В 1С реализован механизм гарантированной доставки, основанный на номерах сообщений.

Рассмотрим логику работы узлов ПланыОбмена:

  1. База-отправитель (например, КА 2.4) фиксирует изменения объектов в специальной таблице регистрации.
  2. При запуске синхронизации формируется пакет данных, которому присваивается уникальный номер (например, №10).
  3. База-приемник (БП 3.0) загружает этот пакет. Если загрузка прошла успешно, она запоминает у себя: "Последнее принятое сообщение от КА — №10".
  4. Важный этап: Чтобы КА 2.4 узнала, что данные дошли, БП 3.0 должна отправить ответный файл. В заголовке этого файла будет указано: НомерПринятого = 10.
  5. Только получив этот ответ, база КА 2.4 удаляет записи из таблицы регистрации изменений для всех объектов, которые были отправлены в сообщении №10 и ранее.

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

Настройка двустороннего обмена для односторонней передачи данных

Разберем, как обмануть систему и заставить её снимать регистрацию, не передавая при этом лишних данных из бухгалтерии в комплексную автоматизацию. Проанализируем шаги настройки:

  1. В базе-получателе (БП 3.0) откройте настройки синхронизации данных.
  2. Перейдите в Параметры состава отправляемых данных.
  3. Установите фильтры так, чтобы никакие справочники и документы не подлежали отправке. Обычно для этого выбирается вариант «Не отправлять» или устанавливается дата запрета загрузки/выгрузки в глубоком будущем (например, 01.01.3000).
  4. Используйте «пустые» правила регистрации. Это гарантирует, что в файл обмена не попадет ничего, кроме технического заголовка.

Таким образом, сеанс обмена остается двусторонним. КА отправляет данные, БП их принимает и в ответ отправляет «пустой» технический пакет с подтверждением номера сообщения. Этого достаточно, чтобы ПланОбмена в КА очистил таблицу регистрации.

Проблема доступа к временным папкам на сервере

Часто при переходе с файловой версии базы на клиент-серверную обмен перестает работать корректно, хотя «Проверка подключения» проходит успешно. Выясним причину этой странности. В серверном варианте процесс обмена выполняется не под вашим пользователем Windows, а под учетной записью, от имени которой запущен Агент сервера 1С:Предприятие (по умолчанию это USR1CV8).

Если в журнале регистрации или при ручном запуске возникает ошибка доступа к пути типа C:\Windows\Temp или AppData\Local\Temp, выполните следующие действия:

  1. Откажитесь от использования системных папок на диске C:. Создайте выделенную папку для обмена на другом диске или сетевом ресурсе.
  2. Предоставьте пользователю USR1CV8 полные права (Чтение, Запись, Изменение) на эту папку.
  3. Если используется синхронизация через сетевой каталог, убедитесь, что путь указан в формате UNC (например, \\ServerName\ExchangeFolder), и сервер 1С имеет к нему доступ.

Блокировка регламентных заданий и фоновое выполнение

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

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

Использование привилегированного режима и отладка

В некоторых случаях, как отметил автор темы, помогает запуск службы 1С в привилегированном режиме или выполнение кода обмена внутри транзакции с пропуском проверок прав доступа. Однако это радикальный метод. Рассмотрим, как можно программно проверить состояние регистрации через встроенный язык:


// Пример проверки наличия регистрации изменений для конкретного узла
ПланыОбмена.ВыбратьИзменения(УзелОбмена, НомерСообщения);

// Если необходимо принудительно очистить регистрацию (использовать с осторожностью!)
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);

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

Резюме: контрольный список решений

Если у вас не снимается регистрация изменений, пройдите по этому списку:

Правильно настроенный двусторонний обмен — залог чистоты данных и стабильной работы синхронизации без образования «хвостов» в таблицах регистрации.

← На главную