|
Как в запросе получить форматированную строку из номера? | ☑ | ||
---|---|---|---|---|
0
Stim
17.11.15
✎
19:00
|
Есть номер документа типа
БП-0000012 00001023 и пр Нужно в запросе получить из них значения: "12" "1023" как это можно сделать? в число я так понимаю, бесполезно номер переводить? |
|||
1
Горогуля
17.11.15
✎
19:01
|
не надо заниматься хренью
|
|||
2
spectre1978
17.11.15
✎
19:05
|
в цикле пробежаться по номеру, если очередной символ находится в строке "0123456789", то добавить его к временной строке, иначе переход к следующему символу.
Затем вернуть Число (Временная строка). |
|||
3
Stimcool
17.11.15
✎
19:20
|
Надо в запроосе
|
|||
4
Stimcool
17.11.15
✎
19:21
|
(1) не можешь - так и скажи!
|
|||
5
User_Agronom
17.11.15
✎
19:33
|
(0) Была подобная задача. Решал в три этапа:
1. Получал запросом список документов и необходимых результатов. Выгружал в ТЗ 2. По ТЗ мчался циклом меняя значения столбца "Номер" 3. Полученную ТЗ передавал в новый запрос, с окончательными танцами и плясками. Может и можно извернутся как-то, но времени на разработку потребуется в разы больше. |
|||
6
spectre1978
17.11.15
✎
19:42
|
(3) сорьки, не увидел. Тогда дохлый номер. Только как в (5)
|
|||
7
DrShad
17.11.15
✎
20:12
|
В поиск уже было преобразование строки в число запросом
|
|||
8
RomanYS
17.11.15
✎
20:14
|
(0) держи,
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка, РеализацияТоваровУслуг.Номер ПОМЕСТИТЬ Доки ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1 КАК Ч ПОМЕСТИТЬ Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 10 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 11 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 12 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 13 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 14 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 15 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Доки.Ссылка, Доки.Номер, ПОДСТРОКА(Доки.Номер, МИНИМУМ(ЕСТЬNULL(Числа.Ч, 99)), 15) КАК НомерНачинаяСПервойЗначащейЦифры ИЗ Доки КАК Доки ЛЕВОЕ СОЕДИНЕНИЕ Числа КАК Числа ПО (ПОДСТРОКА(Доки.Номер, Числа.Ч, 1) ПОДОБНО "[1-9]") СГРУППИРОВАТЬ ПО Доки.Ссылка, Доки.Номер остальным камнями(и другими каками) не кидаться, написано здесь и сейчас для проверки теоретической возможности :) |
|||
9
Горогуля
17.11.15
✎
20:20
|
(3) убеди
|
|||
10
Ildarovich
17.11.15
✎
20:23
|
Вот статья на эту тему: http://catalog.mista.ru/public/170336/ . Там есть нужное решение. Статья называется Выразить строку как число и строку как дату в запросе .
|
|||
11
Горогуля
17.11.15
✎
20:25
|
(8) дада. БП0012-кака
|
|||
12
RomanYS
17.11.15
✎
20:28
|
(11) НомерНачинаяСПервойЗначащейЦифры = "12-кака"
Всё как заказывал ТС )) |
|||
13
Горогуля
17.11.15
✎
20:30
|
(12) это где он так? ;)
|
|||
14
DrShad
17.11.15
✎
20:30
|
В (10) и такие беды решаются
|
|||
15
Горогуля
17.11.15
✎
20:31
|
БП00-00034 ещё могу. Но не буду - агроном просил
|
|||
16
Горогуля
17.11.15
✎
20:32
|
(15) радон, Роман
|
|||
17
RomanYS
17.11.15
✎
20:35
|
(13) его примеры попадут 100%, других он не давал
(15) БП00-00034 даст "34", не вижу никаких вопросов (16) что такое "радон"? |
|||
18
ДенисЧ
17.11.15
✎
20:35
|
Какую-то фигню вы тут несёте...
|
|||
19
ДенисЧ
17.11.15
✎
20:36
|
(17) "что такое "радон"?"
Газ такой... |
|||
20
Горогуля
17.11.15
✎
20:37
|
(19) это пардон по мнению свихнувшейся самозамены планшета
|
|||
21
RomanYS
17.11.15
✎
20:37
|
(19) т.е. (17) пытается меня отравить? :)
|
|||
22
ДенисЧ
17.11.15
✎
20:38
|
(21) Ты уже отравлен, не расстраивайся
|
|||
23
Горогуля
17.11.15
✎
20:39
|
(17) лениво думать.. БП01-0003 - это 3?
|
|||
24
Горогуля
17.11.15
✎
20:41
|
В общем, я за женщину для ТС. Хотя бы резиновую. А то хочет всякую ересь
|
|||
25
DrShad
17.11.15
✎
20:44
|
(24) ты бы (10) почитал для начала
|
|||
26
RomanYS
17.11.15
✎
20:44
|
(23) "1-0003"
(8) возвращает подстроку, начиная с первой значащей (не 0) цифры. Понятно, что можно модифицировать, так чтобы получилось "3". Что хочет ТС в такой ситуации - неизвестно. (24) он вроде не жаловался |
|||
27
Горогуля
17.11.15
✎
20:46
|
(25) чукча не читатель
|
|||
28
spectre1978
17.11.15
✎
21:26
|
Языку запросов 1С явно не хватает процедурного расширения. Мож, в версии 9 платформы запилят? :)
|
|||
29
DrShad
17.11.15
✎
21:31
|
Всего там хватает
|
|||
30
RomanYS
17.11.15
✎
22:12
|
(29) мне тоже хватает
(28) не хватает функционала запросов - используй СКД, например |
|||
31
rsv
17.11.15
✎
22:18
|
(0) Да в принципе в языке запросов 1С "в число я так понимаю, бесполезно номер переводить? " этого вы не сделаете без доп.надстройки СКД. А так курить функции строковые или иные СУБД где база живет
|
|||
32
rsv
17.11.15
✎
22:21
|
select convert( int,'00001023') дает что нужно . Отсечь буквы - догадаетесь.
|
|||
33
Stimcool
17.11.15
✎
22:35
|
(9) ты не похож на английскую королеву
|
|||
34
Stimcool
17.11.15
✎
22:37
|
(8) спасибо, я завтра проверю
Зы. Эта штука нули в номере все не отсечет? |
|||
35
RomanYS
17.11.15
✎
22:42
|
(34) прочитай (26)
|
|||
36
Stim
18.11.15
✎
09:58
|
(8) Спасибо, работает
|
|||
37
Stim
18.11.15
✎
10:02
|
зы. если кому интересно - стандартный клиент-банк в 1С работает так: Берет таблицу файла и соединяет её с таблицей платежек - по дате и по номеру счета контрагента.
Если в один день по контрагенту было несколько платежек, то на строку таблицы будет несколько таких платежек. Потом в цикле он перебирает эти платежки, отсекает от номера документа все лишнее, находит/не находит платежку, соответствующую строке файла. Проблема в том, что когда по одному контрагенту в день около 3 тыс платежек - получается выборка с 3000*3000 строк и клиент-банк медленно умирает |
|||
38
Горогуля
18.11.15
✎
10:55
|
опять не убедил
|
|||
39
Stim
18.11.15
✎
11:03
|
(38) какой ты требовательный!
|
|||
40
Stim
18.11.15
✎
11:03
|
+ я начинаю видеть в тебе английскую королеву
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |