УТ 10.3 Нужно перенести из одной базы в другую штрих-коды только для номенклатуры, которая присутствует в базе-приемник.
Есть две идентичные базы. Данные из одно с помощью КД периодически переносятся в другую. Хочется, чтобы вместе с номенклатурой переносились и штрих-коды, но только для той номенклатуры, которая присутствует в базе-приемник. Вероятно, что-то нужно написать в "Перед загрузкой", но я что-то туплю. Кто-то может подсказать?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Все проще. В правилах конвертации объектов для Справочника Номенклатура в дополнительных настройках правил конвертации для загрузки данных нужно поставить галочку на не создавать новый объект в приемнике если он не найден.
(2)При этом новые элементы номенклатуры не будут создавать, а мне нужно, чтобы они создавались, если в источнике появится новая номенклатура. В настоящее время есть некоторые количество элементов справочника "Номенклатура", для которых в базе-приемник штрих-коды не установлены. Их нужно установить. Кроме того, и переносить новую номенклатуру.
В глобальном обработчике ПередВыгрузкойДанных пишешь:
В ПКО Номенлатура в обработчике ПриВыгрузке пишешь:
В глобальном обработчике ПослеВыгрузкиДанных пишешь:
Должно быть создано ПКО "Штрихкоды" для регистра сведений "Штрихкоды"
В этом случае будут выгружаться только те штрихкоды, у которых владелец участвует в выгрузке.
МассивВладельцевШтрихкодов = Новый Массив;
Параметры.Вставить("МассивВладельцевШтрихкодов",МассивВладельцевШтрихкодов);
В ПКО Номенлатура в обработчике ПриВыгрузке пишешь:
Если Параметры.МассивВладельцевШтрихкодов.Найти(ВладелецШтрихкода) = Неопределено Тогда
Параметры.МассивВладельцевШтрихкодов.Добавить(ВладелецШтрихкода);
КонецЕсли;
В глобальном обработчике ПослеВыгрузкиДанных пишешь:
//Выгрузка регистра штрихкодов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Владелец,
| Штрихкоды.Штрихкод,
| Штрихкоды.ТипШтрихкода
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Владелец В(&МассивВладельцевШтрихкодов)";
Запрос.УстановитьПараметр("МассивВладельцевШтрихкодов", Параметры.МассивВладельцевШтрихкодов);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ВыгрузитьПоПравилу(ВыборкаДетальныеЗаписи,,,,"Штрихкоды",,,,,);
КонецЦикла;
ПоказатьДолжно быть создано ПКО "Штрихкоды" для регистра сведений "Штрихкоды"
В этом случае будут выгружаться только те штрихкоды, у которых владелец участвует в выгрузке.
(4) Попробовал и получил ошибку:
Ошибка в обработчике события ПриВыгрузкеОбъекта
ПКО = Номенклатура (Справочник: Номенклатура)
Объект = Solite 50 р 65B24R (Номенклатура)
Обработчик = ПриВыгрузкеОбъекта
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,49)}: Переменная не определена (ВладелецШтрихкода)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9652)
КодСообщения = 42
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1653)}: Ошибка в обработчике события ПриВыгрузкеОбъекта
ПКО = Номенклатура (Справочник: Номенклатура)
Объект = Solite 50 р 65B24R (Номенклатура)
Обработчик = ПриВыгрузкеОбъекта
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,49)}: Переменная не определена (ВладелецШтрихкода)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9652)
КодСообщения = 42
ПоказатьПКО = Номенклатура (Справочник: Номенклатура)
Объект = Solite 50 р 65B24R (Номенклатура)
Обработчик = ПриВыгрузкеОбъекта
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,49)}: Переменная не определена (ВладелецШтрихкода)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9652)
КодСообщения = 42
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1653)}: Ошибка в обработчике события ПриВыгрузкеОбъекта
ПКО = Номенклатура (Справочник: Номенклатура)
Объект = Solite 50 р 65B24R (Номенклатура)
Обработчик = ПриВыгрузкеОбъекта
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,49)}: Переменная не определена (ВладелецШтрихкода)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9652)
КодСообщения = 42
Вы же написали "но только для той номенклатуры, которая присутствует в базе-приемник", поэтому я так и посоветовала Вам. Если Вам нужно переносить штрих-коды только для той номенклатуры, у которой не заполнено значение штрих-кода, то нужно в правилах по штрих-кодам поставить флажок на не замещать существующие объекты в приемнике, а только создавать новые и заполнять их.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот