Как перенести данные из 1С:Бухгалтерия 7.7 в 8.2 и исправить ошибку «Поле агрегатного объекта не обнаружено (Договор)»

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

Переход с платформы 1С:Предприятие 7.7 на 8.2 (или 3.0 на базе 8.3) — это трудоемкий процесс, который часто сопровождается техническими сбоями. Одной из самых коварных проблем является ошибка исполнения обработчика ПВД_ПередОбработкойПравила_тДанныеПоНДСпоПоставщикам, указывающая на отсутствие поля Договор. В этой статье мы подробно разберем, как подготовить информационные базы, устранить ошибки в данных и успешно завершить перенос.

Шаг 1. Техническая подготовка баз источника и приемника

Прежде чем приступать к выгрузке, необходимо убедиться, что обе конфигурации обновлены до актуальных (на момент переноса) релизов. Рассмотрим, почему это важно. Правила обмена, которые встроены в Бухгалтерию предприятия 8.2, жестко завязаны на структуру метаданных Бухгалтерии 7.7. Если ваша «семерка» имеет старый релиз (например, ниже 550), а «восьмерка» — актуальный, возникнет конфликт имен полей и объектов.

Проанализируем необходимые действия в базе 7.7:

  1. Обновим конфигурацию до последнего типового релиза (например, 7.70.550 и выше).
  2. Выполним расчет бухгалтерских итогов. Для этого зайдем в меню Операции — Управление бухгалтерскими итогами. Установим расчет по квартал, следующий за датой переноса (например, если переносим остатки на 01.01.2013, итоги должны быть рассчитаны по 1 квартал 2013 года включительно).
  3. Проверим наличие и версию библиотеки V7PLUS.DLL. Скопируем актуальный файл в каталог базы данных. Эта библиотека отвечает за корректное формирование XML-файла.
  4. Обязательно выполним Тестирование и исправление в Конфигураторе 7.7 (упаковка таблиц, переиндексация, проверка логической целостности).

Шаг 2. Разбор ошибки «Поле агрегатного объекта не обнаружено (Договор)»

Эта ошибка чаще всего возникает при попытке выгрузить данные по НДС. Выясним причину: правила обмена перебирают документы-основания на счетах учета НДС (например, 19.3) и пытаются программно обратиться к реквизиту Договор этого документа.

Если в базе 7.7 на счете 19.3 (или других субсчетах 19 счета) в качестве субконто Счета-фактуры указан документ, у которого в структуре нет договора (например, Авансовый отчет или ручная Операция), механизм переноса «спотыкается». Рассмотрим алгоритм исправления:

  1. Сформируем Оборотно-сальдовую ведомость по счету 19 (с детализацией по всем субконто) за весь период ведения учета.
  2. Найдем записи, где в качестве аналитики указаны документы, отличные от Поступление товаров или Счет-фактура.
  3. Особое внимание уделим документам Авансовый отчет. Если в проводках по НДС в авансовом отчете не заполнен договор или вид документа не предусматривает наличие этого поля, его нужно скорректировать.
  4. Проверим счета расчетов 60, 62, 76 на предмет пустых субконто. Если договор не выбран, правила обмена не смогут сопоставить объект в базе 8.2.

Шаг 3. Использование универсального обмена данными

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

В базе 8.2 найдем файлы правил обмена. Обычно они находятся в подкаталоге TradeWareEpf или ExtFiles каталога установки конфигурации. Нам понадобятся файлы: ACC77_82.XML (остатки и справочники) или ACC77_82_AccDoc.XML (с документами).

В базе 7.7 запустим обработку выгрузки. Рассмотрим пример логики подготовки выгрузки:


// Пример логики в обработчике ПВД (Правила выгрузки данных)
// Если объект не имеет реквизита "Договор", его нужно пропустить или подставить пустую ссылку
Если Метаданные.Документ(ДокОснование.Вид()).Выбран() = 1 Тогда
    Если НайтиРеквизит(ДокОснование, "Договор") = 0 Тогда
        // Код обработки исключения, чтобы избежать ошибки "Поле агрегатного объекта не обнаружено"
    КонецЕсли;
КонецЕсли;

Поскольку мы не можем легко править скомпилированные правила «на лету» без Конвертации данных, проще всего при выгрузке в обработке Выгрузка данных из 1С:Бухгалтерии 7.7 (обычно это Exp77_82.ert) снять галочки с проблемных разделов («НДС по приобретенным ценностям», «Расчеты с персоналом») и выгрузить их позже отдельным этапом, предварительно почистив данные в 7.7.

Шаг 4. Загрузка в 1С:Бухгалтерию 8.2 и устранение ошибки «Элемент не выбран!»

При загрузке в 8.2 может возникнуть ошибка: Ошибка при вызове метода контекста (ПолучитьОбъект): Элемент не выбран!. Это происходит в обработчике ПослеЗагрузкиОбъекта для документа ВводНачальныхОстатков.

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

  1. Используем обработку УниверсальныйОбменДаннымиXML.
  2. Включим режим отладки (галочка на вкладке «Дополнительные настройки»). Это позволит увидеть конкретный объект, на котором происходит сбой.
  3. Убедимся, что ИНН, КПП и наименование организации в 7.7 и 8.2 совпадают до каждого пробела. Если программа найдет расхождение, она может попытаться создать дубль организации, что приведет к конфликту ссылок.

Шаг 5. Финальные действия: проведение и проверка

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

Проанализируем состояние документов. Многие из них могут не проводиться из-за отсутствия обязательной аналитики, которой не было в 7.7 (например, Статьи движения денежных средств или Счета учета номенклатуры). Разберем, как это исправить:

  1. Воспользуемся обработкой Групповое изменение реквизитов (в 8.2 она доступна через меню «Сервис» или дополнительные обработки).
  2. Массово заполним недостающие реквизиты (например, установим основной склад или основной тип цен).
  3. Выполним групповое перепроведение документов. Если часть документов все равно не проводится, придется зайти в каждый и проверить вкладку «Счета учета».
  4. Сравним Оборотно-сальдовую ведомость в 7.7 и 8.2 на дату переноса. Особое внимание уделим 60 и 62 счетам — из-за разницы в механизмах зачета авансов сальдо может «разбежаться» по субсчетам, если в 7.7 не велся строгий учет по документам расчетов.

Используя этот комплексный подход — от исправления 19 счета в «семерке» до отладки загрузки в «восьмерке» — мы сможем корректно перенести данные и избежать потери важной финансовой информации.

← На главную