Как перенести справочники номенклатуры и контрагентов из 1С:УТ 11 в 1С:ТиС 7.7?

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

Перенос данных из современной конфигурации «1С:Управление торговлей 11» обратно в «1С:Торговля и Склад 7.7» — задача нестандартная, но периодически возникающая на практике. Главная сложность такого переноса заключается в существенной разнице архитектуры платформ и структур данных: в УТ 11 реализована сложная объектная модель с раздельным учетом партнеров и контрагентов, упаковок, наборов единиц и характеристик, в то время как в ТиС 9.2 структура справочников является более плоской и компактной.

Рассмотрим основные архитектурные различия, технические ограничения, а также разберем по шагам три проверенных способа переноса нормативно-справочной информации (НСИ).

Архитектурные различия и предварительный анализ данных

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

  1. Модель контрагентов: В УТ 11 разделены управленческие сущности (справочник Партнеры) и юридические лица (справочник Контрагенты). В ТиС 7.7 сущность только одна — справочник Контрагенты. При переносе необходимо сопоставлять юридические лица УТ 11 с контрагентами ТиС, перенося наименование партнера в рабочее наименование, а официальное название — в полное наименование.
  2. Единицы измерения: В УТ 11 используются справочники УпаковкиЕдиницыИзмерения и НаборыУпаковок с классификатором КлассификаторБанковскихЕдиниц (ОКЕИ). В ТиС 7.7 у каждой номенклатуры задается базовая единица (реквизит типа Справочник.ОКЕИ), а все остальные единицы хранятся в подчиненном справочнике Единицы с коэффициентами пересчета относительно базовой.
  3. Контактная информация: В УТ 11 адреса, телефоны и email хранятся в табличной части КонтактнаяИнформация. В ТиС 7.7 контактные данные располагаются в строковых и периодических реквизитах (ЮрАдрес, ФактАдрес, Телефоны).
  4. Характеристики: В типовой ТиС 7.7 учет по характеристикам в разрезе отдельных единиц складского учета отсутствует. Если в УТ 11 номенклатура велась в разрезе характеристик, потребуется либо создавать под каждую пару «номенклатура + характеристика» отдельный элемент в ТиС 7.7, либо схлопывать данные.
  5. Ограничения реквизитов: Обратим внимание на длину полей. По умолчанию длина кода и артикула в ТиС 7.7 строго ограничена (код номенклатуры обычно составляет 9 символов). Слишком длинные коды из УТ 11 будут обрезаны, что может нарушить уникальность.

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

Наиболее универсальным и гибким способом переноса является разработка правил обмена в конфигурации «Конвертация данных 2.1». Данный инструмент поддерживает выгрузку данных из платформы 1С:Предприятие 8 в формат XML и загрузку в платформу 1С:Предприятие 7.7.

Разберем процесс настройки по шагам:

  1. Выгрузка метаданных: Выгружаем структуру метаданных из УТ 11 с помощью внешней обработки MD83Exp.epf (или аналогичной для вашей версии платформы) и структуру ТиС 7.7 с помощью обработки MD77Exp.ert.
  2. Загрузка описания метаданных в КД 2.1: Создаем новую конвертацию, указав конфигурацию-источник (УТ 11) и конфигурацию-приемник (ТиС 7.7).
  3. Настройка ПКО для Номенклатуры: Создаем правило конвертации объекта (ПКО) Номенклатура. Настраиваем правила конвертации свойств (ПКС) для полей Код, Артикул, Наименование, ПолнНаименование. В обработчиках событий («После загрузки» или «Перед выгрузкой») прописываем поиск и сопоставление базовой единицы измерения по коду ОКЕИ.
  4. Настройка ПКО для Контрагентов: Создаем ПКО для справочника Контрагенты. В качестве источника указываем справочник Контрагенты из УТ 11. Настраиваем синхронизацию по полям ИНН и КПП, а также перенос контактных данных из табличной части в плоские реквизиты приемника.
  5. Сохранение и выгрузка: Сохраняем правила в файл XML. В УТ 11 запускаем обработку УниверсальныйОбменДаннымиXML и формируем файл выгрузки данных.
  6. Загрузка в ТиС 7.7: В базе 1С 7.7 открываем внешнюю обработку V77Imp.ert, выбираем полученный файл данных и выполняем загрузку.

Способ 2. Выгрузка и загрузка через табличные документы (Excel) или файлы DBF

Если требуется перенести только базовый состав полей без сложной подчиненной структуры, наиболее быстрым решением является перегрузка через промежуточный плоский файл (табличный документ Excel или формат DBF).

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

  1. Выгрузка из УТ 11: С помощью отчета на СКД, консоли запросов или простой внешней обработки выгружаем плоскую таблицу со списком номенклатуры или контрагентов в файл Excel. Обязательно выгружаем иерархию (родительские группы), чтобы сохранить дерево каталога в приемнике.
  2. Подготовка файла: Проверяем формат колонок: наименование, артикул, код, ставка НДС, базовая единица измерения, ИНН/КПП для контрагентов.
  3. Загрузка в ТиС 7.7: Используем типовую или универсальную обработку загрузки справочников из Excel/DBF для 1С 7.7. Обработка последовательно создает группы номенклатуры, затем элементы, привязывая базовую единицу измерения из классификатора ОКЕИ и создавая подчиненный элемент в справочнике Единицы с коэффициентом 1.

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

Для прямого переноса без создания промежуточных файлов можно написать обработку на стороне 1С:Предприятия 8, которая напрямую подключается к базе 1С 7.7 через COM-объект V77.Application или V77S.Application.

Важное техническое ограничение: Платформа 1С 7.7 является 32-разрядным приложением. Прямое создание COM-объекта V77.Application завершится ошибкой, если вы запускаете код в 64-разрядном клиенте или на 64-разрядном сервере 1С 8. Запуск обработки переноса необходимо выполнять строго в 32-разрядном толстом или тонком клиенте 1С:Предприятия 8.

Посмотрим на пример программного кода для выгрузки номенклатуры через COM-объект:


// Инициализация подключения к базе 1С 7.7
База77 = Новый COMОбъект("V77.Application");
КаталогБазы77 = "C:\Bases\Tis77\";
Пользователь = "Администратор";
Пароль = "";

ПараметрыПодключения = База77.Initialize(База77.RMTrade, "/D""" + КаталогБазы77 + """ /N""" + Пользователь + """ /P""" + Пароль + """", "NO_SPLASH_SHOW");
Если Не ПараметрыПодключения Тогда
    ВызватьИсключение "Не удалось подключиться к базе 1С 7.7!";
КонецЕсли;

// Выборка номенклатуры из УТ 11
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Номенклатура.Наименование КАК Наименование,
    |	Номенклатура.Артикул КАК Артикул,
    |	Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
    |	Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдиницаНаименование
    |ИЗ
    |	Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |	НЕ Номенклатура.ПометкаУдаления";

Выборка = Запрос.Выполнить().Выбрать();

СпрНом77 = База77.CreateObject("Справочник.Номенклатура");
СпрОКЕИ77 = База77.CreateObject("Справочник.ОКЕИ");

Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
        СпрНом77.НоваяГруппа();
        СпрНом77.Наименование = Выборка.Наименование;
        СпрНом77.Записать();
    Иначе
        СпрНом77.Новый();
        СпрНом77.Наименование = Выборка.Наименование;
        СпрНом77.Артикул = Выборка.Артикул;
        
        // Поиск базовой единицы в 7.7
        Если СпрОКЕИ77.НайтиПоНаименованию(Выборка.ЕдиницаНаименование, 0, 1) = 1 Тогда
            СпрНом77.БазоваяЕдиница = СпрОКЕИ77.ТекущийЭлемент();
        КонецЕсли;
        
        СпрНом77.Записать();
    КонецЕсли;
КонецЦикла;

Рекомендации по выполнению переноса

  1. Кодировка и спецсимволы: База 1С 7.7 работает в кодировке Windows-1251 (ANSI). Перед загрузкой очищайте строковые реквизиты от непечатных знаков Unicode и спецсимволов, которые могут вызвать сбои при чтении данных.
  2. Договоры контрагентов: В ТиС 7.7 для проведения торговых документов обязательно требуется хотя бы один договор у каждого контрагента. При переносе контрагентов сразу создавайте основной договор по умолчанию.
  3. Иерархия справочников: При программном переносе или загрузке сначала переносите группы справочников, сохраняя соответствие родительских элементов, и только затем загружайте элементы.
← На главную