Перенос данных между существенного переписанными конфигурациями (например, переход с конфигурации на базе Управление торговлей 11.1 / Управление аптечной сетью 1.1 на редакцию 11.2 / 1.2) — одна из самых непростых задач автоматизации. Часто возникают вопросы: делать ли предварительную свёртку информационной базы, как переносить накопившуюся историю, дополнительные реквизиты и начальные остатки, а также как избежать расхождения в учете.
Рассмотрим пошагово оптимальную стратегию переноса, разберем потенциальные технические риски и оценим предложенные решения.
При переходе на новую редакцию переписанной системы у разработчиков часто возникает идея сначала сделать свёртку старой базы, а затем перегрузить полученные документы ввода остатков и справочники через «1С:Конвертация данных». Проанализируем, почему этот вариант содержит подводные камни:
Наиболее надежный и чистый подход заключается в разделении переноса на два независимых этапа: перенос справочной информации (НСИ) и ввод реальных фактических остатков.
1С:Конвертация данных 2.1 или по протоколу EnterpriseData. При этом дополнительные реквизиты и сведения Библиотеки Стандартных Подсистем (БСП) отлично выгружаются штатно через КД при правильной настройке ПКО и ПСР.Инвентаризация товаров на складе. Это позволяет зафиксировать реальный факт, визуализировать его в печатных формах и подписать у ответственных лиц до начала миграции.Ввод начальных остатков целевой конфигурации.Рассмотрим, как правильно организовать загрузку остатков через программный интерфейс целевой базы. Запись остатков прямо в регистры через НаборЗаписей крайне не рекомендуется, так как в современных конфигурациях при проведении документов Ввод начальных остатков автоматически формируются необходимые ключи аналитики.
Разберем пример кода обработки для программного создания документа ввода остатков товаров в целевой базе на базе 11.2:
// Создаем документ ввода остатков товаров
ДокументОстатков = Документы.ВводНачальныхОстатков.СоздатьДокумент();
ДокументОстатков.Дата = ДатаСрезаОстатков;
ДокументОстатков.Организация = СсылкаОрганизация;
ДокументОстатков.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковТоваров;
ДокументОстатков.ЗаполнениеОборудовано = Истина;
// Заполняем табличную часть товаров
СтрТовары = ДокументОстатков.Товары.Добавить();
СтрТовары.Номенклатура = СсылкаНоменклатура;
СтрТовары.Характеристика = СсылкаХарактеристика;
СтрТовары.Склад = СсылкаСклад;
СтрТовары.Количество = КоличествоФакт;
СтрТовары.Сумма = СуммаВал;
СтрТовары.СуммаРегл = СуммаРегл;
// Важно: в отраслевых решениях (например, Аптечная сеть) заполняем серии и ЖНВЛП
Если ВыбранныйВидНоменклатуры.ИспользоватьСерии Тогда
СтрТовары.Серия = СсылкаСерия;
КонецЕсли;
// Записываем и проводим документ через штатные механизмы
Попытка
ДокументОстатков.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("ПереносОстатков", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
При переносе данных между доработанными системами обратите внимание на следующие нюансы:
1. Лимиты памяти при выгрузке через XML:
Если выгружается большая история или обширные справочники с сериями и доп. реквизитами, стандартный обмен через файл XML в Конвертации данных 2.1 может приводить к ошибке Out of Memory. В таких случаях рекомендуем выгружать данные порциями или использовать обмен через HTTP-сервисы с передачей данных в формате JSON.
2. Отраслевые особенности (Серии и ЖНВЛП):
В конфигурациях аптечной сети политики учета серий и реквизиты ЖНВЛП тесно связаны с видами номенклатуры. Перед загрузкой остатков убедитесь, что в новой базе корректно настроены политики учета серий и перенесены регистры сведений с реестровыми ценами производителей.
3. Проблема переподписания остатков:
Запланируйте возможность повторного переноса остатков. На практике бизнес-пользователям редко удается с первого раза подбить реальные цифры без последующих правок. Использование документов Ввод начальных остатков позволяет легко перепроводить или перезагружать отдельные блоки данных без разрушения общей структуры базы.