|
КД: Поиск объектов | ☑ | ||
---|---|---|---|---|
0
varyag
08.07.14
✎
07:40
|
Здравствуйте!
вопрос возможно глупый, но только что столкнулся с такой проблемой: в правилах поиск номенклатуры происходит так: Если СвойстваПоиска["ЭтоГруппа"] Тогда СтрокаИменСвойствПоиска = "Родитель,Наименование,ЭтоГруппа"; Иначе Если НомерВариантаПоиска = 1 тогда СтрокаИменСвойствПоиска = "Артикул"; ИначеЕсли НомерВариантаПоиска = 2 тогда СтрокаИменСвойствПоиска = "Артикул, Наименование"; КонецЕсли; КонецЕсли; но есть номенклатура с незаполненными артикулами, и вот такая номенклатура подставляется непонятно как. Я думал что если поиском найдено несколько объектов, то он считается неудачным, тут же подставляется какая то лева номенклатура с пустым артикулом, а 2й ВариантПоиска не выполняется. Так как все же поиск происходит? считается ли он удачным если найдено несколько объектов или нет? |
|||
1
vicof
08.07.14
✎
07:57
|
если хоть один найден, значит поиск удачен
|
|||
2
varyag
08.07.14
✎
07:57
|
up Подскажите, кто точно знает как этот поиск происходит?
|
|||
3
varyag
08.07.14
✎
07:57
|
(1) т.е. если два то все равно удачен и он берет от фонаря?
|
|||
4
varyag
08.07.14
✎
08:38
|
up up! не логично же так искать!
|
|||
5
SleepyHead
гуру
08.07.14
✎
08:51
|
(2) Выполняется 10 попыток поиска, переменная НомерВариантаПоиска содержит как раз номер попытки.
В твоем примере - если не группа, то при первой попытке поиска выполняется поиск по артикулу, а если по артикулу не получилось, то по артикулу и наименованию. Имхо, крайне неудачный алгоритм. Зачем при второй попытке искать по комбинации артикула и наименования, если такой артикул не найден вообще? |
|||
6
Defender aka LINN
08.07.14
✎
08:58
|
(4) Что тут нелогичного?
КД не заморачивается тем, СКОЛЬКО она объектов нашла. Или нашла или нет, остальное ее не волнует. А вот нелогично - это зная, что артикул пустой, что-то там по нему искать. |
|||
7
mooo
08.07.14
✎
08:59
|
(1) прав, ищется первый попавшийся, в твоем случае лучше так: искать по артикулу, только если он есть:
Если СвойстваПоиска["ЭтоГруппа"] Тогда
|
|||
8
SleepyHead
гуру
08.07.14
✎
09:04
|
(7) Если хочется сохранить еще и структуру папок, то в строку имен свойств поиска неплохо бы добавить Родитель и ЭтоГруппа
|
|||
9
mooo
08.07.14
✎
09:13
|
(8) Да "ЭтоГруппа" при поиске по наименоваию обязятельно нужно, при поиске по артикулу - только если он есть и у групп. Насчет Родителя скользко, есть риск задваивания при переносе товара в другую группу в базе источника.
|
|||
10
SleepyHead
гуру
08.07.14
✎
09:15
|
(9) Ну и правильно, кому надо, вручную по группа растащат.
|
|||
11
varyag
09.07.14
✎
08:55
|
(5) это всё мне итак известно
(6) логично, потому что если артикул пустой то нужно искать по наименованию в пустым артикулом, чтобы исключить попадания в результат поиска номенклатуры с таким же наименованием, но с заполненным артикулом, что будет ошибкой (7) Да, именно так уже и сделал: Если СвойстваПоиска["ЭтоГруппа"] Тогда СтрокаИменСвойствПоиска = "Родитель,Наименование,ЭтоГруппа"; Иначе Если ЗначениеЗаполнено(СвойстваПоиска["Артикул"]) Тогда Если НомерВариантаПоиска = 1 тогда СтрокаИменСвойствПоиска = "Артикул, Наименование"; ИначеЕсли НомерВариантаПоиска = 2 тогда СтрокаИменСвойствПоиска = "Артикул"; КонецЕсли; Иначе СтрокаИменСвойствПоиска = "Наименование"; КонецЕсли; КонецЕсли; Только вот думаю все же надо при пустом артикуле искать так: СтрокаИменСвойствПоиска = "Артикул, Наименование"; чтобы исключить попадания номенклатуры с таким же наименованием но заполненным артикулом, я верно думаю? |
|||
12
Defender aka LINN
09.07.14
✎
09:04
|
ЭтоГруппа ВСЕГДА надо в поля поиска добавлять.
|
|||
13
varyag
09.07.14
✎
09:08
|
(12) Зачем если у групп нет артикула? т.е. попадание группы исключается? или все таки если артикул незаполнен, то может найти группу?
|
|||
14
varyag
09.07.14
✎
09:09
|
Тогда так?
Если СвойстваПоиска["ЭтоГруппа"] Тогда СтрокаИменСвойствПоиска = "Родитель,Наименование,ЭтоГруппа"; Иначе Если ЗначениеЗаполнено(СвойстваПоиска["Артикул"]) Тогда Если НомерВариантаПоиска = 1 тогда СтрокаИменСвойствПоиска = "Артикул, Наименование"; ИначеЕсли НомерВариантаПоиска = 2 тогда СтрокаИменСвойствПоиска = "Артикул"; КонецЕсли; Иначе СтрокаИменСвойствПоиска = "Артикул, Наименование, ЭтоГруппа"; КонецЕсли; КонецЕсли; |
|||
15
Defender aka LINN
09.07.14
✎
09:10
|
(13) В одном из вариантов у тебя поиск по наименованию, есличо.
|
|||
16
varyag
09.07.14
✎
09:11
|
(15) а последний вариант?
|
|||
17
varyag
09.07.14
✎
09:11
|
там надо это группа или необязательно?
|
|||
18
varyag
09.07.14
✎
09:13
|
я так вижу у элемента пустой артикул = "", у группы Артикул = NULL. т.е. не должна группа найтись. или ошибаюсь?
|
|||
19
Defender aka LINN
09.07.14
✎
09:36
|
(18) Пути 1С неисповедимы. Я всегда добавляю, ибо нуегона.
|
|||
20
varyag
09.07.14
✎
11:47
|
(19) Воистину)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |