УТ 10.3 Нужно перенести из одной базы в другую штрих-коды только для номенклатуры, которая присутствует в базе-приемник.

1. pentanom 25 08.07.20 21:07 Сейчас в теме
Есть две идентичные базы. Данные из одно с помощью КД периодически переносятся в другую. Хочется, чтобы вместе с номенклатурой переносились и штрих-коды, но только для той номенклатуры, которая присутствует в базе-приемник. Вероятно, что-то нужно написать в "Перед загрузкой", но я что-то туплю. Кто-то может подсказать?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. agata_v 08.07.20 22:28 Сейчас в теме
Все проще. В правилах конвертации объектов для Справочника Номенклатура в дополнительных настройках правил конвертации для загрузки данных нужно поставить галочку на не создавать новый объект в приемнике если он не найден.
3. pentanom 25 08.07.20 22:56 Сейчас в теме
(2)При этом новые элементы номенклатуры не будут создавать, а мне нужно, чтобы они создавались, если в источнике появится новая номенклатура. В настоящее время есть некоторые количество элементов справочника "Номенклатура", для которых в базе-приемник штрих-коды не установлены. Их нужно установить. Кроме того, и переносить новую номенклатуру.
4. Ivanov_OM 38 09.07.20 09:27 Сейчас в теме
В глобальном обработчике ПередВыгрузкойДанных пишешь:
МассивВладельцевШтрихкодов = Новый Массив;
Параметры.Вставить("МассивВладельцевШтрихкодов",МассивВладельцевШтрихкодов);

В ПКО Номенлатура в обработчике ПриВыгрузке пишешь:
Если Параметры.МассивВладельцевШтрихкодов.Найти(ВладелецШтрихкода) = Неопределено Тогда
	Параметры.МассивВладельцевШтрихкодов.Добавить(ВладелецШтрихкода);
КонецЕсли;	

В глобальном обработчике ПослеВыгрузкиДанных пишешь:
//Выгрузка регистра штрихкодов
Запрос = Новый Запрос;
Запрос.Текст = 
	"ВЫБРАТЬ
	|	Штрихкоды.Владелец,
	|	Штрихкоды.Штрихкод,
	|	Штрихкоды.ТипШтрихкода
	|ИЗ
	|	РегистрСведений.Штрихкоды КАК Штрихкоды
	|ГДЕ
	|	Штрихкоды.Владелец В(&МассивВладельцевШтрихкодов)";
Запрос.УстановитьПараметр("МассивВладельцевШтрихкодов", Параметры.МассивВладельцевШтрихкодов);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	ВыгрузитьПоПравилу(ВыборкаДетальныеЗаписи,,,,"Штрихкоды",,,,,);
КонецЦикла;
Показать

Должно быть создано ПКО "Штрихкоды" для регистра сведений "Штрихкоды"

В этом случае будут выгружаться только те штрихкоды, у которых владелец участвует в выгрузке.
6. pentanom 25 19.08.20 16:30 Сейчас в теме
(4) Попробовал и получил ошибку:
Ошибка в обработчике события ПриВыгрузкеОбъекта
ПКО = Номенклатура (Справочник: Номенклатура)
Объект = Solite 50 р 65B24R (Номенклатура)
Обработчик = ПриВыгрузкеОбъекта
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,49)}: Переменная не определена (ВладелецШтрихкода)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9652)
КодСообщения = 42

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1653)}: Ошибка в обработчике события ПриВыгрузкеОбъекта
ПКО = Номенклатура (Справочник: Номенклатура)
Объект = Solite 50 р 65B24R (Номенклатура)
Обработчик = ПриВыгрузкеОбъекта
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,49)}: Переменная не определена (ВладелецШтрихкода)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9652)
КодСообщения = 42
Показать
5. agata_v 09.07.20 10:02 Сейчас в теме
Вы же написали "но только для той номенклатуры, которая присутствует в базе-приемник", поэтому я так и посоветовала Вам. Если Вам нужно переносить штрих-коды только для той номенклатуры, у которой не заполнено значение штрих-кода, то нужно в правилах по штрих-кодам поставить флажок на не замещать существующие объекты в приемнике, а только создавать новые и заполнять их.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот