Имя: Пароль:
1C
1С v8
Поиск документа запросом по части номера.
0 demONx6
 
14.02.19
10:33
Здравствуйте. Суть в следующем.
Есть таблица значений (ТЗ), имеющая столбцы:
Номер (тип Строка)
Дата (тип Дата)

Номера в ТЗ имеют формат "12345". (Номера в базе имеют формат "Д-000012345".)
Длина номера в ТЗ может быть от 1 до 5 символов.

Как запросом можно найти документы с перечисленными номерами и датами?

На данный момент дошел до этого запроса:
"ВЫБРАТЬ
    |    ВЫРАЗИТЬ(ТЗ.Номер КАК СТРОКА(5)) КАК Номер,
    |    ТЗ.Дата КАК Дата
    |ПОМЕСТИТЬ ТЗ
    |ИЗ
    |    &ТЗ КАК ТЗ
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    |    ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номер КАК СТРОКА(11)) КАК Номер1,
    |    НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК Дата1
    |ПОМЕСТИТЬ Реализации
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Реализации.Ссылка,
    |    ТЗ.Номер,
    |    ТЗ.Дата
    |ИЗ
    |    ТЗ КАК ТЗ
    |        ЛЕВОЕ СОЕДИНЕНИЕ Реализации КАК Реализации
    |        ПО (Реализации.Номер1 ПОДОБНО ""%"" + ТЗ.Номер)
    |            И ТЗ.Дата = Реализации.Дата1";

Но в данном случае находит только те документы, у которых номера в ТЗ имеют длину 5 символов.
Меньшие уже не находит.

Решить задачу нужно без циклов, только запросом.
1 ДенисЧ
 
14.02.19
10:34
где номер подобно "%12345"
2 demONx6
 
14.02.19
10:38
Это условие есть в связях таблиц.
3 СвинТуз
 
14.02.19
10:45
(0)
Добавить колонку в таблицу значений и заполнить религия не позволяет?
Потом в запросе сравниваем на равенство.
4 demONx6
 
14.02.19
10:47
(3) Префиксы могут быть разные.
5 СвинТуз
 
14.02.19
10:49
(4)
"%" с обеих сторон не пробовал ставить?
Читай инструкцию
6 demONx6
 
14.02.19
10:51
(5) В ТЗ указана последняя часть номера. Поэтому % только перед ставится.
7 ZDenis
 
14.02.19
10:51
(2) Насколько я понимаю после этого
ВЫРАЗИТЬ(ТЗ.Номер КАК СТРОКА(5))
будут пробелы у того, где меньше 5 и соответственно он уже не найдет, а если попробовать без ВЫРАЗИТЬ?
8 demONx6
 
14.02.19
10:53
(7) Тогда ошибка

Неверные параметры "+"
ПО (Реализации.Номер1 ПОДОБНО "%" + <<?>>ТЗ.Номер)
9 demONx6
 
14.02.19
10:55
Собственно из-за этой ошибки и решил "выражать"
10 СвинТуз
 
14.02.19
10:58
(9)
Добавь нули справа.
11 demONx6
 
15.02.19
04:46
Добавил слева. Помогло. Спасибо.