Имя: Пароль:
1C
1С v8
Поиск документа по номеру
, ,
0 Garikus
 
22.12.16
10:42
Доброго времени суток, поделитесь идеей
Есть список документов с номерами 1,2,3,4,5,6,7,8 и т.д.
В базе документы с номерами ПР0000001,ПР0000002,ПР0000003 и т.д.
Нужно искать по короткому номеру.
Пробовал запросом через ПОДОБНО %номер, но таким макаром он находит все документы где содержится цифра переменной Номер.
Как можно побороть?
1 Альбатрос
 
22.12.16
10:44
Добавлять нули в цикле, пока не достигнет длины номера?
2 ВРедная
 
22.12.16
10:45
Если это постоянная задача, то проще добавить в документ номер без нулей и префикса, а потом по этому полю искать через "=".
3 Cool_Profi
 
22.12.16
10:47
номерДляпоиска = "ПР"+  формат(номер, "ЧЦ=7; ЧВН=; ЧГ=");
4 Garikus
 
22.12.16
10:49
(1)в том то и дело что на момент начала поиска неизвестно какой номер в базе и какой длинны он. И номер может содержать нули а может и нет.
(2) Задача постоянная, но добавить не получится документы документы отправляются в органы с полным префиксом и номерами(
(3) Как писал выше точного формата номера не знаю(, вернее он разный в базе
5 Альбатрос
 
22.12.16
10:51
(4) То есть искать надо по последним цифрам в номере?
6 Garikus
 
22.12.16
10:51
да
7 Garikus
 
22.12.16
10:51
может в подобно я по символам как то не так написал(
8 FIXXXL
 
22.12.16
10:52
(4) добавь РС НомераДляПоиска типа ДокСсылка - НомерБезВсего
обработиной заполни, сделай подпиську
ищи на здоровье
9 FIXXXL
 
22.12.16
10:52
(7) если ты не знаешь формат. искать по ПОДОБНО будет сильно подобно
10 Garikus
 
22.12.16
10:54
(10) пока нашел решение в том чтобы формировать список доков в ТЗ приводить номер документов в нужный мне вид и потом уже искать по ТЗ
11 Garikus
 
22.12.16
10:54
Хотелось бы конечно без промежуточных методах обойтись
12 bodri
 
22.12.16
10:55
как вариант:
Если известен период, выбрать запросом документы, а потом переборкой в цикле, вот там и можно поиграться с длиной текущего документа как в (3)
13 Garikus
 
22.12.16
10:57
Для каждого ст из Таб цикл
        //Д = Формат(ст.ДокДата,"ДЛФ=Д");
        //Ст.ДокДата = Дата(Д);
        номр = Прав(ст.ДокНом, 8);
        Пока Лев(номр, 1)="0" Цикл
            номр = Сред(номр, 2);
        КонецЦикла;
        ст.ДокНом = СокрЛП(номр);
    КонецЦикла;

Пока как то так извращаюсь, но это + время к обработке(
14 Garikus
 
22.12.16
10:57
сорь комменты забыл убрать
15 Garikus
 
22.12.16
10:58
но тоже не все номера корректно редет(
16 catena
 
22.12.16
11:01
(13)Префиксы хоть постоянные или тоже разные?
17 Мимохожий Однако
 
22.12.16
11:02
ОФФ: Бардак разгребать тяжелее, чем сразу делать правильно. Т.к. у бардака вариаций на порядки больше.
(0)Побороть можно только наведением порядка.
18 catena
 
22.12.16
11:03
Для каждого префикс из СписокПрефиксов Цикл
     номр = СтрЗаменить(номр,префикс,"");
КонецЦикла;
номр = Число(номр);
19 bodri
 
22.12.16
11:06
(13) по длине можно с СтрДлина поигратся
20 FIXXXL
 
22.12.16
11:06
(13) для сокращения времени поиска - пиши правильный номер поиска при записи дока
21 Garikus
 
22.12.16
11:16
(20) Самый прикол в том что это файл в экселе приходит от клиентов, а там номер который они забили у себя в базе может хз какой быть, как оператору вздумалось
22 ВРедная
 
22.12.16
11:17
(13) еще раз, просто во время записи документа с номером "ХХ000001" пиши в отдельный реквизит (новый, свой реквизит, не "номер") число номера - в данном случае - "1".

Потом, при поиске ищи не по номеру документа (который с префиксом и нулями) а по своему реквизиту, который уже без префиксов и нулей.
23 FIXXXL
 
22.12.16
11:20
(21) и что ты хочешь найти в своей базе по "хз знает какому" номеру из чужой базы? абы чЁ, главное найти? :)