Как перенести остатки товаров по сериям между двумя базами 1С:УТ 11.4?

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

Перенос остатков между двумя базами 1С:Управление торговлей 11.4 — задача стандартная, но наличие серийного учета значительно усложняет процесс. Основная трудность заключается в том, что Серии являются подчиненным справочником, жестко связанным с Номенклатурой, и простое копирование данных через Excel часто приводит к потере связей и некорректному заполнению регистров. В данной статье мы разберем наиболее эффективные способы решения этой задачи, учитывая большой объем данных (до 150 Гб) и необходимость сохранения аналитики по сериям.

Важные технические настройки перед началом переноса

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

  1. Политики учета серий: Это критический момент. В УТ 11 настройки учета серий задаются в справочнике ПолитикиУчетаСерий. Если в новой базе политика для вида номенклатуры будет отличаться (например, вместо «Учет по FEFO» будет стоять «Справочное указание серий»), то документ ВводНачальныхОстатков не позволит корректно заполнить табличную часть с сериями.
  2. Виды номенклатуры: Убедимся, что в справочнике ВидыНоменклатуры установлены идентичные флаги «Использовать серии». Эти настройки определяют доступность вкладок в документах и структуру хранения данных в регистрах.
  3. Соответствие GUID: Для корректной работы серий крайне желательно, чтобы Номенклатура и Серии в обеих базах имели одинаковые уникальные идентификаторы (GUID). Это позволит избежать «дублей» и проблем с поиском владельца серии.

Способ 1: Универсальная обработка «Выгрузка и загрузка данных XML»

Рассмотрим наиболее простой и надежный метод для идентичных конфигураций. Поскольку обе базы находятся на версии 11.4, мы можем использовать стандартную обработку ВыгрузкаЗагрузкаДанныхXML. Основное преимущество этого способа — автоматическое сохранение ссылочной целостности и GUID объектов.

Разберем процесс по шагам:

  1. Запускаем обработку в исходной базе.
  2. Выбираем необходимые справочники: Номенклатура, ХарактеристикиНоменклатуры, СерииНоменклатуры, Склады.
  3. Важно: серии должны переноситься вместе с владельцем (номенклатурой).
  4. После переноса справочников приступаем к формированию документов ВводНачальныхОстатков в целевой базе. Если справочники идентичны, мы можем выгрузить и сами документы ввода остатков, если они уже созданы в первой базе.

Способ 2: Использование «Конвертации данных»

Проанализируем ситуацию, когда необходимо перенести не все данные, а только актуальные остатки. В этом случае эффективнее использовать конфигурацию «Конвертация данных 2.1». Мы можем написать запрос к регистру накопления ТоварыНаСкладах, который соберет остатки в разрезе номенклатуры, характеристик, серий и складов, а затем сформирует на их основе документ ВводНачальныхОстатков в целевой базе.

Пример алгоритма в правилах выгрузки данных:

  1. Создаем запрос к остаткам регистра.
  2. Выгружаем результат в таблицу значений.
  3. Передаем эту таблицу в параметры выгрузки или напрямую в ПВД (Правила выгрузки данных) для создания документа.
  4. В правилах конвертации объектов (ПКО) для документа ВводНачальныхОстатков настраиваем сопоставление табличных частей Товары и ДанныеПоСериям (в зависимости от версии документа).

Способ 3: Программное заполнение через COM-соединение или Excel

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

Посмотрим на пример кода для создания документа и заполнения его через ОбменДанными.Загрузка = Истина. Этот режим позволяет игнорировать лишние проверки и значительно ускоряет запись в базу объемом 150 Гб:


НовыйДок = Документы.ВводНачальныхОстатков.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковТоваров;
НовыйДок.Склад = СсылкаНаСклад;
НовыйДок.ОбменДанными.Загрузка = Истина;

НоваяСтрока = НовыйДок.Товары.Добавить();
НоваяСтрока.Номенклатура = СсылкаНаНоменклатуру;
НоваяСтрока.Количество = ОстатокИзФайла;

// Если политика учета серий предполагает указание в остатках:
НоваяСтрока.Серия = СсылкаНаСерию; 

НовыйДок.Записать(РежимЗаписиДокумента.Проведение);

Выясним причину, почему метод с Excel может быть опасен: при загрузке из таблицы легко потерять связь серии с конкретной номенклатурой, если поиск идет только по наименованию. Рекомендуем всегда использовать поиск по Артикул или GUID.

Оптимизация процесса для больших объемов (150 Гб)

Работа с базой такого объема требует особого подхода к производительности. Рассмотрим рекомендации по ускорению переноса:

  1. Порционная выгрузка: Не пытайтесь создать один документ ВводНачальныхОстатков на 100 000 строк. База может «зависнуть» при проведении. Оптимально разделять документы по складам или группам номенклатуры (по 500-1000 строк в каждом).
  2. Отключение итогов: Перед массовой загрузкой документов можно временно отключить режим разделения итогов для регистров, что ускорит запись.
  3. Прямое копирование табличных частей: В современных версиях платформы 8.3 можно использовать стандартную возможность «Скопировать строки» — «Вставить строки». Если вы уже перенесли справочники (и GUID совпадают), можно просто открыть две базы, выделить строки в документе одной базы и вставить их в документ другой базы. Это на удивление быстро работает для средних объемов данных.

Резюме по работе с сериями

Подведем итог: главная сложность — это иерархическая связь Номенклатура -> Серия. Сначала мы должны обеспечить наличие идентичных справочников в обеих базах. Самым надежным способом остается XML-выгрузка с сохранением идентификаторов. После этого создание документов ввода остатков станет тривиальной задачей, так как ссылки на объекты будут корректными, и система без проблем проведет документы по регистру Товары на складах.

← На главную