Как исправить ошибку «Процедура или функция с указанным именем не определена (ЗначениеНеЗаполнено)» при переносе данных из 1С 7.7 в 1С 8

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

При выполнении конвертации данных из конфигурации «Бухгалтерский учет 7.7» в программы линейки 1С:Предприятие 8 через обработку УниверсальныйОбменДаннымиXML пользователи и специалисты нередко сталкиваются с аварийным завершением загрузки. В окне сообщений выводится ошибка компиляции глобального обработчика события ПослеЗагрузкиОбъекта с указанием на неопределенную функцию ЗначениеНеЗаполнено. Проанализируем причины возникновения этой проблемы и разберем по шагам все способы ее устранения.

Причины возникновения ошибки

Выясним причину, из-за которой процесс обмена прерывается на стороне конфигурации-приемника:

  1. Устаревшие правила конвертации: Использование правил обмена из архивных каталогов (например, 1CIts\EXE\Cnv77_80\BP) предназначено для перехода на платформу 1С 8.0 и устаревшую редакцию «Бухгалтерия предприятия 1.0/1.5».
  2. Изменение синтаксиса платформы: В ранних релизах платформы 1С 8.0 встроенной функции проверки заполненности не существовало, и разработчики применяли функцию ЗначениеНеЗаполнено(), объявленную в глобальном модуле. Начиная с платформы 8.1 и выше, была внедрена системная функция ЗначениеЗаполнено(), а устаревшая функция ЗначениеНеЗаполнено() была полностью удалена из типовых конфигураций (включая «Бухгалтерия предприятия 2.0» и «Бухгалтерия предприятия 3.0»).
  3. Выполнение кода обработчиков: При загрузке объектов (таких как КурсыВалют, ФизическиеЛица, справочники и регистры сведений) срабатывают правила конвертации, текст обработчиков которых пытается вызвать отсутствующую функцию, что приводит к исключению на строках модуля обработки УниверсальныйОбменДаннымиXML.

Способ 1. Использование актуальных типовых правил из дистрибутива

Рассмотрим правильный подход к получению актуальных файлов обмена без необходимости промежуточного переноса через устаревшие версии конфигураций:

  1. Перейдем в каталог установленного шаблона целевой конфигурации 1С:Бухгалтерии. По умолчанию шаблоны располагаются по пути: AppData\Roaming\1C\1Cv8\tmplts\1c\Accounting\<НомерРелиза>\Convert (или в папке ExtFiles).
  2. Найдем актуальные файлы правил конвертации (например, ACC77_ACC8.xml или ACC77_ACC30.xml) и внешнюю обработку выгрузки для семерки ACC77_ACC8.ert.
  3. Проверим наличие аналогичных файлов в каталоге информационной базы 7.7. После регулярных регламентных обновлений типовой конфигурации «Бухгалтерский учет 7.7» (ред. 4.5) свежие файлы переноса автоматически помещаются в подкаталог ExtForms рабочей базы.
  4. Выполним выгрузку из 1С 7.7 именно через актуальную обработку с применением обновленных правил обмена.

Способ 2. Прямой перенос данных в 1С:Бухгалтерию предприятия 3.0

Разберем вариант перехода сразу в современную редакцию программы 1С:Бухгалтерия 8 (ред. 3.0) без промежуточной загрузки в редакцию 2.0:

  1. Запустим конфигурацию «Бухгалтерия предприятия 3.0» в режиме «1С:Предприятие».
  2. Откроем раздел Главное, перейдем в пункт Начальные остатки и выберем команду Загрузка из 1С:Предприятия 7.7.
  3. Выберем подходящий вариант подключения:
    1. Прямое подключение к информационной базе 7.7: программа самостоятельно подключится к исходной базе через COM-соединение и выполнит перенос справочников и остатков.
    2. Загрузка из предварительно выгруженного файла: если прямое подключение невозможно, выгрузка выполняется внешней обработкой из каталога шаблона, после чего полученный XML-файл загружается помощником.

Способ 3. Быстрое исправление текста правил обмена

Если требуется использовать уже имеющийся файл правил, исправим синтаксическую ошибку вручную:

  1. Откроем XML-файл правил конвертации данных в любом текстовом редакторе.
  2. Воспользуемся функцией поиска и автозамены.
  3. Найдем все вхождения вызова: ЗначениеНеЗаполнено(
  4. Заменим их на платформенную конструкцию с отрицанием: НЕ ЗначениеЗаполнено(
  5. Сохраним изменения в файле правил и выполним повторную загрузку данных через обработку УниверсальныйОбменДаннымиXML.

Способ 4. Добавление функции-обертки в конфигурацию-приемник

Если база-приемник доступна для редактирования (снята с поддержки или дорабатывается), можно восстановить обратную совместимость на уровне программного кода конфигурации:

  1. Откроем информационную базу 1С 8 в режиме «Конфигуратор».
  2. Найдем или создадим общий модуль со свойствами Сервер, Внешнее соединение и Клиент (обычное приложение).
  3. Добавим экспортную функцию-обертку:

Функция ЗначениеНеЗаполнено(Значение) Экспорт
    Возврат НЕ ЗначениеЗаполнено(Значение);
КонецФункции

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

Особенности и технические ограничения при переносе данных

Рассмотрим важные нюансы, которые необходимо учитывать при миграции данных с платформы 7.7 на платформу 8:

  1. Разрядность клиента при COM-соединении: Для прямого подключения к 32-разрядной платформе 1С 7.7 сеанс 1С 8 должен быть запущен в 32-разрядном клиенте. При работе через 64-разрядный сервер 1С прямое COM-подключение без настройки компоненты COM+ Application (DLLHOST) вызовет ошибку несовместимости библиотек.
  2. Ограничения парсера XML: Обработка выгрузки из 7.7 использует системный компонент msxml3.dll. При формировании файлов большого объема может возникнуть переполнение оперативной памяти. Для предотвращения сбоев рекомендуется выгружать данные поэтапно: сначала нормативно-справочную информацию, затем ввод начальных остатков, а затем документы текущего периода.
  3. Объем переносимых данных: Типовой алгоритм переноса переносит только справочники, остатки на начало выбранного года и первичные документы за незакрытый текущий период. Проводки закрытых прошлых лет в виде проведенных документов типовыми механизмами не переносятся.
← На главную