Переход со старой платформы 1С:Предприятие 7.7 на современную 1С:Предприятие 8.3 при наличии компактной, но нетиповой конфигурации (несколько справочников, полдюжины документов и регистры остатков) часто вызывает вопросы выбора правильного инструментария. Ситуация усложняется, когда ключевой целью миграции выступает необходимость работы через веб-браузер и мобильные устройства. Разберем по шагам архитектурные особенности такого перехода и практические способы переноса накопленных данных.
В платформе 1С 8 присутствует штатная утилита конвертации метаданных, способная преобразовать файл конфигурации 1Cv7.MD в структуру восьмой версии. Однако для современных задач этот путь не подходит по нескольким причинам:
Для небольшой базы оптимальный путь — создать чистую конфигурацию на платформе 8.3. В ней объявляются необходимые метаданные (справочники номенклатуры, контрагентов, складов, регистры накопления с видом Остатки и документы товародвижения). Все формы должны проектироваться строго как управляемые с явным разделением контекста исполнения директивами компиляции (&НаКлиенте, &НаСервере). В дальнейшем эту информационную базу публикуют на веб-сервере (Apache или IIS), что обеспечивает мгновенный доступ со смартфонов и планшетов.
Попытка перенести все первичные документы за прошлые годы из 7.7 в 8.3 для небольшой учетной системы экономически и технически нецелесообразна. Разница в алгоритмах проведения документов и формировании движений по регистрам практически неизбежно приведет к расхождению итоговых цифр в отчетах.
Рекомендуемый подход к миграции:
ВводНачальныхОстатков, который делает прямые движения в приход по регистрам остатков номенклатуры и взаиморасчетов.Использование специализированной конфигурации «Конвертация данных» — классический стандарт для обмена между различными поколениями платформ 1С. Важно учитывать выбор редакции: конфигурация «Конвертация данных 3.0» для работы с 7.7 не применяется, так как она базируется на формате EnterpriseData и компонентах БСП. Для переноса из 7.7 в 8.3 подходит исключительно «Конвертация данных 2.1».
Рассмотрим порядок настройки правил обмена:
MD77.ert (поставляется в каталоге шаблонов КД 2.1). В результате формируется XML-файл с описанием структуры объектов 7.7.MD83.epf, сохраняющая структуру метаданных приемника в отдельный XML-файл..xml. В базе 1С 7.7 запускается универсальная обработка выгрузки V77Exp.ert, которая считывает данные согласно правилам и выгружает их в результирующий XML-файл. В базе 1С 8.3 файл загружается с помощью обработки V8Exchan83.epf (или типовой подсистемы универсального обмена).Если справочников мало, а структура реквизитов не содержит сложной периодики и подчиненных таблиц, разворачивать КД 2.1 не обязательно. Простейший и самый надежный способ заключается в выгрузке информации в табличные файлы.
Для гибкого программного управления процессом переноса можно написать простую внешнюю обработку в 1С 8.3, которая напрямую считывает данные из 1С 7.7 через протокол автоматизации OLE/COM.
Критически важное техническое ограничение: OLE-сервер платформы 1С 7.7 существует только в 32-разрядном варианте (x86). Если запустить обработку из 64-битного клиента 1С 8.3, инициализация COM-объекта завершится системной ошибкой. Запуск клиентского приложения 1С 8.3 для выполнения такой обработки должен производиться строго в 32-разрядной версии.
Посмотрим на пример кода подключения и выгрузки справочника:
&НаСервере
Процедура ЗагрузитьСправочникНоменклатурыИз77(ПутьКБазе77, Пользователь77, Пароль77)
// Инициализируем COM-соединение с базой 1С 7.7
Попытка
База77 = Новый COMОбъект("V77.Application");
Исключение
ВызватьИсключение "Не удалось инициализировать COM-объект V77.Application. Убедитесь, что клиент 8.3 запущен в 32-битном режиме.";
КонецПопытки;
ПараметрыПодключения = База77.Initialize(База77.RMTrade, "/D""" + ПутьКБазе77 + """ /N""" + Пользователь77 + """ /P""" + Пароль77 + """", "NO_SPLASH_SHOW");
Если Не ПараметрыПодключения Тогда
ВызватьИсключение "Не удалось подключиться к базе 1С 7.7. Проверьте путь и параметры авторизации.";
КонецЕсли;
// Создаем объект выборки справочника Номенклатура в 7.7
Спр77 = База77.CreateObject("Справочник.Номенклатура");
Спр77.ВыбратьЭлементы();
Пока Спр77.ПолучитьЭлемент() = 1 Цикл
// Пропускаем группы (папки), если переносим только элементы
Если Спр77.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
Код77 = СокрЛП(Спр77.Код);
Наименование77 = СокрЛП(Спр77.Наименование);
// Ищем существующий элемент в 8.3 или создаем новый
НовыйЭлемент = Справочники.Номенклатура.НайтиПоКоду(Код77);
Если НовыйЭлемент.Пустая() Тогда
Объект83 = Справочники.Номенклатура.СоздатьЭлемент();
Объект83.Код = Код77;
Иначе
Объект83 = НовыйЭлемент.ПолучитьОбъект();
КонецЕсли;
Объект83.Наименование = Наименование77;
Объект83.Записать();
КонецЦикла;
База77 = Неопределено;
КонецПроцедуры
Проанализировав все варианты, для простой структуры из нескольких справочников и 6 документов наиболее рациональным путем является ручное создание современной конфигурации на управляемых формах, перенос справочников и остатков через табличные документы или КД 2.1 и последующая публикация готовой базы на веб-сервере для работы мобильных пользователей.