При штатном переносе остатков и справочников из информационной базы 1С:Предприятие 7.7 в 1С:Бухгалтерия 8.3 стандартным механизмом загрузки может возникать сбой. Подключение к базе-источнику происходит успешно, значения констант считываются без проблем, однако при попытке обращения к глобальным функциям 7.7 (например, глИдентификаторКонфигурации()) платформа 8.3 выдает ошибку вида Метод объекта не обнаружен или исключение вызова метода EvalExpr.
Проанализируем причины этой технической проблемы, рассмотрим примеры кода подключения и разберем способы восстановления работоспособности переноса данных.
Рассмотрим, как происходит стандартное подключение к базе 7.7 из управляемого приложения 1С 8.3. В процессе работы формируется COM-объект V1CEnterprise.Application и выполняется его инициализация через метод Initialize:
v7 = Новый COMObject("V1CEnterprise.Application");
Открыта = v7.Initialize(v7.RMTrade, "/D""" + ПутьКИБ + """ /M ", "NO_SPLASH_SHOW");
После подключения программа пытается считать параметры базы 7.7, чтобы проверить совместимость правил конвертации. Код проверки выглядит следующим образом:
Функция ПолучитьФайлДанных(v7)
мПустаяСтрока = "";
Попытка
ИдентификаторКонфигурации = v7.глИдентификаторКонфигурации();
НомерРелизаКонфигурации = v7.Константа.НомерРелиза;
Исключение
ТекстСообщения = НСтр("ru = 'Производится перенос данных из конфигурации, для которой не предусмотрена конвертация'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Возврат мПустаяСтрока;
КонецПопытки;
КонецФункции
Посмотрим на поведение системы: чтение v7.Константа.НомерРелиза проходит штатно и возвращает значение номера релиза, но вызов v7.глИдентификаторКонфигурации() вызывает исключение. В результате выполняется ветка Исключение с сообщением о недопустимости конвертации.
Основная причина, почему COM-объект 7.7 перестает «видеть» экспортные процедуры и функции глобального модуля, заключается в ошибке выполнения глобального модуля 1С 7.7 при старте системы.
Рассмотрим подробно, почему это происходит:
ПриНачалеРаботыСистемы() или в теле глобального модуля информационной базы 7.7 происходит синтаксическая ошибка, сбой внешней компоненты (например, v7plus.dll) или ошибка обращения к несуществующим путям/файлам, инициализация модуля прерывается. В результате базовые структуры метаданных (константы, справочники) через COM остаются доступны, а экспортные глобальные функции становятся недоступными для вызова.Предупреждение(), Вопрос()), COM-соединение не может продолжить корректную загрузку кода модуля.Разберем по шагам действия, необходимые для устранения ошибки вызова методов глобального модуля.
глИдентификаторКонфигурации в глобальном модуле 7.7 указано ключевое слово Экспорт.1cv7.exe один раз от имени Администратора Windows, чтобы перерегистрировать COM-сервер в реестре системы.Если настроить прямое COM-подключение не удается из-за особенностей окружения или ограничений разрядности, наиболее надежным решением является перенос данных через файл выгрузки.
V77Exp.ert и файл правил конвертации (например, Acc77_80.xml), которые поставляются вместе с конфигурацией 1С:Бухгалтерия 8.3.V77Exp.ert.Использование файлового обмена исключает любые зависимости от COM-компонентов, разрядности операционной системы и блокировок глобального модуля 1С 7.7.