Как оптимально перенести данные между сильно доработанными конфигурациями 1С

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

Перенос данных между существенного переписанными конфигурациями (например, переход с конфигурации на базе Управление торговлей 11.1 / Управление аптечной сетью 1.1 на редакцию 11.2 / 1.2) — одна из самых непростых задач автоматизации. Часто возникают вопросы: делать ли предварительную свёртку информационной базы, как переносить накопившуюся историю, дополнительные реквизиты и начальные остатки, а также как избежать расхождения в учете.

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

Анализ проблемы и оценка свёртки старой базы

При переходе на новую редакцию переписанной системы у разработчиков часто возникает идея сначала сделать свёртку старой базы, а затем перегрузить полученные документы ввода остатков и справочники через «1С:Конвертация данных». Проанализируем, почему этот вариант содержит подводные камни:

  1. Большие трудозатраты без явной выгоды. Процедура свёртки в сильно доработанных конфигурациях неизбежно сталкивается с ошибками проведения старых документов, некорректными движениями и «зависшими» остатками. Выправление этих данных ради получения документов ввода остатков в старой базе отнимает слишком много времени.
  2. Проблемы при поиске исторических данных. Если после свёртки в новой или старой базе обнаружатся некорректные цифры, пользователям всё равно придется обращаться к архивной копии до свёртки, чтобы найти первопричину.
  3. Архитектурные различия версий. При переходе между редакциями (например, 11.1 и 11.2) кардинально меняются механизмы учета. Изменяются структуры партионного учета, ключи аналитики учета номенклатуры и расчетов, а также правила ведения серийных политик. Простой перенос сформированных старой свёрткой движений и документов вызовет ошибки при расчете себестоимости и формировании отчетов в новой базе.

Оптимальный алгоритм переноса данных

Наиболее надежный и чистый подход заключается в разделении переноса на два независимых этапа: перенос справочной информации (НСИ) и ввод реальных фактических остатков.

  1. Перенос справочников и дополнительных реквизитов. Справочники (номенклатура, контрагенты, организации, склады и т. д.) переносятся с помощью правил обмена в 1С:Конвертация данных 2.1 или по протоколу EnterpriseData. При этом дополнительные реквизиты и сведения Библиотеки Стандартных Подсистем (БСП) отлично выгружаются штатно через КД при правильной настройке ПКО и ПСР.
  2. Проведение инвентаризации в старой базе. Для товарного учета в исходной базе создаются документы Инвентаризация товаров на складе. Это позволяет зафиксировать реальный факт, визуализировать его в печатных формах и подписать у ответственных лиц до начала миграции.
  3. Перенос остатков взаиморасчетов и товаров. Сформированные документы инвентаризации и сверки взаиморасчетов конвертируются в документы Ввод начальных остатков целевой конфигурации.

Техническая реализация выгрузки и загрузки остатков

Рассмотрим, как правильно организовать загрузку остатков через программный интерфейс целевой базы. Запись остатков прямо в регистры через НаборЗаписей крайне не рекомендуется, так как в современных конфигурациях при проведении документов Ввод начальных остатков автоматически формируются необходимые ключи аналитики.

Разберем пример кода обработки для программного создания документа ввода остатков товаров в целевой базе на базе 11.2:


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

// Заполняем табличную часть товаров
СтрТовары = ДокументОстатков.Товары.Добавить();
СтрТовары.Номенклатура = СсылкаНоменклатура;
СтрТовары.Характеристика = СсылкаХарактеристика;
СтрТовары.Склад = СсылкаСклад;
СтрТовары.Количество = КоличествоФакт;
СтрТовары.Сумма = СуммаВал;
СтрТовары.СуммаРегл = СуммаРегл;

// Важно: в отраслевых решениях (например, Аптечная сеть) заполняем серии и ЖНВЛП
Если ВыбранныйВидНоменклатуры.ИспользоватьСерии Тогда
    СтрТовары.Серия = СсылкаСерия;
КонецЕсли;

// Записываем и проводим документ через штатные механизмы
Попытка
    ДокументОстатков.Записать(РежимЗаписиДокумента.Проведение);
Исключение
    ЗаписьЖурналаРегистрации("ПереносОстатков", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;

Особенности работы с большими объемами данных и отраслевыми функциями

При переносе данных между доработанными системами обратите внимание на следующие нюансы:

1. Лимиты памяти при выгрузке через XML:
Если выгружается большая история или обширные справочники с сериями и доп. реквизитами, стандартный обмен через файл XML в Конвертации данных 2.1 может приводить к ошибке Out of Memory. В таких случаях рекомендуем выгружать данные порциями или использовать обмен через HTTP-сервисы с передачей данных в формате JSON.

2. Отраслевые особенности (Серии и ЖНВЛП):
В конфигурациях аптечной сети политики учета серий и реквизиты ЖНВЛП тесно связаны с видами номенклатуры. Перед загрузкой остатков убедитесь, что в новой базе корректно настроены политики учета серий и перенесены регистры сведений с реестровыми ценами производителей.

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

← На главную