КД 2.0 Выгрузка по правилу, если заполнен реквизит

1. wladimirpav 2 11.11.22 11:54 Сейчас в теме
Задача следующая: нужно перенести справочник Номенклатура со следующим условием: если заполнен артикул в Источнике, то в приемнике ищем по правилу Артикул->Код, Иначе выгружается по обычному правилу. Сделал следующее: В ПКО Номенклатура ПередВыгрузкой написал:
Если ПустаяСтрока(Источник.Артикул) Тогда
	ИмяПКО = "Номенклатура";
Иначе
	ИмяПКО = "НоменклатураПоАртикулу";
КонецЕсли;

Все равно загружается новая номенклатура, даже если заполнен артикул. Подскажите, в какую сторону копать?
По теме из базы знаний
Найденные решения
14. user1203706 14 11.11.22 13:35 Сейчас в теме
в ПКС табличной части в ПриВыгрузке писать

Если ЗначениеЗаполнено(ОбъектКоллекции.Номенклатура.Артикул) Тогда
    ИмяПКО = "Номенклатура";
Иначе
    ИмяПКО = "НоменклатураПоАртикулу";
КонецЕсли;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Prikum 3 11.11.22 11:57 Сейчас в теме
(1)Может быть
Если ЗначениеЗаполнено(Источник.Артикул) Тогда
    ИмяПКО = "Номенклатура";
Иначе
    ИмяПКО = "НоменклатураПоАртикулу";
КонецЕсли;
4. beldieff 11.11.22 12:12 Сейчас в теме
(1) ВыгрузитьПоПравилу()
3. user1203706 14 11.11.22 12:10 Сейчас в теме
(1) проще в ПоляПоиска определить строку
5. wladimirpav 2 11.11.22 13:17 Сейчас в теме
6. wladimirpav 2 11.11.22 13:19 Сейчас в теме
(3) Поиск идет по внутреннему идентификатору
7. user1203706 14 11.11.22 13:20 Сейчас в теме
(6) если по внутреннему идентификатору, то о каком поиске по артикулу ты хочешь тогда ?
:)))
8. wladimirpav 2 11.11.22 13:22 Сейчас в теме
(7) Можно ли сделать так, чтобы при заполненном артикуле искало по нему, а если нет - то по внутреннему идентификатору?
9. user1203706 14 11.11.22 13:26 Сейчас в теме
(8) обычно наеборот, поиск по уиду, если не найден - по полям поиска.
Если как вам ннадо, то отключить галку поиска по внутреннему идентификатору, в ПоляПоиска вписать первым Артикул, вторым
получение ссылки из гуида, и если ссылка пустая, то объект не найден (тогда он новый элемент создаст)
10. user1203706 14 11.11.22 13:26 Сейчас в теме
сам гуид ссылки передать в параметр.
11. wladimirpav 2 11.11.22 13:27 Сейчас в теме
(9) А если 2 правила конвертации для объекта Номенклатура и в зависимости от того, заполнен ли артикул или нет, выбирать правило? Возможна такая реализация?
16. beldieff 11.11.22 13:45 Сейчас в теме
12. wladimirpav 2 11.11.22 13:30 Сейчас в теме
Либо такой вариант - после загрузки проверить, заполнен ли артикул (который передается в параметр) и подменить объект на нужный?
13. user1203706 14 11.11.22 13:32 Сейчас в теме
(11) возможно, написать 2 пко, и во всех местах пихать нужное имя ПКО + отключать
ТолькоПолучитьУзелСсылки = ложь; в перед выгрузкой номенклатуры
14. user1203706 14 11.11.22 13:35 Сейчас в теме
в ПКС табличной части в ПриВыгрузке писать

Если ЗначениеЗаполнено(ОбъектКоллекции.Номенклатура.Артикул) Тогда
    ИмяПКО = "Номенклатура";
Иначе
    ИмяПКО = "НоменклатураПоАртикулу";
КонецЕсли;
15. user1203706 14 11.11.22 13:41 Сейчас в теме
Или в самом ПКО номенклатура отключить галку по внутреннему ИД, а в поля поиска писать

Если НомерВариантаПоиска = 1 тогда
		СтрокаИменСвойствПоиска = "Артикул, ЭтоГруппа";
Иначе
       //по уиду или ищем в РС, или сразу лепим ссылку как Справочники.Номенклатура.ПолучитьССылку(Новый УникальныйИдентификатор(ПараметрыОбъекта.УИД)

  

	Запрос = Запросы.НайтиНоменклатуруПоПолямПоиска; //тут тупо текст запроса
	Запрос.УстановитьПараметр("УИД",ПараметрыОбъекта["УИД"]);

	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		ССылкаНаОбъект =  Выборка.Номенклатура;
		ПрекратитьПоиск  = Истина;
//		УстанавливатьУОбъектаВсеСвойстваПоиска =Ложь;
	КонецЕсли;
КонецЕсли;
Показать


сделать в ПКО параметр УИД, с галкой - поиск объекта, в Перед выгрузкой

Если Источник.Ссылка = Источник Тогда Значение = XMLСтрока(Источник); Иначе Значение = XMLСтрока(Источник.ССылка); КонецЕсли;
17. wladimirpav 2 11.11.22 13:51 Сейчас в теме
Оставьте свое сообщение

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