Как исправить ошибку «Поле объекта не обнаружено» при выгрузке остатков УСН в 1С:КА и ERP

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

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

Анализ причины ошибки в правилах выгрузки УСН

Проанализируем ситуацию: при выгрузке данных с помощью помощника перехода возникает критический сбой на правиле ОстаткиРасходовУСНПоМатериалам. Ошибка указывает на обращение к несуществующему полю объекта. Это происходит из-за специфики работы регистра накопления РасходыПриУСН в исходной базе БП.

В типовых правилах конвертации, поставляемых фирмой 1С, ожидается, что в качестве «партии» (документа возникновения расхода) будут выступать только приходные документы (например, ПоступлениеТоваровУслуг). Однако в реальных базах в поле «Партия» этого регистра может оказаться документ ТребованиеНакладная или РасходМатериалов. Это случается при возвратах, корректировках или специфических операциях перемещения материалов между складами и подразделениями.

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


// Пример проблемного участка в правилах
Если ТипЗнч(ОбъектКоллекции.Партия) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
    Значение = ОбъектКоллекции.Партия.СчетУчетаРасчетовСКонтрагентом;
ИначеЕсли ТипЗнч(ОбъектКоллекции.Партия) = Тип("ДокументСсылка.ТребованиеНакладная") Тогда
    // Если здесь нет обработки или идет обращение к реквизиту,
    // которого нет у Требования-накладной, возникнет ошибка
    Значение = ОбъектКоллекции.Партия.СчетУчета; // Ошибка, если реквизит называется иначе
КонецЕсли;

Для исправления необходимо либо добавить обработку документа ТребованиеНакладная в правила конвертации данных (через конфигурацию «Конвертация данных 2.0»), либо временно модифицировать XML-файл правил, добавив проверку на тип документа перед обращением к его свойствам.

Как обновить правила обмена, если система их «игнорирует»

Часто программисты сталкиваются с тем, что после изменения правил в макете обработки ПомощникПерехода..., выгрузка все равно идет по старым алгоритмам. Выясним причины, по которым это происходит, и рассмотрим шаги для решения проблемы.

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

  1. Закройте все сеансы 1С.
  2. Перейдите в папку временных файлов пользователя (обычно это %TEMP% или C:\Users\ИмяПользователя\AppData\Local\Temp).
  3. Найдите и удалите все XML-файлы, начинающиеся на ExchangeRules или имеющие отношение к переходу на КА/ERP.
  4. Очистите содержимое папок LocalLow и Roaming в профиле 1С, если используете клиент-серверный вариант.

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


ХранилищеОбщихНастроек.Удалить("Обработка.ПомощникПереходаНаКА.ПравилаОбмена", "");
ХранилищеНастроекДанныхФорм.Удалить("Обработка.ПомощникПереходаНаКА/НастройкиВыгрузки", "", "ИмяПользователя");

3. Использование внешней обработки «Универсальный обмен данными XML». Рассмотрим альтернативный путь. Если типовой помощник отказывается работать с новыми правилами, выполним выгрузку через УниверсальныйОбменДанныхXML (версии 2.1.8 и выше). Для этого:

  1. Извлеките исправленные правила из макета помощника в отдельный файл.
  2. Запустите универсальную обработку в исходной базе.
  3. Загрузите файл правил и настройте параметры (период, организации).
  4. Выгрузите данные в файл.
  5. В целевой базе (КА или ERP) используйте ту же обработку для загрузки этого файла.

Важный нюанс: Помните, что при использовании универсальной обработки некоторые механизмы «пост-обработки» (например, автоматическое проведение документов или заполнение специфических регистров сведений КА) могут не сработать. Их придется запускать вручную через «Групповое изменение реквизитов» или типовые регламентные операции.

Рекомендации по отладке без доступа к серверу

Если у вас нет доступа к серверу для полноценной отладки кода, проанализируем ситуацию через «внешние» средства. Попробуем изменить версию правил в заголовке XML-файла. Откроем файл правил в текстовом редакторе и найдем тег ВерсияФормата или комментарий с версией. Изменение даже одной цифры часто заставляет платформу сбросить закэшированные данные и прочитать макет заново.

Также стоит проверить, не подключена ли обработка выгрузки как «Дополнительный отчет или обработка». Если это так, то при каждом изменении макета необходимо заново загружать файл .epf в справочник, так как 1С хранит двоичные данные обработки в информационной базе, а не берет их с вашего диска.

Подведем итог: проблема с выгрузкой УСН в большинстве случаев решается коррекцией типов документов в правилах конвертации. Для применения изменений обязательно используйте метод очистки временных файлов и проверку версионности макетов внутри обработки.

← На главную