Перенос остатков между двумя базами 1С:Управление торговлей 11.4 — задача стандартная, но наличие серийного учета значительно усложняет процесс. Основная трудность заключается в том, что Серии являются подчиненным справочником, жестко связанным с Номенклатурой, и простое копирование данных через Excel часто приводит к потере связей и некорректному заполнению регистров. В данной статье мы разберем наиболее эффективные способы решения этой задачи, учитывая большой объем данных (до 150 Гб) и необходимость сохранения аналитики по сериям.
Прежде чем приступать к выгрузке и загрузке данных, проанализируем настройки целевой (пустой) базы. Если они не будут совпадать с исходной, документы просто не проведутся или не отобразят серийный учет.
ПолитикиУчетаСерий. Если в новой базе политика для вида номенклатуры будет отличаться (например, вместо «Учет по FEFO» будет стоять «Справочное указание серий»), то документ ВводНачальныхОстатков не позволит корректно заполнить табличную часть с сериями.ВидыНоменклатуры установлены идентичные флаги «Использовать серии». Эти настройки определяют доступность вкладок в документах и структуру хранения данных в регистрах.Номенклатура и Серии в обеих базах имели одинаковые уникальные идентификаторы (GUID). Это позволит избежать «дублей» и проблем с поиском владельца серии.Рассмотрим наиболее простой и надежный метод для идентичных конфигураций. Поскольку обе базы находятся на версии 11.4, мы можем использовать стандартную обработку ВыгрузкаЗагрузкаДанныхXML. Основное преимущество этого способа — автоматическое сохранение ссылочной целостности и GUID объектов.
Разберем процесс по шагам:
Номенклатура, ХарактеристикиНоменклатуры, СерииНоменклатуры, Склады.ВводНачальныхОстатков в целевой базе. Если справочники идентичны, мы можем выгрузить и сами документы ввода остатков, если они уже созданы в первой базе.Проанализируем ситуацию, когда необходимо перенести не все данные, а только актуальные остатки. В этом случае эффективнее использовать конфигурацию «Конвертация данных 2.1». Мы можем написать запрос к регистру накопления ТоварыНаСкладах, который соберет остатки в разрезе номенклатуры, характеристик, серий и складов, а затем сформирует на их основе документ ВводНачальныхОстатков в целевой базе.
Пример алгоритма в правилах выгрузки данных:
ВводНачальныхОстатков настраиваем сопоставление табличных частей Товары и ДанныеПоСериям (в зависимости от версии документа).Если мы решили использовать внешнюю обработку загрузки, разберем, как правильно заполнить документ ВводНачальныхОстатков программно. При работе с сериями важно учитывать, что они указываются в отдельной табличной части или в специальном окне распределения, но в программном коде это выглядит как заполнение связанных строк.
Посмотрим на пример кода для создания документа и заполнения его через ОбменДанными.Загрузка = Истина. Этот режим позволяет игнорировать лишние проверки и значительно ускоряет запись в базу объемом 150 Гб:
НовыйДок = Документы.ВводНачальныхОстатков.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковТоваров;
НовыйДок.Склад = СсылкаНаСклад;
НовыйДок.ОбменДанными.Загрузка = Истина;
НоваяСтрока = НовыйДок.Товары.Добавить();
НоваяСтрока.Номенклатура = СсылкаНаНоменклатуру;
НоваяСтрока.Количество = ОстатокИзФайла;
// Если политика учета серий предполагает указание в остатках:
НоваяСтрока.Серия = СсылкаНаСерию;
НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
Выясним причину, почему метод с Excel может быть опасен: при загрузке из таблицы легко потерять связь серии с конкретной номенклатурой, если поиск идет только по наименованию. Рекомендуем всегда использовать поиск по Артикул или GUID.
Работа с базой такого объема требует особого подхода к производительности. Рассмотрим рекомендации по ускорению переноса:
ВводНачальныхОстатков на 100 000 строк. База может «зависнуть» при проведении. Оптимально разделять документы по складам или группам номенклатуры (по 500-1000 строк в каждом).Подведем итог: главная сложность — это иерархическая связь Номенклатура -> Серия. Сначала мы должны обеспечить наличие идентичных справочников в обеих базах. Самым надежным способом остается XML-выгрузка с сохранением идентификаторов. После этого создание документов ввода остатков станет тривиальной задачей, так как ссылки на объекты будут корректными, и система без проблем проведет документы по регистру Товары на складах.