Синхронизация данных между конфигурациями «Зарплата и управление персоналом» (ЗУП 3.1) и «Бухгалтерия предприятия» (БП 3.0) — один из самых ответственных и в то же время проблемных участков работы технического специалиста 1С. Часто возникают ситуации, когда стандартный механизм дает сбой после обновления релизов или изменения настроек префиксов. В данной статье мы подробно разберем, как справиться с ошибками метаданных и программными недоработками конкретных релизов.
Рассмотрим ситуацию, когда при попытке перенастроить синхронизацию или изменить префикс информационной базы возникает фатальная ошибка в общем модуле ОбменДаннымиПовтИсп. Система выдает сообщение об исключительной ситуации: Поле объекта не обнаружено. Это происходит в момент вызова метода ЗагрузитьПравилаОбмена.
Причина возникновения:
В механизме обмена данными 1С префикс базы является частью уникального идентификатора узла плана обмена. Если вы меняете префикс в уже существующей настройке или пытаетесь создать новую «поверх» старой с другими префиксами, в системе возникает конфликт ссылок. Регистр сведений «Соответствия объектов информационных баз» хранит записи, привязанные к старому коду узла. При смене префикса алгоритм инициализации правил обмена не может корректно сопоставить текущие настройки с кэшированными данными в памяти платформы.
Разберем решение по шагам:
БП для Бухгалтерии и ЗК (или ваш рабочий префикс) для ЗУП.В определенных релизах БП 3.0 (например, 3.0.57.17) пользователи сталкиваются с парадоксальной ситуацией: при попытке просто включить флаг «Синхронизация данных» в настройках программы система выдает ошибку, связанную с НДС налогового агента. Это происходит даже в тех организациях, которые находятся на УСН и не имеют никакого отношения к обязанностям налогового агента по НДС.
Проанализируем ситуацию:
При записи константы ИспользоватьСинхронизациюДанных система запускает механизм проверки всех функциональных опций программы. В коде модуля менеджера обработки ФункциональностьПрограммы присутствует жесткая проверка связанных параметров. Из-за ошибки в логике релиза процедура записи константы блокируется проверкой условия, которое в данной конфигурации не может быть выполнено или заполнено корректно.
Если вы не хотите снимать базу с поддержки, самым правильным методом будет использование расширения. Нам необходимо вмешаться в работу функции МассивИменКонстантФункциональностиДляОбменов.
Посмотрим на алгоритм действий:
ФункциональностьПрограммы.
// МассивИменКонстант.Добавить("ПокупателямиИсполняютсяОбязанностиНалоговогоАгентаПоНДС");
Важно помнить о режиме совместимости расширения. Если база работает на платформе 8.3.10 или 8.3.11, а расширение создано в более высокой версии, оно не подключится. Проверьте свойство «Режим совместимости» у основной конфигурации и установите точно такое же в свойствах расширения. Также не забудьте снять галочки «Безопасный режим» и «Защита от опасных действий» в настройках расширения в режиме «1С:Предприятие».
Существует еще более быстрый способ — принудительная установка значения константы в обход всех проверок форм и модулей менеджера. Это можно сделать с помощью небольшой внешней обработки или через консоль кода.
Рассмотрим пример кода:
&НаСервере
Процедура ВключитьСинхронизациюНаСервере()
// Создаем менеджер значения для константы использования обмена
МенеджерКонстанты = Константы.ИспользоватьСинхронизациюДанных.СоздатьМенеджерЗначения();
// Устанавливаем режим загрузки, чтобы пропустить проверки при записи
МенеджерКонстанты.ОбменДанными.Загрузка = Истина;
МенеджерКонстанты.Значение = Истина;
Попытка
МенеджерКонстанты.Записать();
Сообщить("Синхронизация успешно включена!");
Исключение
Сообщить("Ошибка при записи константы: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Использование свойства ОбменДанными.Загрузка = Истина является ключевым моментом. Оно сообщает платформе, что запись производится «техническим» способом, и большинство стандартных проверок в модулях (включая злополучную проверку налогового агента по НДС) будут проигнорированы.
Часто пользователи жалуются, что аналитика (статьи затрат, подразделения) не выгружается из Бухгалтерии обратно в ЗУП. Выясним причину этой ситуации.
Рассмотрим важные нюансы настройки:
Регистрация изменений для обмена данными и добавьте необходимые объекты в очередь отправки вручную.В заключение отметим, что большинство проблем синхронизации решаются либо возвратом к стандартным настройкам префиксов, либо использованием механизма ОбменДанными.Загрузка для обхода ошибок в логике релизов. Всегда делайте резервную копию базы перед внесением изменений в константы и выполнением первого обмена после смены префиксов.