Иногда пользователям требуется не просто обмен, а полноценный перенос данных из ЗУП 3.1 в чистую ЗУП 3.1 (поможет универсальный перенос данных через XML или COM), но в этой статье мы сосредоточимся на штатной синхронизации с бухгалтерией.
При работе со связкой конфигураций 1С:Зарплата и управление персоналом 3.1 и 1С:Бухгалтерия предприятия 3.0 пользователи и администраторы часто сталкиваются с ситуацией, когда стандартная синхронизация данных «пропускает» нужные документы — в этом поможет исправление ошибок синхронизации ЗУП и БП. Попытка исправить это через ручную регистрацию объектов в узле обмена часто заканчивается системным сообщением: «Зарегистрировано 0 изменений из N». Рассмотрим подробно, почему это происходит и как принудительно заставить программу выгрузить данные.
В современных конфигурациях 1С, построенных на базе Библиотеки стандартных подсистем (БСП), механизм обмена данными работает не просто на уровне таблиц, а через сложные алгоритмы — Правила регистрации объектов (ПРО). Когда мы пытаемся зарегистрировать документ для выгрузки, система автоматически проверяет, соответствует ли этот объект условиям, заданным в настройках синхронизации.
Проанализируем основные факторы, которые блокируют регистрацию:
Это самый эффективный способ, который помогает в большинстве случаев, описанных пользователями. Суть метода заключается в том, чтобы временно отключить проверку соответствия объекта правилам миграции. Выясним, как это сделать по шагам:
ВедомостьНаВыплатуЗарплатыВБанк).После снятия данной настройки программа перестанет анализировать дату документа и фильтры по организации, позволяя принудительно добавить объект в очередь на выгрузку. Рассмотрим ситуацию: после снятия флажка сообщение изменится на «Зарегистрировано 7 изменений из 7». Теперь при следующем сеансе синхронизации эти данные гарантированно уйдут в базу-приемник — для контроля выгрузки пригодится сервис автоматического сравнения данных между базами 1С.
Для некоторых документов, таких как ОтражениеЗарплатыВБухучете, существует дополнительный механизм защиты. Проанализируем, как работает этот «замок».
Этот документ является двусторонним. Когда данные передаются из ЗУП в БП, бухгалтер в базе Бухгалтерии проверяет проводки и устанавливает флаг Отражено в учете. При следующей обратной синхронизации этот флаг передается в ЗУП. С этого момента документ в ЗУП считается «завершенным». Если вы внесете изменения в документ в ЗУП и попытаетесь его перегрузить, система может блокировать изменения, так как приоритет имеет статус «Отражено в учете» из бухгалтерии.
Чтобы успешно перегрузить такой документ, выполним следующие действия:
Посмотрим на ситуацию, когда ручная регистрация вроде бы прошла успешно, но данные все равно не попадают в файл обмена. Часто причиной является поле ДатаНачалаИспользованияСинхронизации в самом узле обмена.
Если вы решили перегрузить данные за прошлые периоды, недостаточно просто зарегистрировать объекты. Нужно зайти в Параметры подключения синхронизации и убедиться, что дата начала выгрузки данных установлена ранее, чем дата самого старого из регистрируемых документов. В противном случае механизм выгрузки (уже после регистрации) может отсечь эти записи как «архивные».
Иногда проблема кроется в некорректных записях в служебных регистрах — здесь пригодится диагностика и очистка битых ссылок в регистрах. Рассмотрим, какие объекты отвечают за связку данных (для проверки результата может потребоваться сверка документов через http-сервис):
СоответствияОбъектовИнформационныхБаз — здесь хранятся ссылки (GUID), которые связывают объект в ЗУП с объектом в БП. Если вы пересоздавали синхронизацию «с нуля», старые связи могут мешать. Однако будьте осторожны: очистка этого регистра приведет к тому, что 1С попытается сопоставить объекты по полям поиска (номер, дата, ИНН), что часто порождает дубли.ВерсииОбъектов — регистр, отвечающий за версионирование. Если записи в нем повреждены, система может ошибочно считать, что текущая версия объекта уже была успешно передана.Для исправления можно воспользоваться кодом для программной регистрации объекта в плане обмена. Это помогает обойти любые визуальные ограничения интерфейса. Выясним, как выглядит пример такого кода (используется в обработках):
УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("Бухгалтерия предприятия, редакция 3.0");
ОбъектСсылка = Документы.ВедомостьНаВыплатуЗарплатыВБанк.НайтиПоНомеру("00ЗП-000001", ТекущаяДата());
Если Не ОбъектСсылка.Пустая() Тогда
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, ОбъектСсылка);
Сообщить("Объект успешно зарегистрирован для узла: " + УзелОбмена);
КонецЕсли;
Подводя итог, отметим: если вы видите сообщение «Зарегистрировано 0 изменений», первым делом проверьте настройки ограничений миграции в самой форме регистрации. В 90% случаев именно отключение проверки правил позволяет решить задачу без редактирования кода или очистки регистров.