Как перебросить справочник номенклатура из одной базы 1С в другую

Программист 1С v7.7 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

Перенос справочника Номенклатура — одна из наиболее частых задач, с которой сталкиваются администраторы и программисты 1С, особенно при разделении учета, переходе на новые версии или создании «чистых» баз. В данной статье мы подробно разберем, как решить эту задачу для платформ 1С 7.7 и 8.x, проанализируем основные инструменты и выясним, какие «подводные камни» могут встретиться в процессе.

Метод 1: Использование стандартных обработок с диска ИТС (для 1С 7.7)

Если вы работаете в версии 7.7, самым надежным способом будет использование стандартных инструментов, проверенных временем. Рассмотрим наиболее эффективные обработки:

  1. TRANREF.ERT — универсальная обработка для копирования справочников. Она позволяет переносить данные напрямую между базами или через промежуточный файл. Проанализируем важный нюанс: при выгрузке номенклатуры обязательно нужно отмечать все подчиненные справочники. В «Комплексной конфигурации» это Единицы, Цены, КатегорииТоваров и Свойства. Без них справочник в новой базе будет неполноценным.
  2. Export77.ert и Import77.ert — классическая пара обработок для выгрузки и загрузки данных. Они часто используются для синхронизации идентичных конфигураций.
  3. U_RefClon.ert — еще один полезный инструмент, который хорошо справляется с сохранением иерархии групп и поиском дублей по коду или наименованию.

Рассмотрим порядок действий при работе с TRANREF.ERT. Сначала запустим обработку в базе-источнике, выберем нужный справочник и укажем файл выгрузки. Затем в базе-приемнике запустим ту же обработку в режиме загрузки. Важный совет: всегда делайте архивную копию базы перед началом импорта.

Метод 2: Универсальные внешние обработки

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

Метод 3: Использование OLE и COM-объектов

Этот метод считается наиболее профессиональным, так как позволяет написать скрипт, который напрямую обращается к данным другой базы. Выясним, как это работает на примере кода. Мы создаем подключение к базе-источнику, перебираем элементы справочника и создаем их копии в текущей базе.

Посмотрим на пример логики переноса (для 1С 8.x):


// Пример упрощенного алгоритма подключения через COM
БазаИсточник = Новый COMОбъект("V83.COMConnector");
Соединение = БазаИсточник.Connect("File='C:\Base1';Usr='Admin';");

Запрос = Соединение.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ Ссылка, Наименование, Код ИЗ Справочник.Номенклатура";
Результат = Запрос.Выполниться().Выбрать();

Пока Результат.Следующий() Цикл
    НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
    НовыйЭлемент.Наименование = Результат.Наименование;
    НовыйЭлемент.Код = Результат.Код;
    // Здесь можно добавить поиск по коду, чтобы избежать дублей
    НовыйЭлемент.Записать();
КонецЦикла;

Рассмотрим преимущества этого способа: нам не нужно создавать промежуточные файлы XML или Excel. Мы можем в реальном времени сопоставлять данные и сразу записывать их в базу-приемник.

Метод 4: Конвертация данных (КД)

Если конфигурации баз различаются (например, вы переносите номенклатуру из «Торговля и Склад 7.7» в «Управление торговлей 11»), без конфигурации «Конвертация данных» не обойтись. Разберем по шагам этот процесс:

  1. Выгружаем описания структур обеих баз в XML.
  2. Загружаем их в КД и создаем правила обмена (ПКО).
  3. Настраиваем синхронизацию полей: например, реквизит ПолнНаименование в 7.7 должен попасть в НаименованиеПолное в 8.3.
  4. Генерируем файл правил и используем его в универсальной обработке выгрузки/загрузки XML.

Это самый мощный метод, который позволяет переносить даже периодические значения (цены) и сложные связи. Важно помнить: изучение КД требует времени, но полученный опыт окупится при любой сложной задаче обмена данными.

Опасные методы: Прямое копирование DBF-файлов

В среде 1С 7.7 часто встречается совет просто скопировать файл справочника (например, SC84.dbf). Проанализируем ситуацию: почему так делать нельзя?

Во-первых, идентификатор таблицы (число 84 в SC84) в разных базах может относиться к разным справочникам. В одной базе это может быть номенклатура, а в другой — контрагенты. Проверить это можно только в файле 1cv7.dd. Во-вторых, номенклатура в современных конфигурациях тесно связана с другими таблицами. Копирование одного файла приведет к потере единиц измерения, штрихкодов и налоговых ставок. В итоге вы получите «битую» базу, в которой невозможно будет провести ни одну накладную.

Особенности переноса для 1С 8.x

Если ваша задача касается версии 8.1, 8.2 или 8.3, обратите внимание на следующие инструменты:

Универсальный обмен данными в формате XML — стандартная обработка, входящая в состав многих типовых решений. Она позволяет переносить данные с сохранением уникальных идентификаторов (GUID). Это критично, если базы в будущем будут синхронизироваться: объекты с одинаковым GUID не будут дублироваться.

Рассмотрим также динамическое получение данных. Если вам не нужно физически копировать тысячи позиций, вы можете настроить внешние источники данных или использовать веб-сервисы (OData). Это позволит видеть номенклатуру удаленной базы так, будто она находится в текущей.

Резюме и практические советы

Подведем итоги нашего анализа:

Помните, что номенклатура — это не просто текст, это узел связей с ценами, остатками и единицами измерения. Тщательное планирование переноса и выбор правильного инструмента сэкономят вам часы ручного исправления ошибок в будущем.

← На главную