Почему при выгрузке из 1С 7.7 в 1С 8 через Конвертацию данных поля остаются пустыми и как это исправить?

Программист 1С v7.7 Бухгалтерский учет Сфера услуг, туризм и социальный сектор
← На главную

Перенос данных из устаревших систем на платформе 1С:Предприятие 7.7 в современные конфигурации на базе 1С:Предприятие 8.3 — задача, полная нюансов. Часто программисты сталкиваются с ситуацией, когда правила в конфигурации «Конвертация данных» (КД 2.0) настроены верно, сопоставление свойств выполнено, но при выгрузке в итоговом XML-файле вместо ожидаемых значений номенклатуры или серий мы видим пустые теги. Проанализируем, почему так происходит и как добиться корректного заполнения данных.

Разбор основной причины: Модуль выгрузки в 1С 7.7

Главное отличие процесса выгрузки из «семерки» от аналогичного процесса в «восьмерке» заключается в механизме исполнения правил. В 1С 8 обработка УниверсальныйОбменДаннымиXML динамически считывает алгоритмы прямо из файла XML с правилами. В 1С 7.7 архитектура иная: обработка выгрузки (обычно это V77Exp.ert) содержит внутри себя огромный текстовый блок — Модуль выгрузки.

Этот модуль генерируется в конфигурации «Конвертация данных» в момент сохранения правил. Рассмотрим ситуацию: вы добавили новое свойство в ПКС (Правила Конвертации Свойств), нажали «Сохранить правила», получили XML-файл и запустили выгрузку в 7.7. Но данные не появились. Это произошло потому, что обработка выгрузки в 7.7 ничего не знает о ваших изменениях, пока вы не обновите программный код внутри неё. Выясним, как это сделать правильно.

Существует два основных способа обновления модуля выгрузки:

  1. Ручное копирование: В «Конвертации данных» при выгрузке правил необходимо перейти на вкладку «Параметры выгрузки» и нажать кнопку «Выгрузить модуль выгрузки для 7.7». Полученный текст нужно полностью скопировать и вставить в соответствующий раздел модуля обработки V77Exp.ert в конфигураторе 1С 7.7.
  2. Использование директивы #ЗагрузитьИзФайла: Это гораздо более удобный способ, который позволяет избежать постоянного захода в конфигуратор. В модуле обработки V77Exp.ert один раз прописывается путь к внешнему текстовому файлу, который КД генерирует автоматически при сохранении правил.

Проанализируем пример использования этой директивы. В коде модуля обработки выгрузки это выглядит примерно так:


// В штатном месте модуля обработки V77Exp.ert
#ЗагрузитьИзФайла "C:\Transfer\RulesModule.txt"

Теперь каждый раз, когда вы сохраняете правила в КД, обновляется и текстовый файл с кодом, и обработка 7.7 подхватывает изменения «на лету».

Проблема пустых узлов Пусто в XML-файле

Если после обновления модуля выгрузки данные всё равно не попадают в файл, а тег выглядит как <Свойство Тип="..." Имя="..."> <Пусто/> </Свойство>, значит, обработка нашла правило, но не смогла вычислить значение источника. Разберем возможные причины:

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

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


// Пример для 1С 7.7 в Конвертации данных
Если Источник.Вид() = "Материалы" Тогда
    Значение = Источник.ТекущийЭлемент();
Иначе
    Значение = ""; // Это приведет к тегу Пусто
КонецЕсли;

Специфика переноса Серий и Номенклатуры

Особое внимание уделим медикаментам и сериям, как в рассматриваемом кейсе для Казахстана (БГП РК). В 1С 8 серии чаще всего являются справочником, подчиненным номенклатуре. В 1С 7.7 структура может быть иной.

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

Использование внешних компонент для отладки

Для ускорения процесса разработки и отладки правил в среде 1С 7.7 полезно использовать компоненту turbomd.dll. Она позволяет обновлять конфигурацию и модули обработок без необходимости монопольного доступа и постоянного перезапуска программы пользователями. Это критически важно, когда вы тестируете выгрузку на «живой» базе с большим объемом документов за 2019 год, как в нашем примере.

Дополнительные рекомендации по документам «Перемещение»

Документы перемещения медикаментов часто требуют заполнения специфических реквизитов, таких как счета учета (например, 1310 или 1350 в казахстанском учете). В 1С 7.7 эти данные могут отсутствовать в явном виде в табличной части. Чтобы документ в 1С 8 не просто загрузился, но и смог провестись, рекомендуем:

  1. В ПКС для счетов учета в базе-приемнике установить «Значение по умолчанию».
  2. Либо прописать алгоритм в ПКО документа в обработчике ПриЗагрузке на стороне 1С 8, который будет заполнять счета учета исходя из вида номенклатуры или склада.

Резюмируем: если вы видите пустые значения в XML, первым делом проверьте, обновлен ли текст модуля в обработке V77Exp.ert. Вторым шагом проверьте актуальность загруженных метаданных и наличие установленных полей поиска в правилах объектов. Использование директивы #ЗагрузитьИзФайла сделает вашу работу значительно эффективнее, сократив время на рутинные операции в конфигураторе.

← На главную