Имя: Пароль:
1C
1С v8
Подскажите с запросом
,
0 newbas
 
15.04.13
18:37
Вроде все просто, не не пойму результат
Есть таблица значений:
Код:Строка(9), Цена:Число, Характеристика:Строка.
Хочу запросом подставить вместо кода ссылку на номенклатуру. ТЗ имеет типизированные колонки.

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("яТЗ", яТЗ);    
Запрос.УстановитьПараметр("НаименованиеСвойства", "Размеры");
Состояние("Запрос характеристик и номенклатуры...");
Запрос.Текст = "
|ВЫБРАТЬ
|    ТЗ.Код,
|    ТЗ.Характеристика,
|    ТЗ.Цена
|ПОМЕСТИТЬ врТЗ
|ИЗ
|    &яТЗ КАК ТЗ
|;
|
|/////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    СпрНоменклатура.Ссылка КАК Номенклатура,
|    врТЗ.Характеристика КАК Характеристика,
|    врТЗ.Цена КАК Цена,
|    СпрНоменклатура.ЕдиницаХраненияОстатков
|ИЗ
|    врТЗ КАК врТЗ
|    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
|    ПО (врТЗ.Код = (ВЫРАЗИТЬ(СпрНоменклатура.Код КАК СТРОКА(9))))
|";

мТЗ = Запрос.Выполнить().Выгрузить();
мТЗ.ВыбратьСТроку();

Имею на входе 6600 строк - по идее должен получить 6600 - а получаю более 600 тыс.
Почему?
1 Любопытная
 
15.04.13
18:40
Потому что левое соединение. А ты попробуй внутреннее сделать
2 Нуф-Нуф
 
15.04.13
18:40
у тебя длина кода номенклатуры точно 9?
3 exwill
 
15.04.13
18:41
(0) А если просто:
ПО врТЗ.Код = СпрНоменклатура.Код

чего там выражать?
СпрНоменклатура.Код и так строка
4 МихаилМ
 
15.04.13
18:43
ПОДСТРОКА()
правильней
5 newbas
 
15.04.13
18:50
(3)
Разные длины.
В ТаблицеЗначений код:Строка(9), а СпрНоменклатура.Код:Строка(11) - поэтому выразить.
(1)
Что значит внутреннее
вот тут v8: Язык запросов: Внутреннее и внешнее соединение
указано, что это ничего не значит - для соблюдения стиля
6 newbas
 
15.04.13
18:52
Попробовал вместо ЛЕВОЕ СОЕДИНЕНИЕ
"ВНУТРЕННЕЕ СОЕДИНЕНИЕ" и "СОЕДИНЕНИЕ"
результат тот же - размер выборки 598202
7 Любопытная
 
15.04.13
18:52
(5) Это моск мой спит уже и несет всякую ересь, не обращайте внимания :)
8 exwill
 
15.04.13
18:57
(5) Если у тебя разные длины, чему ты тогда удивляешься?
"123456789"="123456789000"
"123456789"="123456789001"
"123456789"="123456789002" ...
9 newbas
 
15.04.13
18:59
Длины разные, но содержимое вот так
"123456789" = "123456789  "
10 Нуф-Нуф
 
15.04.13
19:01
(5) код:Строка(9), а СпрНоменклатура.Код:Строка(11) именно поэтому при 6000 элементах ты получаешь 600000
11 newbas
 
15.04.13
19:04
(10)
Ладно. Вопрос поставлю по другом. Как быть?
12 exwill
 
15.04.13
19:04
(9) проверь
13 exwill
 
15.04.13
19:08
(11) ПОДСТРОКА пробовал?
14 newbas
 
15.04.13
19:09
(12) и (*)
Спасибо всем - пора отдыхать.
Конечно исходный код оказался длиной 11 - с чего это я его решил обрезать...
15 exwill
 
15.04.13
19:09
Как вариант, сделай в тз длину 11.
16 Любопытная
 
15.04.13
19:09
(11) Открыть получившуюся таблицу, смотреть на результат и много думать о том, почему это происходит
17 newbas
 
15.04.13
19:11
(15) именно так и сделал.
Не знаю как в квалификатор колонки код попала 9 вместо 11
Ошибка? Это не ошибка, это системная функция.