При настройке синхронизации данных между конфигурациями 1С, такими как Комплексная автоматизация 2.4 и Бухгалтерия предприятия 3.0, специалисты часто сталкиваются с ситуацией, когда данные успешно передаются в базу-приемник, но в базе-источнике они продолжают числиться как «измененные». Это приводит к бесконечной повторной выгрузке одних и тех же объектов, что не только нагружает систему, но и может затирать ручные правки в базе-получателе. Разберем подробно, почему так происходит и как правильно настроить механизм квитирования.
Для начала проанализируем, как работает типовой механизм синхронизации Enterprise Data. Многие пользователи ошибочно полагают, что объект должен сниматься с регистрации в момент успешного формирования файла выгрузки. Однако это не так. В 1С реализован механизм гарантированной доставки, основанный на номерах сообщений.
Рассмотрим логику работы узлов ПланыОбмена:
НомерПринятого = 10.Следовательно, если вы настраиваете «строго односторонний обмен», физически запрещая прием данных из БП в КА, механизм подтверждения ломается. Регистрация не будет сниматься никогда, так как источник не получает «квитанцию» о доставке.
Разберем, как обмануть систему и заставить её снимать регистрацию, не передавая при этом лишних данных из бухгалтерии в комплексную автоматизацию. Проанализируем шаги настройки:
Таким образом, сеанс обмена остается двусторонним. КА отправляет данные, БП их принимает и в ответ отправляет «пустой» технический пакет с подтверждением номера сообщения. Этого достаточно, чтобы ПланОбмена в КА очистил таблицу регистрации.
Часто при переходе с файловой версии базы на клиент-серверную обмен перестает работать корректно, хотя «Проверка подключения» проходит успешно. Выясним причину этой странности. В серверном варианте процесс обмена выполняется не под вашим пользователем Windows, а под учетной записью, от имени которой запущен Агент сервера 1С:Предприятие (по умолчанию это USR1CV8).
Если в журнале регистрации или при ручном запуске возникает ошибка доступа к пути типа C:\Windows\Temp или AppData\Local\Temp, выполните следующие действия:
C:. Создайте выделенную папку для обмена на другом диске или сетевом ресурсе.USR1CV8 полные права (Чтение, Запись, Изменение) на эту папку.\\ServerName\ExchangeFolder), и сервер 1С имеет к нему доступ.Синхронизация в современных конфигурациях чаще всего выполняется в фоновом режиме. Если вы заметили, что при нажатии кнопки «Синхронизировать» вручную всё проходит успешно, а по расписанию регистрация не снимается, проанализируйте состояние регламентных заданий.
Проверьте консоль администрирования кластера 1С. Убедитесь, что для информационной базы не установлен флаг «Блокировка регламентных заданий». При установленной блокировке фоновые процессы обмена просто не запускаются, и база-источник не может получить ответные пакеты от приемника в автоматическом режиме.
В некоторых случаях, как отметил автор темы, помогает запуск службы 1С в привилегированном режиме или выполнение кода обмена внутри транзакции с пропуском проверок прав доступа. Однако это радикальный метод. Рассмотрим, как можно программно проверить состояние регистрации через встроенный язык:
// Пример проверки наличия регистрации изменений для конкретного узла
ПланыОбмена.ВыбратьИзменения(УзелОбмена, НомерСообщения);
// Если необходимо принудительно очистить регистрацию (использовать с осторожностью!)
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);
В типовых решениях для ручного управления регистрацией лучше использовать стандартную обработку «Регистрация изменений для обмена». В ней можно наглядно увидеть «Номер отправленного» и «Номер принятого» сообщения. Если «Номер принятого» значительно отстает от «Номера отправленного», значит, подтверждения не доходят.
Если у вас не снимается регистрация изменений, пройдите по этому списку:
Temp).Enterprise Data в обеих базах совпадают или совместимы.Правильно настроенный двусторонний обмен — залог чистоты данных и стабильной работы синхронизации без образования «хвостов» в таблицах регистрации.