Как исправить ошибку «Поле Активность не обнаружено» при обмене данными между базами ЗУП через КД 2.1

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке обмена данными между идентичными конфигурациями 1С:Зарплата и управление персоналом (ЗУП) с использованием технологии «Конвертация данных 2.1», разработчики часто сталкиваются с загадочными ошибками, возникающими в момент записи или проведения документов. Одной из самых распространенных и при этом неочевидных проблем является ошибка, сообщающая о том, что «Поле Активность не обнаружено». Ситуация осложняется тем, что в структуре самого документа такого реквизита нет, и разработчик оказывается в тупике.

В этой статье мы подробно разберем причины возникновения данной ошибки, проанализируем взаимосвязь документов и регистров в планах обмена и выясним, как правильно настроить правила регистрации объектов (ПРО), чтобы обмен работал корректно даже без передачи движений.

Выясняем причину: откуда берется поле «Активность»?

Первым делом проанализируем природу этого поля. В системе 1С:Предприятие реквизит Активность является стандартным свойством наборов записей регистров (как сведений, так и накопления). Он определяет, влияют ли записи регистра на итоги или нет. В документах этого поля действительно не существует.

Почему же система «ругается» на отсутствие этого поля при записи документа? Рассмотрим механизм работы обмена данными в современных конфигурациях на базе БСП (Библиотеки стандартных подсистем):

  1. При проведении документа в базе-источнике срабатывают подписки на события, отвечающие за регистрацию изменений.
  2. Если документ включен в состав ПланаОбмена, система проверяет необходимость его регистрации для конкретных узлов.
  3. Если в состав этого же ПланаОбмена включены регистры, по которым документ делает движения, механизм регистрации пытается обработать и их.
  4. Ошибка возникает в тот момент, когда программный код регистрации изменений (внутри БСП или в обработчиках ПРО) пытается обратиться к свойству Активность объекта, который в данный момент некорректно инициализирован или не является набором записей регистра в привычном понимании.

Шаг 1. Проверяем состав Плана обмена в Конфигураторе

Рассмотрим ситуацию, когда наша цель — передавать только документы и перепроводить их в базе-приемнике, не выгружая движения. Это стандартная практика для ЗУП, так как движения могут зависеть от локальных настроек расчета в конкретной базе.

Проанализируем состав вашего ПланаОбмена в Конфигураторе. Если вы добавили документ в состав плана, но при этом оставили в составе и связанные с ним регистры, система будет пытаться отслеживать изменения в этих регистрах при каждом проведении документа.

Рекомендация: Если вы сознательно решили не передавать движения (регистры), попробуйте исключить эти регистры из состава ПланаОбмена в дереве метаданных. Однако помните, что в ЗУП многие механизмы (например, остатки отпусков или состояние сотрудников) завязаны на регистрах сведений. Если эти данные нужны в приемнике в актуальном виде без перепроведения, регистры придется оставить.

Шаг 2. Настройка правил регистрации объектов (ПРО)

Часто проблема кроется в несоответствии правил регистрации (ПРО) и актуальной конфигурации. Разберем по шагам, что нужно проверить в Конвертации данных 2.1:

  1. Синхронизация метаданных: Убедитесь, что вы загрузили актуальные описания конфигураций источника и приемника в базу КД. После любых изменений в Конфигураторе (даже если вы просто добавили один реквизит или изменили состав плана обмена) необходимо обновить метаданные в КД.
  2. Перевыгрузка ПРО: Если вы изменили состав плана обмена, правила регистрации нужно сформировать заново. Ошибка «Поле Активность не обнаружено» часто возникает из-за того, что в файле ПРО.xml остались старые алгоритмы обращения к регистрам, которые больше не соответствуют логике работы обновленной конфигурации.

Шаг 3. Управление авторегистрацией движений

Посмотрим на настройки правил регистрации для конкретных объектов. В КД 2.1 для каждого объекта (документа или регистра) в ПРО можно настроить режим авторегистрации.

Если в вашем плане обмена присутствуют регистры, но вы не хотите, чтобы ошибка Активность мешала работе, выполните следующие действия:

Шаг 4. Анализ обработчиков событий в КД 2.1

Иногда ошибка вызывается кастомным кодом в обработчиках событий ПРО. Проанализируем типичный опасный код в обработчике ПередОбработкой или ПриОбработке:


// Опасный код, который может вызвать ошибку
Если Объект.Активность Тогда
    // какая-то логика
КонецЕсли;

Система может вызывать этот обработчик не только для наборов записей, но и для самих документов, если правила настроены некорректно. Чтобы избежать ошибки, всегда добавляйте проверку типа объекта:


// Безопасный код
Если ТипЗнч(Объект) = Тип("РегистрСведенийНаборЗаписей.ДанныеСостоянийСотрудников") Тогда
    Попытка
        Если Объект.Количество() > 0 И Объект[0].Активность Тогда
            // Логика только для активных записей
        КонецЕсли;
    Исключение
        // Обработка исключения, если поле всё же недоступно
    КонецПопытки;
КонецЕсли;

Шаг 5. Синхронизация версий правил в базе

Как отметил автор темы, решение часто оказывается прозаичным. После внесения изменений в правила в КД 2.1, их необходимо правильно загрузить в информационную базу.

Разберем типичную ошибку: вы создали новые правила регистрации, сохранили их в файл, но в настройках синхронизации данных в самой 1С:ЗУП (через «Все функции» — «Регистры сведений» — «Правила для обмена данными») остался выбран старый вариант или типовые правила.

Важно: При использовании БСП правила регистрации могут храниться внутри конфигурации (как макет) или загружаться извне. Убедитесь, что в узле плана обмена используется именно ваш свежевыгруженный комплект правил. Ошибка «Активность» исчезает сразу после того, как система начинает использовать корректный XML-файл ПРО, соответствующий текущему составу плана обмена.

Резюме и практические советы

Подводя итог нашему разбору, выделим основные контрольные точки для устранения проблемы:

  1. Проверьте соответствие: Состав объектов в ПланеОбмена в Конфигураторе должен строго соответствовать списку объектов в Правилах регистрации в КД 2.1.
  2. Используйте «Запретить авторегистрацию»: Для всех регистров, движения по которым вы не планируете передавать «как есть», установите запрет авторегистрации в ПРО. Это избавит систему от лишних проверок при проведении документов.
  3. Обновляйте комплект целиком: Всегда выгружайте из КД 2.1 и загружайте в ЗУП полный комплект (Правила конвертации + Правила регистрации). Использование ПРО от одной версии правил с ПКО от другой версии — прямой путь к ошибкам модифицированности.
  4. Перепроведение в приемнике: Раз мы решили не выгружать движения, убедитесь, что в правилах конвертации (ПКО) для документов в обработчике ПослеЗагрузки прописан код для установки пометки проведения или непосредственного вызова метода Записать(РежимЗаписиДокумента.Проведение).

Соблюдение этих шагов позволит создать стабильный обмен между базами ЗУП, избежать конфликтов при регистрации изменений и избавиться от навязчивой ошибки доступа к несуществующим полям документов.

← На главную