Имя: Пароль:
1C
1С v8
Туплю над простейшим запросом
, ,
0 1398
 
30.01.13
21:07
Разбираю чужой код и столкнулся со следующим
В простейшиё запрос передается параметр – список значений из 1367 позиций номенклатуры
А в выборке уже 9606, все строки заполнены (некоторые товары дублируются, хотя в передаваемом параметре дублей нет)
Вот код запроса. В консоли он тоже дает предсказуемые результаты (заводил примерно сотню значений – на выходе та же сотня)
ВЫБРАТЬ
   Товар.Ссылка КАК Номенклатура,
   Товар.ШтрихКод
ИЗ
   Справочник.Номенклатура КАК Товар
ГДЕ
   Товар.Ссылка В (&МассивАкции)
   И
    Товар.ПометкаУдаления = ЛОЖЬ
   И Товар.ШтрихКод <> "             "

УПОРЯДОЧИТЬ ПО
   Товар.КатегорияТовара.Позиция УБЫВ,
   Товар.Бренд.Позиция УБЫВ,
   Товар.Артикул

В чём причина может быть?
1 Classic
 
30.01.13
21:10
Это точно полный текст запроса?
2 DrShad
 
30.01.13
21:12
[Товар.ШтрихКод <> "             "] это пять!
3 1398
 
30.01.13
21:13
(1) Да
4 exwill
 
30.01.13
21:13
(0) В параметре группы не попадаются?
5 1398
 
30.01.13
21:14
(2) Полусамописная конфа с реквизитом "штрихкод" фиксированной длины у номенклатуры.
6 DrShad
 
30.01.13
21:14
как массив собирается?
7 DrShad
 
30.01.13
21:14
(5) сравнивая на пустую строку
8 1398
 
30.01.13
21:16
(4) Нет (проверял).
(6) Там не массив. Список значений. Собирается в премудром цикле  после кучи проверок (в том числе и на неповторяемость добавляемого значения)
9 DrShad
 
30.01.13
21:16
(8) а не проще его в ВТ собрать?
10 1398
 
30.01.13
21:19
(9) Вариант. Если не найду причину в запросе - буду переписывать к такой-то матери. И даже, сокрее всего - не только один этот кусок.
Но хочется найти быстрое решение.
11 exwill
 
30.01.13
21:19
(0) Как определил количество строк в выборке?
12 1398
 
30.01.13
21:22
(11) В отладчике. Выборка.Количество() после кода "РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать();"
13 DrShad
 
30.01.13
21:24
(12) консолями принципиально не пользуешься?
14 exwill
 
30.01.13
21:25
(12) Попробуй убрать упорядочивание.
15 1398
 
30.01.13
21:27
(12) Пользуюсь. В консоли результат как раз предсказуемый см.(0)
16 DrShad
 
30.01.13
21:29
(15) ты там только сотню заводил
17 1398
 
30.01.13
21:31
(16) Больше я "вручную" не осилю. Если ведом какой-то способ сохранить список значений, формируемый нетривиальными проверками и его в консоль передать - был бы признателен.
18 exwill
 
30.01.13
21:32
(17) Написать обработку, которая открывает консоль.
Ты порядок из запроса убери. Для эксперимента.
19 1398
 
30.01.13
21:35
(18) Убрал. Запустил (но там не быстро всё). Результаты отпишу
20 DrShad
 
30.01.13
21:35
(18) бугага!
(17) http://devtool1c.ucoz.ru/load/ тут смотри там все это есть
21 1398
 
30.01.13
21:56
(18) ни фига не помогло. Ж8-0
22 eklmn
 
гуру
30.01.13
22:00
запрос в цикле?
23 1398
 
30.01.13
22:09
(22) нет
24 Tatitutu
 
30.01.13
22:13
сравни результат (без условий)

ВЫБРАТЬ РАЗЛИЧНЫЕ
   Товар.Ссылка КАК Номенклатура,
   Товар.ШтрихКод
ИЗ
   Справочник.Номенклатура КАК Товар
ГДЕ
   Товар.Ссылка В (&МассивАкции)

И

ВЫБРАТЬ
   Товар.Ссылка КАК Номенклатура,
   Товар.ШтрихКод
ИЗ
   Справочник.Номенклатура КАК Товар
ГДЕ
   Товар.Ссылка В (&МассивАкции)

////////////////////////////////////
замени
И Товар.ПометкаУдаления = ЛОЖЬ
на
И НЕ Товар.ПометкаУдаления
25 Лоботряс
 
30.01.13
22:22
Товар.КатегорияТовара - это табличная часть справочника?
тогда все правильно. Такой результат и должен быть. Ты же получаешь все строки всех табличных частей этого элемента справочника.
26 Лоботряс
 
30.01.13
22:25
как по-твоему результат может упорядочиться по реквизиту строки табличной части без получения табличной части?
27 1398
 
30.01.13
22:44
(25) Увы, нет. Не табличная часть.
28 Classic
 
30.01.13
22:46
(27)
Напиши РАЗЛИЧНЫЕ и не парься :)
29 Лоботряс
 
30.01.13
22:49
а что? какой тип у реквизитов Категория товара и Бренд?
30 NcSteel
 
30.01.13
23:12
Эх, улыбку навевает!
31 1398
 
30.01.13
23:14
(28) Не повешь... не помогает.
32 hhhh
 
30.01.13
23:36
(31) Запрос.Текст чему равно?