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