Имя: Пароль:
1C
1С v8
Найти документ по номеру
,
0 tatoshka0403
 
01.11.16
09:49
Добрый день! Помогите реализовать поиск документа по номеру
номер в файле: "44106"
номер в базе:  "44 106     "
1 polosov
 
01.11.16
09:52
(0) Формат
2 tatoshka0403
 
01.11.16
09:55
(1) Ну как я понял найтипономеру не прокатит. В запросе формат писать?
3 polosov
 
01.11.16
09:56
(2) Получи таблицу номеров, преобразуй, скорми запросу полученный массив.
4 tatoshka0403
 
01.11.16
09:57
(3) Ну это же будет ппц как долго, а сразу нельзя искать по формат(номер)?
5 Naf_kultura
 
01.11.16
09:58
(0) а откуда такие номера в базе оказались?
6 Альбатрос
 
01.11.16
09:58
(4) Прям устанешь ждать?
7 tatoshka0403
 
01.11.16
10:02
(5) кто то поменял в начале года
8 shadow_sw
 
01.11.16
10:04
НовыйНомер = Лев(Номер, 2)+" "+Прав(Номер,4);
9 Serg_1960
 
01.11.16
10:14
Не свести, денег не будет. Судя по всему число было записано в номер документа напрямую, с преобразованием "по умолчанию" и сейчас у автора там сидит так называемый "неразрывный пробел".

Поздравляю, Вы - "1 024-ая жертва неразрывного пробела"(я)

По журналу регистрации теоретически возможно найти кто именно это сделал и оторвать ему руки.
10 shadow_sw
 
01.11.16
10:24
(9) сдал контору :)
11 tatoshka0403
 
01.11.16
11:08
(3) Спасибо
12 Serg_1960
 
01.11.16
11:18
Можно никого не кормить таблицей номеров :) , а прямо в запросе вырезать лишний символ - ПОДСТРОКА().
13 tatoshka0403
 
01.11.16
13:43
(12)
КОГДА ПОДСТРОКА(РеализацияТоваровУслуг.Номер, 2, 1) = " "
        ТОГДА ПОДСТРОКА(РеализацияТоваровУслуг.Номер, 1, 1) + ПОДСТРОКА(РеализацияТоваровУслуг.Номер, 3, 9)
    КОГДА ПОДСТРОКА(РеализацияТоваровУслуг.Номер, 3, 1) = " "
        ТОГДА ПОДСТРОКА(РеализацияТоваровУслуг.Номер, 1, 2) + ПОДСТРОКА(РеализацияТоваровУслуг.Номер, 4, 8)

вот так вот?
14 h-sp
 
01.11.16
13:47
(13) просто один раз пройдите по журналу и замените обработкой все номера на нормальные. Желательно уже сегодня. А завтра уже нормально займетесь поиском.
15 Serg_1960
 
01.11.16
13:49
(13) Вот как-то вот так :)

    НомерИзФайла = "44106";
    НомерИзБазы = "" + Число(НомерИзФайла) + "     ";
    Запрос = Новый Запрос("ВЫБРАТЬ &НомерИзФайла = ПОДСТРОКА(&НомерИзБазы, 1, 2) + ПОДСТРОКА(&НомерИзБазы, 4, 3) КАК Проверка");
    Запрос.УстановитьПараметр("НомерИзФайла", НомерИзФайла);
    Запрос.УстановитьПараметр("НомерИзБазы", НомерИзБазы);
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    Сообщить(Выборка.Проверка);
    Возврат;
16 tatoshka0403
 
01.11.16
13:52
(15) А если длинна не 5, писать еще функцию которая будет добивать до нужной длинны.
17 Serg_1960
 
01.11.16
13:59
Числа 1,2,3,4 в запросе могут быть производные от длины текущего номера.

Вы таки хотите иметь универсальный алгоритм? Вы не много хотите ли?
18 tatoshka0403
 
01.11.16
14:05
(17) Таки нет, но наверно реально проще убрать из номеров эти пробелы и проблем не будет.
19 Adilgeriy
 
01.11.16
14:19
а номера в порядок привести не проще будет?
20 ELEA26
 
01.11.16
14:21
СтрЗаменить пробелы на ничего.
21 Serg_1960
 
01.11.16
14:31
Шалим немного :)

    НомерИзФайла = "44106";
    Пустышка = Документы.ТребованиеНакладная.СоздатьДокумент();
    Пустышка.Номер = Число(НомерИзФайла);
    НомерИзБазы = Пустышка.Номер;
    Пустышка = Неопределено;
    Результат = Документы.ТребованиеНакладная.НайтиПоНомеру(НомерИзБазы, ТекущаяДата());
    Сообщить(?(ЗначениеЗаполнено(Результат), Результат, "Неопределено"));
    Возврат;
22 LeReve
 
01.11.16
14:31
НомерВБазе = СтрЗаменить(НомерВБазе , Символы.НПП, "")
23 Serg_1960
 
01.11.16
14:37
Эээ... пришел LeReve и всё испортил :( "Ну, я так не играю"(цы)
24 tatoshka0403
 
01.11.16
15:21
(22) это подойдет для(3)
25 LeReve
 
01.11.16
15:24
(24) Так приведи номера в базе в нормальный вид. в (21) отличная идея тогда для тебя))
Программист всегда исправляет последнюю ошибку.