|
v7: Быстрый отбор элементов справочника с одинаковым реквизитом. | ☑ | ||
---|---|---|---|---|
0
bizon2008
29.08.11
✎
23:38
|
Доброе время суток. Никак не могу сообразить.Нужен алгоритм. Есть справочник. Товары. У товара есть реквизит штрихкод, он может быть одинаков у двух-трех. Мне надо быстрый отбор элементов справочника с одинаковым этим реквизитом.
НайтиПоРеквизиту находит только один. |
|||
1
Aleksey
29.08.11
✎
23:47
|
Запрос?
|
|||
2
bizon2008
30.08.11
✎
00:05
|
(1)И шо? Потом перебором его искать чего он тама притащил.
|
|||
3
Сияющий Асинхраль
30.08.11
✎
00:08
|
ВыбратьЭлементыПоРеквизиту
|
|||
4
andrewks
30.08.11
✎
08:26
|
(2) чо?
|
|||
5
smaharbA
30.08.11
✎
08:28
|
можно и через отмену транзакции искать если хочется извращений
|
|||
6
smaharbA
30.08.11
✎
08:31
|
НачалоТранзакции();
Пока Спр.НайтиПоРеквизиту(Рекв)=1 Цикл Сп.ДобавитьЗначение(Спр.ТекущийЭлемент()); Спр.Удалить(1); КонецЦикла; ОтменитьТранзакции(); |
|||
7
Mikeware
30.08.11
✎
08:44
|
(0) "Позовите программиста"©
|
|||
8
andrewks
30.08.11
✎
08:47
|
(6) ну, вы, мусье,.... короче, вы в курсе
|
|||
9
YHVVH
30.08.11
✎
08:48
|
(6) ужась
|
|||
10
smaharbA
30.08.11
✎
08:50
|
в курсе )
|
|||
11
bizon2008
30.08.11
✎
10:36
|
Вот чего хочу реализовать. Сканируем штрихкод, бежим в справочник товаров и там смотрим, если есть только один элемент, то его сразу подставляем в табличную часть документа, если два или больше, то выводим список на экран для выбора оператором, если ни одного, то ничего не делаем и выводит сообщение что нет такого.
Первый и третий вариант сделал. На втором завис. Пока пробую запрос и ВыбратьЭлементыПоРеквизиту. |
|||
12
FN
30.08.11
✎
10:45
|
(11) запрос отставить (если только не прямой).
Просто выбратьПоРеквизиту, потом Пока ПолучитьЭлемент и загоняй элементы в список или ТЗ |
|||
13
Ёпрст
30.08.11
✎
10:52
|
(12) >>>Просто выбратьПоРеквизиту, потом Пока ПолучитьЭлемент
ну-ну.. |
|||
14
FN
30.08.11
✎
10:57
|
(13) что не так?
|
|||
15
Ёпрст
30.08.11
✎
10:59
|
(14) всё так, за найти по реквизиту померещилось
|
|||
16
bizon2008
30.08.11
✎
11:04
|
(12)База скульная, по логике запрос должен быть быстрее.
|
|||
17
ЧеловекДуши
30.08.11
✎
11:05
|
Организуй через цикл, команда: ВыбратьПоРеквизиту()
|
|||
18
Ёпрст
30.08.11
✎
11:09
|
(16) прямой да, будет быстрее. А так, найтиПоРеквизиту/ВыбратьЭлементыПоРеквизиту быстрее всего из штатного.
|
|||
19
FN
30.08.11
✎
11:09
|
(16) за это время мог бы уже и проверить.
Точно быстро будет что-то типа |SELECT | Спр.ID AS [Элемент $Справочник.ТМЦ] |FROM | $Справочник.ТМЦ AS Спр (NOLOCK) |WHERE | Спр.IsFolder = 2 AND | $Спр.ШтрихКод ='"+ПеремШтриход+"'"; |
|||
20
Ёпрст
30.08.11
✎
11:12
|
(19) жалко, что в типовых, штрихкод у единицы измерения, а не у ТМЦ..
:) |
|||
21
bizon2008
30.08.11
✎
11:19
|
(19)Пока загрузил 10000 позиций. Из них 600 три дубля, 400 два. Запрос медленней процентов на 10%. Но это локальная машина и однопользовалкий режим.
|
|||
22
antoneus
30.08.11
✎
11:22
|
select
спр.id [Элемент $Справочник.ТМЦ] WHERE Спр.IsFolder = 2 group by id having count($Спр.ШтрихКод) > 1 |
|||
23
antoneus
30.08.11
✎
11:23
|
тоесть
select id [Элемент $Справочник.ТМЦ] from $Справочник.ТМЦ Спр (nolock) WHERE Спр.IsFolder = 2 group by id having count($Спр.ШтрихКод) > 1 |
|||
24
FN
30.08.11
✎
11:26
|
(23) и зачем? ему нужно найти конкретный штрихкод
|
|||
25
Ёпрст
30.08.11
✎
11:28
|
(23) group by id having count всё равно медленнее, чем обычный select + where
|
|||
26
bizon2008
30.08.11
✎
11:47
|
А есть механизм сразу выборку ВыбратьЭлементыПоРеквизиту загрузить в таблицу значений, или только построчный перебор?
Или узнать сколько элементов в этой выборке? |
|||
27
bizon2008
30.08.11
✎
12:26
|
Подниму.
|
|||
28
Mikeware
30.08.11
✎
12:28
|
(26) Используй прямой запрос и успокойся.
|
|||
29
FN
30.08.11
✎
12:49
|
(26) Если операция разовая и много раз идет поиск, а дублированных штрихкодов не много то есть смысл сначала построить табличку с дублями и искать в ней.
Если что-то типа подбора или обработка со сканера ШК то лучше всего прямой запрос или выбрать по реквизиту |
|||
30
bizon2008
30.08.11
✎
12:54
|
К сожалению возможности использования прямых запросов не будет.
|
|||
31
bizon2008
30.08.11
✎
12:56
|
(29)Домучил тесты. ВыбратьПоРеквизиту работает быстрей обычного запроса.
|
|||
32
smaharbA
30.08.11
✎
19:17
|
оно конечно все хорошо при выбрать, вот только сколь таких будет у автора и как будут "фильтрованные" индексы вести себя, когда полей десять будет
|
|||
33
Мимохожий Однако
30.08.11
✎
20:31
|
Почему штрихкоды одинаковые для разного товара?
|
|||
34
Sk0rp
30.08.11
✎
21:06
|
(33) Ты об этом у производителей поинтересуйся :)
По факту дохрена товара с одинаковыми штрих-кодами производителя. Иногда могут, к примеру, всю линейку лаков (100 цветов) одним штрих-кодом обклеить. А иногда могут довольно непохожие позиции. |
|||
35
Мимохожий Однако
30.08.11
✎
21:09
|
Смысл штрихкода в уникальности. Для разного товара надо свои наклеивать при оприходовании.
|
|||
36
FN
30.08.11
✎
23:19
|
(35) если для этого использовать штрихкода начинающиеся на 2 - то это только в рознице катит, дальше такой штрихкод не передать.
Или ты предлагаешь зарегистрировать в ЕАН и на каждый такой товар регистрировать ШК за свой счет? Реалии гораздо сложнее и интереснее теории... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |