При разработке обмена данными между идентичными конфигурациями 1С:Зарплата и управление персоналом (ЗУП) с использованием технологии «Конвертация данных 2.1», разработчики часто сталкиваются с загадочными ошибками, возникающими в момент записи или проведения документов. Одной из самых распространенных и при этом неочевидных проблем является ошибка, сообщающая о том, что «Поле Активность не обнаружено». Ситуация осложняется тем, что в структуре самого документа такого реквизита нет, и разработчик оказывается в тупике.
В этой статье мы подробно разберем причины возникновения данной ошибки, проанализируем взаимосвязь документов и регистров в планах обмена и выясним, как правильно настроить правила регистрации объектов (ПРО), чтобы обмен работал корректно даже без передачи движений.
Первым делом проанализируем природу этого поля. В системе 1С:Предприятие реквизит Активность является стандартным свойством наборов записей регистров (как сведений, так и накопления). Он определяет, влияют ли записи регистра на итоги или нет. В документах этого поля действительно не существует.
Почему же система «ругается» на отсутствие этого поля при записи документа? Рассмотрим механизм работы обмена данными в современных конфигурациях на базе БСП (Библиотеки стандартных подсистем):
ПланаОбмена, система проверяет необходимость его регистрации для конкретных узлов.ПланаОбмена включены регистры, по которым документ делает движения, механизм регистрации пытается обработать и их.Активность объекта, который в данный момент некорректно инициализирован или не является набором записей регистра в привычном понимании.Рассмотрим ситуацию, когда наша цель — передавать только документы и перепроводить их в базе-приемнике, не выгружая движения. Это стандартная практика для ЗУП, так как движения могут зависеть от локальных настроек расчета в конкретной базе.
Проанализируем состав вашего ПланаОбмена в Конфигураторе. Если вы добавили документ в состав плана, но при этом оставили в составе и связанные с ним регистры, система будет пытаться отслеживать изменения в этих регистрах при каждом проведении документа.
Рекомендация: Если вы сознательно решили не передавать движения (регистры), попробуйте исключить эти регистры из состава ПланаОбмена в дереве метаданных. Однако помните, что в ЗУП многие механизмы (например, остатки отпусков или состояние сотрудников) завязаны на регистрах сведений. Если эти данные нужны в приемнике в актуальном виде без перепроведения, регистры придется оставить.
Часто проблема кроется в несоответствии правил регистрации (ПРО) и актуальной конфигурации. Разберем по шагам, что нужно проверить в Конвертации данных 2.1:
ПРО.xml остались старые алгоритмы обращения к регистрам, которые больше не соответствуют логике работы обновленной конфигурации.Посмотрим на настройки правил регистрации для конкретных объектов. В КД 2.1 для каждого объекта (документа или регистра) в ПРО можно настроить режим авторегистрации.
Если в вашем плане обмена присутствуют регистры, но вы не хотите, чтобы ошибка Активность мешала работе, выполните следующие действия:
Запретить.Активность) будут пресечены.Иногда ошибка вызывается кастомным кодом в обработчиках событий ПРО. Проанализируем типичный опасный код в обработчике ПередОбработкой или ПриОбработке:
// Опасный код, который может вызвать ошибку
Если Объект.Активность Тогда
// какая-то логика
КонецЕсли;
Система может вызывать этот обработчик не только для наборов записей, но и для самих документов, если правила настроены некорректно. Чтобы избежать ошибки, всегда добавляйте проверку типа объекта:
// Безопасный код
Если ТипЗнч(Объект) = Тип("РегистрСведенийНаборЗаписей.ДанныеСостоянийСотрудников") Тогда
Попытка
Если Объект.Количество() > 0 И Объект[0].Активность Тогда
// Логика только для активных записей
КонецЕсли;
Исключение
// Обработка исключения, если поле всё же недоступно
КонецПопытки;
КонецЕсли;
Как отметил автор темы, решение часто оказывается прозаичным. После внесения изменений в правила в КД 2.1, их необходимо правильно загрузить в информационную базу.
Разберем типичную ошибку: вы создали новые правила регистрации, сохранили их в файл, но в настройках синхронизации данных в самой 1С:ЗУП (через «Все функции» — «Регистры сведений» — «Правила для обмена данными») остался выбран старый вариант или типовые правила.
Важно: При использовании БСП правила регистрации могут храниться внутри конфигурации (как макет) или загружаться извне. Убедитесь, что в узле плана обмена используется именно ваш свежевыгруженный комплект правил. Ошибка «Активность» исчезает сразу после того, как система начинает использовать корректный XML-файл ПРО, соответствующий текущему составу плана обмена.
Подводя итог нашему разбору, выделим основные контрольные точки для устранения проблемы:
ПланеОбмена в Конфигураторе должен строго соответствовать списку объектов в Правилах регистрации в КД 2.1.ПослеЗагрузки прописан код для установки пометки проведения или непосредственного вызова метода Записать(РежимЗаписиДокумента.Проведение).Соблюдение этих шагов позволит создать стабильный обмен между базами ЗУП, избежать конфликтов при регистрации изменений и избавиться от навязчивой ошибки доступа к несуществующим полям документов.