Имя: Пароль:
1C
1С v8
Не работает запрос: поиск части числового значения (поиск числа по подстроке)
0 бегинер
 
26.07.17
14:38
Запрос.Текст="выбрать вагоны.код, выразить(вагоны.код как строка (8)) как число_строкой из справочник.дислокациявагонысписок как вагоны где число_строкой подобно"+""""+"%"+ элементыформы.ИскомаяЧастьНомераВагона.Значение + "%"+"""";

код - тип число
хочу искать все числа-номера к которых есть определенные-искомые наборы цифр
например найти все номера в которых есть 234.

ругается:
Поле не найдено "число_строкой"

подскажите как правильно организовать запрос-поиск подстроки в числовом поле, где ошибка в запросе?
1 Ёпрст
 
26.07.17
14:40
(26)
пиши так:
"выбрать вагоны.код из справочник.дислокациявагонысписок как вагоны где  вагоны.код подобно"+""""+"%"+ элементыформы.ИскомаяЧастьНомераВагона.Значение + "%"+"""";
2 Ёпрст
 
26.07.17
14:42
и лучше, так:
"выбрать вагоны.код из справочник.дислокациявагонысписок как вагоны где  вагоны.код подобно ""%"+СокрЛП( элементыформы.ИскомаяЧастьНомераВагона.Значение) + "%""";
3 бегинер
 
26.07.17
14:44
(2)
ругается
Неверные параметры "ПОДОБНО"
выбрать вагоны.код из справочник.дислокациявагонысписок как вагоны где  <<?>>вагоны.код подобно "%330%"

повторюсь: вагоны.код - числовое поле
4 Рабочая имитация
 
26.07.17
14:47
>поиск числа по подстроке

Не взлетит. ВЫРАЗИТЬ в языке запросов предназначено только для уточнения существующего типа, например выделения из составного типа или уточнения длины/разрядности числа или строки.
5 бегинер
 
26.07.17
14:52
подскажите как взлететь :)
6 Ёпрст
 
26.07.17
14:56
(3) ну переделай код в строку, делов-то
В запросе из числа строку не слепишь без извратов, тут каста и конверта нема
7 Вафель
 
26.07.17
15:01
выполнить запрос, преобразовать в строку, выполнить новый запрос по тз
8 dezss
 
26.07.17
15:01
держи изврат)))
http://catalog.mista.ru/public/461171/
9 Ненавижу 1С
 
гуру
26.07.17
15:20
нефиг коды в справочниках делать числовыми
10 Ёпрст
 
26.07.17
15:21
(9) толи дело клюшки, там code - всегда строка была в самих табличках.
11 бегинер
 
26.07.17
15:28
(9) да уж ошибся получается давно, поленился проверять на числовое значение, задал жестко тип коду "число"
а так тоже не пройдет?

ВЫБРАТЬ
    врм_табл.Код КАК код,
    ПРЕДСТАВЛЕНИЕ(врм_табл.Код) КАК число_строкой
ПОМЕСТИТЬ врм_табл
ИЗ
    Справочник.ДислокацияВагоныСписок КАК врм_табл
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    врм_табл.Код
ИЗ
    врм_табл
ГДЕ
    врм_табл.число_строкой     ПОДОБНО &z
12 бегинер
 
26.07.17
15:29
Неверные параметры "ПОДОБНО" опять ругается
13 Ёпрст
 
26.07.17
15:29
(11) нет.
Представление - эта хрен после запроса получает
14 PR
 
26.07.17
15:29
(0) Ни. Как.
15 Timon1405
 
26.07.17
15:34
0) успокоиться и понять что (14)
1) добавить свойство/реквизит.
2) заполнять его при записи
3) искать по нему
4) прекратить %мозг% себе и окружающим
16 бегинер
 
26.07.17
15:37
буду курить как связать (8) с моим запросом
сразу не вьехал еще как юзать:
т.е. есть вот это:
"выбрать вагоны.код из справочник.дислокациявагонысписок как вагоны где  вагоны.код подобно ""%"+СокрЛП( элементыформы.ИскомаяЧастьНомераВагона.Значение) + "%""";
меняем на:

"выбрать вагоны.код из справочник.дислокациявагонысписок как вагоны где"  +ТекстЗапросаИзЧислаВСтроку(вагоны.код, 8, 0)+ "  подобно ""%"+СокрЛП( элементыформы.ИскомаяЧастьНомераВагона.Значение) + "%""";

верно?
17 бегинер
 
26.07.17
15:38
справочник не тяжелый, не больше 100 элементов, поэтому можно и по извращаться :)

на край тупо перебором в цикле и в коде уже по подстроке сам поиущу...
18 Ёпрст
 
26.07.17
15:40
(16) быстрее будет, открыть пофигуратор, поменять тип кода на строку и сохранить
19 бегинер
 
26.07.17
15:42
(18) ну там в других местах уже много на числовом типе завязано...
всем спасибо!
20 FIXXXL
 
26.07.17
15:43
(17) выгрузи в ТЗ, добавь колонку "СтрКод", заполни в цикле
ТЗ обратно в запрос и ищи
а можно и в прямо в цикле по СтрНайти()
21 бегинер
 
26.07.17
15:45
(20) уже так и делаю, хотелось красивости :)
а тут грабельки....
22 FIXXXL
 
26.07.17
15:47
(21) красивости в (15)  :)
а это кастылики
23 dezss
 
26.07.17
16:59
(16) а фигли там непонятного...
первый запрос меняешь на выборку твоих кодов
во втором тебе нужно только это
ВЫБРАТЬ
    ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 10000 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 100000 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
    ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 1000 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 10000 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
    ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 100 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 1000 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
    ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 10 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 100 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
    ПОДСТРОКА("0123456789", 1 + ТЗ.Поле - (ВЫРАЗИТЬ(ТЗ.Поле / 10  - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)+
    КАК СтрокаПоле
ИЗ
    ТЗ КАК ТЗ

Добавляешь выражений (ПОДСТРОКА) до нужного числа разрядов, профит.