Как исправить некорректный перенос и задвоение справочника ЕдиницыИзмерения при конвертации данных в УТ 10.3?

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

При настройке правил обмена в конфигурации 1С:Конвертация данных часто возникает проблема с переносом справочника ЕдиницыИзмерения и связанного с ним КлассификатораЕдиницИзмерения (ОКЕИ) в конфигурацию 1С:Управление торговлей 10.3. Симптомы проблемы могут быть разными: реквизит ЕдиницаПоКлассификатору остается незаполненным, элементы классификатора дублируются (например, создается код «0796» при наличии «796»), либо элементы справочника единиц измерения задваиваются при загрузке.

Рассмотрим подробно причины возникновения таких ошибок и разберем по шагам, как правильно настроить правила конвертации объектов (ПКО) для корректного переноса единиц измерения.

Выясняем причины проблемы

Проанализируем ситуацию: почему происходит задвоение и некорректный поиск элементов?

  1. Разная длина кода в классификаторе ОКЕИ. В базе-источнике код единицы измерения может иметь длину 3 символа (например, 796 для штуки), а в приемнике (УТ 10.3) длина кода справочника КлассификаторЕдиницИзмерения равна 4 символам (0796). Из-за этого стандартный поиск по коду не находит существующий элемент и создает дубль.
  2. Ошибки в обработчиках событий. Использование переопределения строки поиска через СтрокаИмёнСвойствПоиска или нестандартный код в обработчиках «Поля поиска» и «Перед выгрузкой» часто ломает стандартный механизм поиска платформы.
  3. Специфика подчиненности справочника. Справочник ЕдиницыИзмерения в УТ 10.3 является подчиненным справочнику Номенклатура (реквизит Владелец). Поиск элемента без учета владельца приводит к дублированию или ошибкам записи.

Шаг 1. Настройка ПКО для Классификатора единиц измерения

Первым делом проанализируем настройку правила для объекта КлассификаторЕдиницИзмерения. Классификатор должен сопоставляться по коду, однако из-за различия в длине кодов между базами необходимо задействовать механизм нормализации длины.

  1. Откроем ПКО для классификатора единиц измерения.
  2. В правилах конвертации свойств (ПКС) для реквизита Код установим флаг «Поиск».
  3. В настройках свойства поиска включим флаг «Привести к длине». Это позволит программе автоматически дополнять короткие коды (например, 796) ведущими нулями до требуемой длины приемника (0796).

Если по каким-то причинам стандартная галка не срабатывает, разберем программный способ нормализации кода через обработчик «Поля поиска» в ПКО классификатора:


Если СвойстваПоиска.Свойство("Код") И ЗначениеЗаполнено(СвойстваПоиска["Код"]) Тогда
    СвойстваПоиска.Вставить("Код", Формат(Число(СвойстваПоиска["Код"]), "ЧЦ=4; ЧВН=; ЧГ=0"));
КонецЕсли;

Шаг 2. Настройка полей поиска для справочника ЕдиницыИзмерения

Перейдем к настройке ПКО для подчиненного справочника ЕдиницыИзмерения. Чтобы элементы не задваивались и корректно привязывались к владельцу, разберем правильную комбинацию полей поиска:

  1. В ПКО ЕдиницыИзмерения установим флаг «Поиск» для следующих реквизитов:
    • Владелец (ссылка на номенклатуру);
    • ЕдиницаПоКлассификатору (или Наименование).
  2. Очистим все лишние обработчики событий (в частности, удалим программное присвоение СтрокаИмёнСвойствПоиска), так как они перебивают настройки полей поиска, заданные в интерактивном режиме.
  3. В настройках ПКО подчиненного справочника рекомендуется установить флаг «Не замещать объекты при загрузке», чтобы исключить перезапись коэффициентов и других параметров при повторных переносах.

Шаг 3. Выгрузка единиц измерения вместе с Номенклатурой

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

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


Выборка = Справочники.ЕдиницыИзмерения.Выбрать(, Источник);
Пока Выборка.Следующий() Цикл
    ВыгрузитьПоПравилу(Выборка.Ссылка, , , , "ЕдиницыИзмерения");
КонецЦикла;

Шаг 4. Проверка ключевых реквизитов в приемнике (УТ 10.3)

Для корректного проведения документов и работы партионного учета в 1С:Управление торговлей 10.3 проверьте, чтобы у перенесенных элементов справочника ЕдиницыИзмерения были обязательно заполнены следующие свойства:

Соблюдение этих правил позволит полностью избавиться от дублей классификатора ОКЕИ и обеспечить целостность данных при загрузке в УТ 10.3.

← На главную