Как заполнить значения пустых реквизитов, сохранив заполненные реквизиты, у существующих элементов справочника?
Есть справочник "Номенклатура", в котором уже есть частично заполненные элементы. Мне нужно перенести определенные реквизиты элементов справочника "Номенклатура" из другой конфигурации так, чтобы сохранились уже существующие данные элементов и заполнились ранее пустые реквизиты.
Как такое провернуть?
Как такое провернуть?
По теме из базы знаний
- Универсальный редактор реквизитов объектов. Мультиобработчик
- Заполняем по шаблону (по умолчанию)
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Создание справочников "Номенклатура" и "Номенклатура поставщика" из внешнего файла, электронной таблицы с заполнением табличной части "Товары" документов закупки (ERP 2.4, 2.5, КА 2.4, 2.5, УТ 11)
- КД 2: у выгружаемого свойства объекта заполняются только поля поиска и не отрабатывают обработчики ПКО
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
подключаемся по оле
смотрим в текущей
если не ЗначениеЗаполнено(Реквизит) тогда
Реквизит=РеквизитОЛЕ.Реквизит;
КонецЕсли;
но...
это для примитивных типов
для других, например если реквизит типа справочникСсылка, то сначала в тек. нужно найти соотв. реквизит по реквизиту ОЛЕ
например найтиПоКоду
а вообще не совсем конкретный вопрос.
Что именно не получается?
смотрим в текущей
если не ЗначениеЗаполнено(Реквизит) тогда
Реквизит=РеквизитОЛЕ.Реквизит;
КонецЕсли;
но...
это для примитивных типов
для других, например если реквизит типа справочникСсылка, то сначала в тек. нужно найти соотв. реквизит по реквизиту ОЛЕ
например найтиПоКоду
а вообще не совсем конкретный вопрос.
Что именно не получается?
Думаю надо создавать правило выгрузки и правило конвертации, где в "ПослеЗагрузки" писать:
Отказ = Истина;
НайденныйЭлемент = НайтиЭлемент(...);
заполнитьЗначенияСвойств(НайденныйЭлемент, Объект);
НайденныйЭлемент.Записать();
Для будущих поколений (правило конвертации объекта, "ПослеЗагрузки"):
Где у правила конвертации объекта созданы свойства Артикул, Наименование, Комментарий, СтатьяЗатрат, НоменклатурнаяГруппа, НоменклатурнаяГруппаЗатрат (которые конвертируются по соответствующим правилам). Поэтому в "После загрузки" виртуальный объект заполнен и из него можно получать данные.
Отказ = Истина;
СтруктураПоиска = Новый Структура("Артикул, Наименование, НаименованиеРодителя");
СтруктураПоиска.Артикул = Объект.Артикул;
СтруктураПоиска.Наименование = Объект.Наименование;
СтруктураПоиска.НаименованиеРодителя = Объект.Комментарий;
МассивСтрок = Параметры.ТзНоменклатуры.НайтиСтроки(СтруктураПоиска);
Если МассивСтрок.Количество() = 0 Тогда
возврат;
КонецЕсли;
//добавим нужные реквизиты
НайденныйОбъект = МассивСтрок[0].Ссылка.ПолучитьОбъект();
НайденныйОбъект.СтатьяЗатрат = Объект.СтатьяЗатрат;
НайденныйОбъект.НоменклатурнаяГруппа = Объект.НоменклатурнаяГруппа;
НайденныйОбъект.НоменклатурнаяГруппаЗатрат = Объект.НоменклатурнаяГруппаЗатрат;
НайденныйОбъект.Записать();
ПоказатьГде у правила конвертации объекта созданы свойства Артикул, Наименование, Комментарий, СтатьяЗатрат, НоменклатурнаяГруппа, НоменклатурнаяГруппаЗатрат (которые конвертируются по соответствующим правилам). Поэтому в "После загрузки" виртуальный объект заполнен и из него можно получать данные.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот