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