Как оптимально перенести нетиповую базу со складским учетом из 1С 7.7 в 1С 8.3?

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

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

Архитектурная концепция: почему базу-приемник нужно создавать с нуля

В платформе 1С 8 присутствует штатная утилита конвертации метаданных, способная преобразовать файл конфигурации 1Cv7.MD в структуру восьмой версии. Однако для современных задач этот путь не подходит по нескольким причинам:

  1. Устаревший интерфейс. Штатный конвертер воссоздает структуру обычного приложения (толстый клиент). Такой интерфейс технически не способен работать в веб-браузере и мобильном клиенте.
  2. Несовместимость программного кода. Логика модулей переносится закомментированным текстом. Механизмы работы с транзакциями, проведение документов и объектная модель в 7.7 и 8.3 кардинально различаются.
  3. Избыточность и сложность рефакторинга. Переделывать сгенерированные устаревшие формы дольше, чем создать чистую конфигурацию на управляемых формах с интерфейсом «Такси».

Для небольшой базы оптимальный путь — создать чистую конфигурацию на платформе 8.3. В ней объявляются необходимые метаданные (справочники номенклатуры, контрагентов, складов, регистры накопления с видом Остатки и документы товародвижения). Все формы должны проектироваться строго как управляемые с явным разделением контекста исполнения директивами компиляции (&НаКлиенте, &НаСервере). В дальнейшем эту информационную базу публикуют на веб-сервере (Apache или IIS), что обеспечивает мгновенный доступ со смартфонов и планшетов.

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

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

Рекомендуемый подход к миграции:

  1. Базу 1С 7.7 переводят в режим «только чтение» и сохраняют как исторический архив для получения информации по закрытым периодам.
  2. В конфигурации 1С 8.3 создается специализированный документ ВводНачальныхОстатков, который делает прямые движения в приход по регистрам остатков номенклатуры и взаиморасчетов.
  3. Из 7.7 в 8.3 переносятся только нормативно-справочная информация (справочники) и актуальные остатки на выбранную дату среза.

Способ 1. Использование конфигурации «Конвертация данных 2.1» (КД 2.1)

Использование специализированной конфигурации «Конвертация данных» — классический стандарт для обмена между различными поколениями платформ 1С. Важно учитывать выбор редакции: конфигурация «Конвертация данных 3.0» для работы с 7.7 не применяется, так как она базируется на формате EnterpriseData и компонентах БСП. Для переноса из 7.7 в 8.3 подходит исключительно «Конвертация данных 2.1».

Рассмотрим порядок настройки правил обмена:

  1. Выгрузка метаданных источника. В информационной базе 1С 7.7 запускается специализированная внешняя обработка MD77.ert (поставляется в каталоге шаблонов КД 2.1). В результате формируется XML-файл с описанием структуры объектов 7.7.
  2. Выгрузка метаданных приемника. В базе 1С 8.3 через «Файл — Открыть» запускается обработка MD83.epf, сохраняющая структуру метаданных приемника в отдельный XML-файл.
  3. Настройка правил конвертации. В базе КД 2.1 создается новая конвертация, куда загружаются оба файла метаданных. Создаются правила конвертации объектов (ПКО) для справочников. Поля сопоставляются вручную или по совпадению наименований. Для синхронизации элементов настраиваются поля поиска (обычно код или наименование).
  4. Выгрузка и загрузка данных. Готовые правила выгружаются в файл правил обмена .xml. В базе 1С 7.7 запускается универсальная обработка выгрузки V77Exp.ert, которая считывает данные согласно правилам и выгружает их в результирующий XML-файл. В базе 1С 8.3 файл загружается с помощью обработки V8Exchan83.epf (или типовой подсистемы универсального обмена).

Способ 2. Загрузка через табличные документы (Excel, CSV)

Если справочников мало, а структура реквизитов не содержит сложной периодики и подчиненных таблиц, разворачивать КД 2.1 не обязательно. Простейший и самый надежный способ заключается в выгрузке информации в табличные файлы.

  1. В 1С 7.7 формируются штатные отчеты по остаткам и стандартные списки справочников, после чего таблицы сохраняются через пункт меню «Таблица — Сохранить как» в формате XLS или текстовом CSV.
  2. В 1С 8.3 для загрузки используется универсальная обработка «Загрузка данных из табличного документа» (для управляемых форм) либо стандартная подсистема БСП «Загрузка данных из внешних файлов».
  3. В обработке визуально сопоставляются колонки Excel-файла с реквизитами созданных справочников и табличных частей документов ввода остатков, после чего данные загружаются нажатием одной кнопки.

Способ 3. Прямой перенос данных через COM-соединение

Для гибкого программного управления процессом переноса можно написать простую внешнюю обработку в 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 и последующая публикация готовой базы на веб-сервере для работы мобильных пользователей.

← На главную