Переход с УТ 10.3 на УТ 11: что делать, если типовой перенос данных не работает?

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

Переход с конфигурации «Управление торговлей», редакция 10.3 (работающей на обычных формах) на современную «Управление торговлей», редакция 11 (на управляемых формах) — это масштабная задача, с которой сталкивается практически каждый программист 1С. Очень часто при попытке выполнить перенос стандартным способом (через выгрузку данных во внешний XML-файл с использованием типовой обработки) процесс завершается ошибками совместимости схем данных. Особенно остро эта проблема проявляется, когда релиз источника и релиз приемника сильно различаются по времени выпуска.

В этой статье мы подробно разберем, почему ломается типовой механизм переноса данных, как обойти эти ограничения без ручного переписывания сотен строк XML-кода, и какую стратегию перехода выбрать для получения гарантированно корректного результата.

Почему не работает типовой переход по правилам 1С?

Основная причина сбоев кроется в рассинхронизации релизов. Разработчики фирмы 1С создают правила переноса под конкретные пары релизов «Источник-Приемник». Если вы пытаетесь выполнить выгрузку из давно не обновлявшейся базы УТ 10.3 в самый свежий релиз УТ 11, метаданные конфигураций гарантированно не совпадут. Программа начнет выдавать ошибки о несуществующих реквизитах, пропущенных типах или неверной структуре XML-файла.

Кроме того, в современных релизах УТ 11.5 кардинально изменились механизмы ведения учета. Например, полностью переработана архитектура комиссионной торговли (документы теперь работают по иным регистрам накопления) и изменен партионный учет. Прямой перенос остатков в такие конфигурации стандартными обработками практически невозможен.

---

Стратегия 1. Двухэтапный («транзитный») перенос данных

Рассмотрим наиболее надежный и проверенный на практике сценарий обхода проблемы несовместимости правил без привлечения программы «Конвертация данных».

Вместо того чтобы пытаться загрузить данные напрямую в актуальный релиз УТ 11, мы выполним перенос в промежуточную («транзитную») базу более старого релиза, а затем последовательно обновим ее до нужной версии.

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

  1. Выясняем, для какого именно релиза УТ 11 предназначены правила выгрузки, идущие в комплекте с вашим текущим релизом УТ 10.3. Эту информацию можно найти в файле совместного использования или в описании к обновлению.
  2. Разворачиваем чистую базу УТ 11 именно того старого релиза, под который гарантированно написаны правила (например, линейки 11.3.4 или ранних релизов 11.4).
  3. Выполняем стандартный перенос справочников и остатков в эту «транзитную» базу. На данном этапе перенос должен пройти без ошибок, так как структуры метаданных полностью соответствуют правилам обмена.
  4. Тщательно проверяем корректность загруженных данных: сверяем остатки по складам, взаиморасчеты с контрагентами и структуру справочника номенклатуры.
  5. После успешной проверки обновляем базу-приемник стандартным путем через поддержку (последовательно накатывая обновления конфигурации) до необходимого актуального релиза. Платформа 1С самостоятельно и корректно реструктурирует данные при обновлении, избавив нас от ручной правки XML.

---

Стратегия 2. Корректировка правил через «Конвертацию данных 2.0»

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

Для этого нам понадобится конфигурация «Конвертация данных 2.0» (КД 2). Давайте разберем, где взять исходные правила и как с ними работать:

---

Обязательная подготовка базы-источника (УТ 10.3) перед выгрузкой

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

1. Полное удаление помеченных на удаление объектов. Если в базе останутся ссылки на удаленные элементы, правила обмена все равно попытаются их выгрузить. В результате в новой базе УТ 11 вы получите огромное количество «битых» ссылок с наименованием вида <Объект не найден>....

Для качественной очистки базы можно воспользоваться следующим программным кодом для поиска и удаления помеченных объектов:


// Программный поиск и удаление помеченных объектов в УТ 10.3
МассивПомеченных = Новый Массив;
ВыборкаНоменклатуры = Справочники.Номенклатура.Выбрать();
Пока ВыборкаНоменклатуры.Следующий() Цикл
    Если ВыборкаНоменклатуры.ПометкаУдаления Тогда
        МассивПомеченных.Добавить(ВыборкаНоменклатуры.Ссылка);
    КонецЕсли;
КонецЦикла;

// Выполняем попытку удаления объектов с контролем ссылочной целостности
ТаблицаСвязей = НайтиПоСсылкам(МассивПомеченных);
Если ТаблицаСвязей.Количество() = 0 Тогда
    УдалитьОбъекты(МассивПомеченных, Истина);
    Сообщить("Успешно удалено объектов: " + МассивПомеченных.Количество());
Иначе
    Сообщить("Некоторые объекты не могут быть удалены, так как на них есть ссылки в базе!");
КонецЕсли;

2. Проверка заполнения ключевых реквизитов. Убедитесь, что у всех контрагентов заполнены ИНН/КПП, а у номенклатуры присутствуют базовые единицы измерения. Проанализируем базу на предмет незаполненных критических реквизитов с помощью простого запроса:


// Запрос для выявления незаполненных реквизитов контрагентов
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Контрагенты.Ссылка КАК Контрагент,
    |	Контрагенты.Код КАК Код
    |ИЗ
    |	Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |	(Контрагенты.ИНН = """" ИЛИ Контрагенты.ИНН ИСЛУЛЛ)
    |	И Контрагенты.ЭтоГруппа = ЛОЖЬ";

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить("Ошибка заполнения данных: у контрагента " + Выборка.Контрагент + " (Код: " + Выборка.Код + ") отсутствует ИНН!");
    КонецЦикла;
КонецЕсли;

3. Восстановление последовательности партионного учета. Если вы планируете переносить остатки товаров, в УТ 10.3 обязательно должно быть выполнено полное перепроведение документов и расчет себестоимости. В противном случае остатки по регистрам партий не сойдутся с остатками по регистру товаров на складах, и выгрузка сформирует некорректные документы ввода остатков.

---

Предварительная настройка базы-приемника (УТ 11)

Очень распространенная техническая ошибка: загрузка XML-файла прерывается аварийно с системным сообщением Поле объекта не обнаружено (НалогообложениеНДС) или аналогичным сбоем при записи соглашений или договоров контрагентов.

Выясним причину этой проблемы. В конфигурации УТ 11 огромное количество реквизитов и табличных частей доступно для записи только тогда, когда в системе включены соответствующие функциональные опции. Если в чистой базе-приемнике эти опции выключены по умолчанию, то при попытке записи объектов через правила обмена платформа физически не видит эти реквизиты, что и приводит к падению загрузчика.

Перед тем как запускать загрузку данных из XML, обязательно откройте базу-приемник УТ 11 и вручную включите в разделе НСИ и администрирование -> Настройка разделов следующие опции (в зависимости от того, что использовалось в вашей УТ 10.3):

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

← На главную