|
Поля поиска в КД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) Да, спасибо!
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший