Имя: Пароль:
1C
1С v8
Поля поиска в КД2 и параметр с флагом поиска
0 zippygrill
 
29.04.19
10:49
Всем привет!
Хочу настроить поля поиска справочника Номенклатура исходя из такой ситуации:
Код источника мне не нужен, т.е. на стороне приемника будет свой код и поэтому такой ПКС у меня нет (к сожалению в источнике справочник с префиксом, а в приемнике (УПП), без и ломается нумерация справочника), но для старых позиций, нужен поиск как раз по коду.  В справке по КД написано что для новых объектов, значения из СвойствахОбъекта будут использоваться для заполнения.

Если передать Источник.Код в параметр "Пар_Код" и установить флаг поиска, в событии ПоляПоиска сработает что-то подобное (см. условие Иначе)?

Если НомерВариантаПоиска = 1 тогда

СтрокаИменСвойствПоиска = "Артикул, Наименование";

ИначеЕсли НомерВариантаПоиска = 2 тогда

СтрокаИменСвойствПоиска = "Наименование";

Иначе

СтрокаИменСвойствПоиска = "Пар_Код"; //Вот здесь будет имя моего параметра

КонецЕсли;

Т.е. мне сначала по ИД искать надо(флаг Искать по ИД в ПКО стоит), потом Артикул+Наименование, потом Наименованию, потом Код.
1 zippygrill
 
29.04.19
11:12
апну
2 Вафель
 
29.04.19
11:17
где будет  храниться значение Пар_Код?
или ты хранить не хочешь, но искать по нему хочешь?
3 zippygrill
 
29.04.19
11:25
(2) как где - в параметре
4 Вафель
 
29.04.19
11:25
В базе приемнике где
5 alexshape
 
29.04.19
11:30
в разделе иначе, запили свой запрос по базе, типа найти в справочнике номенклатура где код равен твоему параметру, и запиши в переменную "СсылкаНаОбъект", наведенный элемент. Ну и для надежности можешь еще "ПрекратитьПоиск" установить в истину, (хотя необязательно)
6 zippygrill
 
29.04.19
11:36
(5) Кстати да, можно применить такой вариант в Если
7 zippygrill
 
29.04.19
11:39
(5) А ПрекратитьПоиск вне конструкции Если Иначе КонецЕсли или в ветку Если?
8 alexshape
 
29.04.19
11:40
(7) что значит в ветку если? так ты имеешь ввиду?

Если ПрекратитьПоиск тогда
и т.д?
9 zippygrill
 
29.04.19
11:44
(8) Пока так.


Если НомерВариантаПоиска = 1 тогда
    
    СтрокаИменСвойствПоиска = "Артикул, Наименование";
    
ИначеЕсли НомерВариантаПоиска = 2 тогда
    
    СтрокаИменСвойствПоиска = "КодPDM";
    
ИначеЕсли НомерВариантаПоиска = 3 тогда
    
    СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
    
Иначе
    
    СсылкаНаОбъект = Справочники.Номенклатура.НайтиПоКоду(ПараметрыОбъекта.Получить("Пар_Код"));
    
КонецЕсли;
ПрекратитьПоиск = Истина;
10 alexshape
 
29.04.19
11:47
(9) если ты засунешь ПрекратитьПоиск вне конструкции если, то у тебя уже после первого выполнения программа больше не будет пытаться искать элемент, и НомерВариантаПоиска  = 2 ты не увидишь.

Из справки:
ПрекратитьПоиск - булево. Если Истина, то поиск объекта прекращается, в зависимости от того СсылкаНаОбъект заполнена или нет создается новый объект.
11 zippygrill
 
29.04.19
12:43
(10) Да, спасибо!