При настройке правил обмена в конфигурации 1С:Конвертация данных часто возникает проблема с переносом справочника ЕдиницыИзмерения и связанного с ним КлассификатораЕдиницИзмерения (ОКЕИ) в конфигурацию 1С:Управление торговлей 10.3. Симптомы проблемы могут быть разными: реквизит ЕдиницаПоКлассификатору остается незаполненным, элементы классификатора дублируются (например, создается код «0796» при наличии «796»), либо элементы справочника единиц измерения задваиваются при загрузке.
Рассмотрим подробно причины возникновения таких ошибок и разберем по шагам, как правильно настроить правила конвертации объектов (ПКО) для корректного переноса единиц измерения.
Проанализируем ситуацию: почему происходит задвоение и некорректный поиск элементов?
796 для штуки), а в приемнике (УТ 10.3) длина кода справочника КлассификаторЕдиницИзмерения равна 4 символам (0796). Из-за этого стандартный поиск по коду не находит существующий элемент и создает дубль.СтрокаИмёнСвойствПоиска или нестандартный код в обработчиках «Поля поиска» и «Перед выгрузкой» часто ломает стандартный механизм поиска платформы.ЕдиницыИзмерения в УТ 10.3 является подчиненным справочнику Номенклатура (реквизит Владелец). Поиск элемента без учета владельца приводит к дублированию или ошибкам записи.Первым делом проанализируем настройку правила для объекта КлассификаторЕдиницИзмерения. Классификатор должен сопоставляться по коду, однако из-за различия в длине кодов между базами необходимо задействовать механизм нормализации длины.
Код установим флаг «Поиск».796) ведущими нулями до требуемой длины приемника (0796).Если по каким-то причинам стандартная галка не срабатывает, разберем программный способ нормализации кода через обработчик «Поля поиска» в ПКО классификатора:
Если СвойстваПоиска.Свойство("Код") И ЗначениеЗаполнено(СвойстваПоиска["Код"]) Тогда
СвойстваПоиска.Вставить("Код", Формат(Число(СвойстваПоиска["Код"]), "ЧЦ=4; ЧВН=; ЧГ=0"));
КонецЕсли;
Перейдем к настройке ПКО для подчиненного справочника ЕдиницыИзмерения. Чтобы элементы не задваивались и корректно привязывались к владельцу, разберем правильную комбинацию полей поиска:
ЕдиницыИзмерения установим флаг «Поиск» для следующих реквизитов:
Владелец (ссылка на номенклатуру);ЕдиницаПоКлассификатору (или Наименование).СтрокаИмёнСвойствПоиска), так как они перебивают настройки полей поиска, заданные в интерактивном режиме.В большинстве сценариев единицы измерения не должны выгружаться как самостоятельный независимый справочник. Их целесообразно переносить в контексте самой номенклатуры.
Посмотрим на пример кода, который можно использовать в ПКО Номенклатура в обработчике «После выгрузки» или «При выгрузке» для явного переноса всех связанных единиц измерения:
Выборка = Справочники.ЕдиницыИзмерения.Выбрать(, Источник);
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка.Ссылка, , , , "ЕдиницыИзмерения");
КонецЦикла;
Для корректного проведения документов и работы партионного учета в 1С:Управление торговлей 10.3 проверьте, чтобы у перенесенных элементов справочника ЕдиницыИзмерения были обязательно заполнены следующие свойства:
Коэффициент — для базовой единицы всегда должен быть равен 1. Если коэффициент перенесется равным 0, при проведении документов возникнут ошибки деления на ноль.ЕдиницаПоКлассификатору — заполненная ссылка на элемент КлассификаторЕдиницИзмерения.Владелец — ссылка на соответствующую номенклатуру.Соблюдение этих правил позволит полностью избавиться от дублей классификатора ОКЕИ и обеспечить целостность данных при загрузке в УТ 10.3.