Имя: Пароль:
1C
1С v8
Поиск документа по номеру в запросе
,
0 Gera1t
 
19.02.21
09:42
Нужно найти документ по номеру в запросе.
Но не по вхождению, а по полному совпадению.
И нужно сделать так, что номер для поиска вводили без лидирующих 0.
Т.е если нужно найти документ по вхождению, то пишу
ПОДОБНО "%" + &НомерДок
А здесь нужно в запросе в условии отбросить лидирующие 0 у Номера документа и найти просто по точному соответствию НомерДок
1 Галахад
 
гуру
19.02.21
09:46
НомерДок = Нули + НомерДок;
2 Lexey_
 
19.02.21
09:46
(0) ПОДОБНО "&ЛидирующиеНули" + &НомерДок
ЛидирующиеНули считаешь в зависимости от длины введенного номера
3 butterbean
 
19.02.21
09:47
обрабатывай номер перед передачей в запрос и проверяй на точное совпадение
4 Gera1t
 
19.02.21
09:47
А там номер вида 0000-0000001
5 Gera1t
 
19.02.21
09:48
(3) ну да, наверное так
6 Serg_1960
 
19.02.21
10:14
В запросе удалить лидирующие нули? А "лидирующие" префиксы в номере документа тоже "отбросить в запросе"? "Нет, сынок, это фантастика"(слоган из рекламы сыра)
7 Gera1t
 
19.02.21
10:18
Пока СтрДлина(НомерДокумента) < 6 Цикл
        НомерДокумента = "0" + НомерДокумента;
    КонецЦикла;
    
    НомерДокумента = "0000-" + НомерДокумента;
    
    Возврат НомерДокумента;


Вот так сделал, не универсально, зато быстро и работает
8 Serg_1960
 
19.02.21
10:20
(7) Неспортивно - это не в запросе :)
9 Serg_1960
 
19.02.21
10:28
(7) Самый простой и тупой запрос, когда номер документа без префикса и когда заранее известна длина номера (например, 10 позиций):

ВЫБРАТЬ
    ВЫБОР
    КОГДА НЕ ПОДСТРОКА(&НомерДок, 1, 1) = "0" ТОГДА ПОДСТРОКА(&НомерДок, 1, 10)
    КОГДА НЕ ПОДСТРОКА(&НомерДок, 2, 1) = "0" ТОГДА ПОДСТРОКА(&НомерДок, 2, 9)
    КОГДА НЕ ПОДСТРОКА(&НомерДок, 3, 1) = "0" ТОГДА ПОДСТРОКА(&НомерДок, 3, 8)
    ...
    КОГДА НЕ ПОДСТРОКА(&НомерДок, 9, 1) = "0" ТОГДА ПОДСТРОКА(&НомерДок, 9, 2)
    Иначе ПОДСТРОКА(&НомерДок, 10, 1)
КОНЕЦ КАК НомерБезЛидирующихНулей
10 Pro-tone
 
19.02.21
10:31
(7) НомерДокументаСтрокой = "0000-" +  Формат(НомерДокументаЧислом, "ЧЦ=6; ЧВН=; ЧГ=0") так красивее и быстрее работать будет
11 Builder
 
19.02.21
10:34
(10) Ну тогда уж еще проще
НомерДокументаСтрокой = "0000-" +  Прав("000000"+НомерДокументаЧислом,6)
12 dka80
 
19.02.21
10:43
а еще номера могут повторяться каждый год
13 lodger
 
19.02.21
10:43
(11) если НомерДокументаЧислом - строка, то ладно, если число больше 999, то не ладно.
14 Builder
 
19.02.21
10:43
(12) Это уже другое условие :)
15 Serg_1960
 
19.02.21
10:46
Детский сад, штаны на лямках :)

Формат(Число(Сред(НомерДок,Найти(НомерДок,"-")+1)),"ЧГ=")
16 Gera1t
 
19.02.21
10:49
Всем большое спасибо!
(10), (11) Вообще красота!