Перенос справочника Номенклатура — одна из наиболее частых задач, с которой сталкиваются администраторы и программисты 1С, особенно при разделении учета, переходе на новые версии или создании «чистых» баз. В данной статье мы подробно разберем, как решить эту задачу для платформ 1С 7.7 и 8.x, проанализируем основные инструменты и выясним, какие «подводные камни» могут встретиться в процессе.
Если вы работаете в версии 7.7, самым надежным способом будет использование стандартных инструментов, проверенных временем. Рассмотрим наиболее эффективные обработки:
Единицы, Цены, КатегорииТоваров и Свойства. Без них справочник в новой базе будет неполноценным.Рассмотрим порядок действий при работе с TRANREF.ERT. Сначала запустим обработку в базе-источнике, выберем нужный справочник и укажем файл выгрузки. Затем в базе-приемнике запустим ту же обработку в режиме загрузки. Важный совет: всегда делайте архивную копию базы перед началом импорта.
Если стандартные средства кажутся сложными или не справляются с объемом, разберем альтернативные решения, созданные сообществом разработчиков:
ЗагрузкаДанныхИзТаблицы.ert (для 7.7) или ЗагрузкаДанныхИзТабличногоДокумента.epf (для 8.3).Этот метод считается наиболее профессиональным, так как позволяет написать скрипт, который напрямую обращается к данным другой базы. Выясним, как это работает на примере кода. Мы создаем подключение к базе-источнику, перебираем элементы справочника и создаем их копии в текущей базе.
Посмотрим на пример логики переноса (для 1С 8.x):
// Пример упрощенного алгоритма подключения через COM
БазаИсточник = Новый COMОбъект("V83.COMConnector");
Соединение = БазаИсточник.Connect("File='C:\Base1';Usr='Admin';");
Запрос = Соединение.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ Ссылка, Наименование, Код ИЗ Справочник.Номенклатура";
Результат = Запрос.Выполниться().Выбрать();
Пока Результат.Следующий() Цикл
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = Результат.Наименование;
НовыйЭлемент.Код = Результат.Код;
// Здесь можно добавить поиск по коду, чтобы избежать дублей
НовыйЭлемент.Записать();
КонецЦикла;
Рассмотрим преимущества этого способа: нам не нужно создавать промежуточные файлы XML или Excel. Мы можем в реальном времени сопоставлять данные и сразу записывать их в базу-приемник.
Если конфигурации баз различаются (например, вы переносите номенклатуру из «Торговля и Склад 7.7» в «Управление торговлей 11»), без конфигурации «Конвертация данных» не обойтись. Разберем по шагам этот процесс:
ПолнНаименование в 7.7 должен попасть в НаименованиеПолное в 8.3.Это самый мощный метод, который позволяет переносить даже периодические значения (цены) и сложные связи. Важно помнить: изучение КД требует времени, но полученный опыт окупится при любой сложной задаче обмена данными.
В среде 1С 7.7 часто встречается совет просто скопировать файл справочника (например, SC84.dbf). Проанализируем ситуацию: почему так делать нельзя?
Во-первых, идентификатор таблицы (число 84 в SC84) в разных базах может относиться к разным справочникам. В одной базе это может быть номенклатура, а в другой — контрагенты. Проверить это можно только в файле 1cv7.dd.
Во-вторых, номенклатура в современных конфигурациях тесно связана с другими таблицами. Копирование одного файла приведет к потере единиц измерения, штрихкодов и налоговых ставок. В итоге вы получите «битую» базу, в которой невозможно будет провести ни одну накладную.
Если ваша задача касается версии 8.1, 8.2 или 8.3, обратите внимание на следующие инструменты:
Универсальный обмен данными в формате XML — стандартная обработка, входящая в состав многих типовых решений. Она позволяет переносить данные с сохранением уникальных идентификаторов (GUID). Это критично, если базы в будущем будут синхронизироваться: объекты с одинаковым GUID не будут дублироваться.
Рассмотрим также динамическое получение данных. Если вам не нужно физически копировать тысячи позиций, вы можете настроить внешние источники данных или использовать веб-сервисы (OData). Это позволит видеть номенклатуру удаленной базы так, будто она находится в текущей.
Подведем итоги нашего анализа:
TRANREF.ERT или Universam.ert..dbf напрямую, если не уверены в полной идентичности структур и идентификаторов.Помните, что номенклатура — это не просто текст, это узел связей с ценами, остатками и единицами измерения. Тщательное планирование переноса и выбор правильного инструмента сэкономят вам часы ручного исправления ошибок в будущем.