Перенос номенклатуры между базами 1С:Предприятие — одна из самых частых задач при миграции данных, объединении компаний или переходе на новую конфигурацию. Ошибки на этом этапе могут привести к дублированию товаров, потере связей с документами или некорректной аналитике. Эта статья поможет избежать типичных проблем и выбрать оптимальный способ переноса в зависимости от вашей ситуации.

Сложность процесса зависит от объема данных, версий конфигураций и требований к сохранности истории. Например, перенос между идентичными базами 1С:УТ 11.5 займет меньше времени, чем миграция из 1С:Бухгалтерии 2.0 в 1С:ERP 2.5. Мы рассмотрим все актуальные методы — от ручного экспорта до автоматизированных обработок, а также разберем нюансы, о которых не пишут в стандартных инструкциях.

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

═══

1. Подготовка к переносу: что нужно сделать до начала

Неприятные сюрпризы во время переноса номенклатуры обычно возникают из-за недостаточной подготовки. Прежде чем приступать к техническим манипуляциям, выполните обязательные шаги:

Аудит исходных данных — проверьте базу-источник на наличие:

  • 🔹 Дублирующихся элементов номенклатуры (с одинаковыми наименованиями или артикулами)
  • 🔹 Пустых или некорректных полей (например, отсутствие единиц измерения)
  • 🔹 Архивных позиций, которые не нужно переносить
  • 🔹 Ссылок на удаленные объекты (может вызвать ошибки при выгрузке)

Используйте отчет Анализ заполнения справочников (доступен в большинстве конфигураций) или напишите простой запрос:

ВЫБРАТЬ

Номенклатура.Ссылка КАК Ссылка,

Номенклатура.Наименование КАК Наименование

ИЗ

Справочник.Номенклатура КАК Номенклатура

ГДЕ

НЕ Номенклатура.ЭтоГруппа

И (Номенклатура.Артикул = "" ИЛИ Номенклатура.ЕдиницаИзмерения.Ссылка = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.Штука))

Синхронизация справочников — убедитесь, что в базе-приемнике существуют все необходимые классификаторы:

  • 📦 Группы номенклатуры (структура должна совпадать или быть совместимой)
  • ⚖️ Единицы измерения (особенно если используются нестандартные)
  • 🏷️ Виды номенклатуры (товар, услуга, комплектующие и т.д.)
  • 📊 Дополнительные реквизиты (если они критичны для бизнес-процессов)

Сделать резервную копию обеих баз|Проверить права доступа пользователя|Очистить кэш 1С на всех рабочих станциях|Согласовать дату переноса с бухгалтерией|Подготовить тестовую среду для проверки-->

2. Способ 1: Ручной экспорт/импорт через Excel

Самый простой метод, подходящий для небольших справочников (до 500 позиций). Не требует программирования, но имеет ограничения по объему и структуре данных.

Пошаговая инструкция:

  1. В базе-источнике откройте справочник Номенклатура (меню Справочники → Товары и услуги → Номенклатура)
  2. Нажмите Еще → Выгрузить в Excel (или Файл → Экспорт в старых версиях)
  3. В появившемся окне выберите все необходимые колонки:
    • 📌 Наименование (обязательно)
    • 📌 Артикул (критично для сопоставления)
    • 📌 Единица измерения
    • 📌 Группа номенклатуры (путь к группе)
    • 📌 Виды номенклатуры (если используются)
  • Сохраните файл в формате .xlsx или .csv
  • В базе-приемнике импортируйте файл через Еще → Загрузить из Excel
  • Критическая особенность: При импорте создаст новые элементы, но не свяжет их с историей документов из старой базы. Этот способ подходит только для первичного заполнения справочника, а не для миграции с сохранением связей.

    До 100 позиций|100-1000 позиций|1000-10000 позиций|Более 10000 позиций-->

    3. Способ 2: Универсальный формат обмена данными (XML)

    Более надежный метод, позволяющий переносить не только справочники, но и связанные документы. Использует встроенный в механизм обмена через XML-файлы.

    Преимущества метода:

    • 🔄 Сохраняет иерархию групп номенклатуры
    • 🔗 Поддерживает связи с другими справочниками (единицы измерения, виды номенклатуры)
    • 📤 Можно выгружать частями (по группам или диапазонам)
    • 🔄 Подходит для регулярного обмена между базами

    Инструкция по настройке:

    1. В базе-источнике перейдите в Администрирование → Обмен данными → Универсальный обмен данными
    2. Создайте новый обмен с типом XML-файл
    3. В настройках укажите:
      • 📁 Каталог для выгрузки файлов
      • 📋 Объекты для обмена: отметьте Справочник.Номенклатура
      • 🔄 Направление: Выгрузка
  • Запустите выгрузку кнопкой Выполнить обмен
  • В базе-приемнике настройте аналогичный обмен с направлением Загрузка и укажите путь к выгруженным файлам
  • Для сложных конфигураций (например, 1С:ERP) может потребоваться доработка правил обмена. В этом случае используйте Конвертацию данных 2.0/3.0 (рассмотрено в следующем разделе).

    Параметр Excel XML Конвертация данных
    Макс. объем данных До 500 позиций До 50 000 позиций Неограниченно
    Сохранение связей ❌ Нет ⚠️ Частично ✅ Полностью
    Требует программирования ❌ Нет ❌ Нет ✅ Да
    Подходит для регулярного обмена ❌ Нет ✅ Да ✅ Да
    💡

    Если при загрузке XML возникает ошибка "Не найден объект", проверьте соответствие идентификаторов справочников в обеих базах. Часто проблема решается предварительной выгрузкой классификаторов (групп номенклатуры, единиц измерения).

    4. Способ 3: Конвертация данных 2.0/3.0 для сложных миграций

    Самый мощный инструмент для переноса данных между разными конфигурациями . Позволяет настраивать правила преобразования полей, обрабатывать большие объемы данных и сохранять историю документов.

    Когда использовать:

    • 🔄 Перенос между разными конфигурациями (например, из 1С:УТ 10.3 в 1С:ERP 2.5)
    • 📊 Необходимо сохранить историю документов (заказы, реализации)
    • 🔧 Требуется трансформация структуры данных (изменение видов номенклатуры, групп)
    • 📦 Объем номенклатуры превышает 10 000 позиций

    Пошаговая настройка:

    1. Установите обработку Конвертация данных (доступна в дистрибутиве или на портале 1С:ИТС)
    2. Создайте новую конфигурацию обмена:
      • 📥 Укажите базу-источник и базу-приемник
      • 📋 Выберите объекты для переноса: Справочник.Номенклатура, Документ.УстановкаЦенНоменклатуры и т.д.
      • ⚙️ Настройте правила соответствия полей (например, сопоставление видов номенклатуры)
  • Запустите тестовую выгрузку на небольшом сегменте данных (100-200 позиций)
  • Проверьте результаты в базе-приемнике, особое внимание уделите:
    • 🔹 Корректности иерархии групп
    • 🔹 Сохранности артикулов и штрихкодов
    • 🔹 Связям с документами (если переносили историю)

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

    Процедура ВыгрузитьГруппуНоменклатуры(Группа)
    

    Обмен = КонвертацияДанных.СоздатьОбмен();

    Обмен.Источник = БазаИсточник;

    Обмен.Приемник = БазаПриемник;

    Правило = Обмен.Правила.НайтиПоИмени("Номенклатура");

    Правило.Отбор.Добавить("Родитель", ЗначениеЗаполнено(Группа));

    Обмен.Выполнить();

    КонецПроцедуры

    Что делать если конвертация прерывается с ошибкой "Превышен лимит памяти"?

    Эта ошибка typична при работе с большими объемами данных (более 50 000 позиций). Решения:

    1. Разбейте выгрузку на части по группам номенклатуры

    2. Увеличьте лимит памяти в параметрах запуска 1С (файл 1CEStart.cfg, параметр /M)

    3. Используйте 64-разрядную версию платформы 1С

    4. Выгружайте данные на диск, а не напрямую в базу-приемник

    5. Способ 4: Обмен через веб-сервисы (для распределенных баз)

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

    Требования к инфраструктуре:

    • 🌐 Статический IP-адрес или доменное имя для сервера обмена
    • 🔒 SSL-сертификат для защищенного соединения
    • 📡 Стабильное интернет-соединение (рекомендуемая скорость от 10 Мбит/с)
    • 🖥️ Сервер 1С:Предприятие версии не ниже 8.3.10

    Настройка обмена:

    1. В базе-приемнике опубликуйте веб-сервис:
      • 📌 Перейдите в Администрирование → Публикация на веб-сервере
      • 📌 Укажите имя сервиса (например, DataExchangeService)
      • 📌 Настройте аутентификацию (рекомендуется Basic Auth с логином/паролем)
  • В базе-источнике настройте план обмена:
    ПланОбмена = ПланыОбмена.СоздатьПланОбмена();
    

    ПланОбмена.Наименование = "ОбменНоменклатурой";

    ПланОбмена.АвтоРегистрация = Истина;

    ПланОбмена.ИспользоватьВебСервисы = Истина;

    ПланОбмена.AдресВебСервиса = "https://your-server.ru/DataExchangeService/ws?wsdl";

    ПланОбмена.Записать();

  • Создайте правила обмена для справочника Номенклатура:
    • 🔹 Укажите соответствие полей между базами
    • 🔹 Настройте обработку конфликтов (например, "Приемник главнее")
    • 🔹 Задайте расписание автоматического обмена

    Для мониторинга обмена используйте журнал регистрации (Администрирование → Журнал регистрации). Обратите внимание на события с типом ОбменДанными — они содержат информацию об ошибках синхронизации.

    💡

    Веб-сервисы обеспечивают самую высокую степень автоматизации, но требуют квалифицированной настройки безопасности. Всегда используйте HTTPS и ограничивайте доступ по IP-адресам.

    6. Способ 5: Прямой перенос через SQL (для опытных пользователей)

    Метод для администраторов, владеющих языком SQL и имеющих доступ к серверу . Позволяет переносить данные на уровне базы, минуя бизнес-логику , что значительно ускоряет процесс для больших объемов.

    Предупреждения перед использованием:

    ⚠️ Внимание: Прямая работа с SQL обходит механизмы контроля целостности . Ошибки в запросах могут привести к повреждению данных. Всегда тестируйте запросы на копии базы!

    Основные таблицы для переноса номенклатуры:

    • 📋 _Reference{ID} — основные данные справочника
    • 🔗 _Reference{ID}_VT{ID} — таблицы дополнительных реквизитов
    • 📦 _Reference{ID}_Tree — иерархия групп

    Пример запроса для переноса номенклатуры из базы SourceDB в TargetDB:

    -- 1. Перенос групп номенклатуры
    

    INSERT INTO TargetDB.dbo._Reference123_Tree (Parent, Item)

    SELECT Parent, Item FROM SourceDB.dbo._Reference123_Tree

    -- 2. Перенос элементов номенклатуры

    INSERT INTO TargetDB.dbo._Reference123 (ID, Description, Code, Parent, IsFolder)

    SELECT ID, Description, Code, Parent, IsFolder

    FROM SourceDB.dbo._Reference123

    WHERE IsFolder = 0 -- Только элементы, без групп

    -- 3. Перенос дополнительных реквизитов (пример для артикула)

    INSERT INTO TargetDB.dbo._Reference123_VT10001 (Reference123_ID, Value)

    SELECT Reference123_ID, Value

    FROM SourceDB.dbo._Reference123_VT10001

    После переноса данных обязательно выполните:

    1. Проверку целостности ссылок: ТЕСТИРОВАНИЕ И ИСПРАВЛЕНИЕ в конфигураторе
    2. Обновление индексов: ДБФ.ОбновитьИндексы()
    3. Пересчет итогов: ПересчитатьИтогиПоРегистрам()
    💡

    Для ускорения переноса больших справочников (более 100 000 позиций) используйте пакетный перенос данными порциями по 10 000 записей с транзакциями.

    7. Типичные ошибки и как их избежать

    Даже при тщательной подготовке перенос номенклатуры может столкнуться с проблемами. Вот наиболее распространенные ошибки и способы их решения:

    Проблема 1: Дублирование номенклатуры

    • 🔹 Причина: В базе-приемнике уже существуют элементы с такими же наименованиями или артикулами
    • 🔹 Решение:
      • Перед переносом выполните очистку дублей обработкой Поиск и замена дублей
      • Используйте правило обмена "Объединять по артикулу"
      • Для критичных случаев напишите обработку, которая добавляет префикс к дублирующимся позициям

    Проблема 2: Потеря связей с документами

    • 🔹 Причина: Перенос номенклатуры без связанных документов (заказов, реализаций)
    • 🔹 Решение:
      • Всегда переносите документы вместе с номенклатурой (используйте Конвертацию данных)
      • Для восстановления связей используйте обработку Поиск и восстановление ссылок
      • Проверяйте целостность ссылок отчетом Анализ ссылочной целостности

    Проблема 3: Ошибки конвертации единиц измерения

    ⚠️ Внимание: Если в базе-приемнике отсутствует единица измерения из базы-источника, перенос завершится с ошибкой. Всегда сначала синхронизируйте справочник ЕдиницыИзмерения!

    Проблема 4: Превышение лимитов памяти

    • 🔹 Причина: Большой объем данных (более 50 000 позиций) при ограниченных ресурсах сервера
    • 🔹 Решение:
      • Разбейте перенос на части (по группам номенклатуры)
      • Используйте 64-разрядную версию платформы
      • Увеличьте параметр /M в файле запуска (например, /M1024)

    Проблема 5: Несовпадение версий конфигураций

    • 🔹 Причина: Перенос между сильно отличающимися версиями (например, 1С:УТ 10.31С:ERP 2.5)
    • 🔹 Решение:
      • Используйте Конвертацию данных 3.0 с адаптерами для разных конфигураций
      • Создайте промежуточную базу с совместимой конфигурацией
      • Обратитесь к партнерам за специализированными обработками

    8. Проверка результатов и постобработка

    После переноса номенклатуры критически важно проверить корректность данных и устранить возможные несоответствия. Используйте этот чек-лист для контроля качества:

    1. Проверка целостности данных:

    • 🔹 Сверьте количество позиций в базе-источнике и базе-приемнике
    • 🔹 Проверьте сохранность иерархии групп (отчет Структура номенклатуры)
    • 🔹 Убедитесь в корректности артикулов и штрихкодов (отчет Контроль уникальности)

    2. Тестирование бизнес-процессов:

    • 🔹 Создайте тестовые документы (заказ клиента, реализация) с перенесенной номенклатурой
    • 🔹 Проверьте печатные формы (счета, накладные) на корректность отображения
    • 🔹 Убедитесь в работоспособности отчетов (оборотно-сальдовая ведомость по товарам)

    3. Автоматизированные проверки:

    Используйте эти запросы для выявления проблем:

    -- 1. Поиск номенклатуры без артикулов
    

    ВЫБРАТЬ

    Номенклатура.Ссылка КАК Ссылка,

    Номенклатура.Наименование КАК Наименование

    ИЗ

    Справочник.Номенклатура КАК Номенклатура

    ГДЕ

    НЕ Номенклатура.ЭтоГруппа

    И Номенклатура.Артикул = ""

    -- 2. Поиск дублирующихся артикулов

    ВЫБРАТЬ

    Номенклатура.Артикул КАК Артикул,

    КОЛИЧЕСТВО(*) КАК Количество

    ИЗ

    Справочник.Номенклатура КАК Номенклатура

    ГДЕ

    НЕ Номенклатура.ЭтоГруппа

    СГРУППИРОВАТЬ ПО

    Номенклатура.Артикул

    ИМЕЮЩИЕ

    КОЛИЧЕСТВО(*) > 1

    4. Документирование изменений:

    • 📝 Составьте отчет о переносе с указанием:
      • Дата и время переноса
      • Количество перенесенных позиций
      • Выявленные и устраненные ошибки
      • Рекомендации по дальнейшей работе
    💡

    После переноса обязательно обновите кэш метаданных на всех рабочих станциях (меню "Файл → Обновить"). Это предотвратит ошибки отображения новых элементов номенклатуры.

    ═══ FAQ ═══

    Можно ли перенести номенклатуру между базами разных версий платформы 1С (например, 8.2 и 8.3)?

    Да, но с оговорками. Платформа 1С 8.2 не поддерживает форматы обмена, используемые в 8.3. Вам потребуется:

    1. Выгрузить данные из 8.2 в промежуточный формат (например, XML или CSV)
    2. Преобразовать данные с учетом изменений структуры метаданных
    3. Загрузить в 8.3 с использованием Конвертации данных или Загрузки из Excel

    Для сложных случаев рекомендуется использовать специализированные обработки, например, "Универсальный обмен данными в формате XML" от фирмы .

    Как перенести не только номенклатуру, но и остатки по товарам?

    Для переноса остатков вместе с номенклатурой:

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

      Что делать, если после переноса в отчетах не отображается номенклатура?

      Проблема обычно связана с одним из факторов:

      1. Не обновлен кэш метаданных — на рабочих станциях выполните Файл → Обновить
      2. Несовпадение прав доступа — проверьте права пользователя на новый справочник номенклатуры
      3. Ошибки в иерархии групп — запустите обработку Проверка и восстановление иерархии справочников
      4. Некорректные настройки отчетов — проверьте отборы по организации или складу в настройках отчета

      Если проблема сохраняется, проверьте журнал регистрации на наличие ошибок типа Не найден объект.

      Как перенести номенклатуру вместе с картинками и файлами?

      Для переноса файлов (изображений, технических паспортов и т.д.), прикрепленных к номенклатуре:

      1. Выгрузите файлы из базы-источника:
        • Используйте обработку ВыгрузкаЗначенийРеквизитов для извлечения двоичных данных
        • Или вручную скопируйте файлы из каталога хранения вложений (обычно ...\1C\v8\data\files)
    • Перенесите файлы в каталог базы-приемника
    • Настройте обмен данными с включением реквизита Картинка или Файлы:
      Правило = Обмен.Правила.НайтиПоИмени("Номенклатура");
      

      Правило.ДобавитьРеквизит("Картинка",