Имя: Пароль:
1C
1С v8
Функции в запросе в 1С 8.2
0 Umga2002
 
13.11.12
20:33
Есть простенкий запрос
Запрос.Текст="ВЫБРАТЬ
     |    АвансовыйОтчет.Ссылка,
     |    АвансовыйОтчет.Номер,
     |    АвансовыйОтчет.Дата
     |ИЗ
     |    Документ.АвансовыйОтчет КАК АвансовыйОтчет
     |ГДЕ
     |    АвансовыйОтчет.Дата МЕЖДУ &ДтНач И &ДтКон";

Как вввыборке избавиться от лидирующих нулей в номере документа?
1 Armando
 
13.11.12
20:34
избавляйся потом
2 Umga2002
 
13.11.12
20:36
Интересно сразу в запросе.....
3 H A D G E H O G s
 
13.11.12
20:37
нельзя
4 shuhard
 
13.11.12
20:37
(2) переходи на СКД
5 Armando
 
13.11.12
20:38
Переходи на семерку
6 Umga2002
 
13.11.12
20:39
Ну Вот а говорили в 8.2 ВСЕ ВСЕ ВСЕ Можно!!!!
7 МихаилМ
 
13.11.12
20:42
типичная болезнь 1с-ника
путать получение данных с представлением.
8 Armando
 
13.11.12
20:42
(6) ведешься на всякое, как маленький
9 Ork
 
13.11.12
20:45
(7) Типичная болезнь - вестись на терки за то, что в восьмерке все как у взрослых...
10 PR
 
13.11.12
20:49
(6) Не плачь. Пиши ВЫБОР.
11 kotletka
 
13.11.12
20:58
(6)что-за даунский подход: вот скажите как написать в 8.2 свою ОС? нельзя? а вот говорили что "8.2 ВСЕ ВСЕ ВСЕ Можно"
12 IamAlexy
 
13.11.12
21:02
(2) ну сделай в запросе, вчем проблема?
сделай без всяких функций
13 Нуф-Нуф
 
13.11.12
21:02
Выбор Когда АвансовыйОтчет.Номер = "00000001" Тогда 1
Когда АвансовыйОтчет.Номер = "00000002" Тогда 2
...
Конец
14 Ork
 
13.11.12
21:02
(11) Вообще использование выражений в запросах в инструкции SELECT - это далеко не "написать свою ОС". Это можно сказать стандарт. Начиная еще с конца 90-х.
15 ПиН
 
13.11.12
21:03
а зачем в запросе от нулей-то избавляться, чо вы там курите?
16 IamAlexy
 
13.11.12
21:05
(15) глупый чоле?

чтобы потом сделать так: областьмакета.параметры.загрузить(выборкаизрезультатов);
17 Umga2002
 
13.11.12
21:07
Нужно выбрать все документы с номером 12345
Хотя в номерах могут быть лидирующие НУЛИ.

Делаю Чистку Огромной БД Мусору набрали "умники" переносили из 77 в 8.2.

Двойников наплодили и свалили......
18 IamAlexy
 
13.11.12
21:09
(17) ну собственно сомнительно что документ с номером "00000001" от 01.03.12 и документ с номером "00001" от 08.09.12 это "двойники"
19 zulu_mix
 
13.11.12
21:09
не чистку ты делаешь, а копрокод
20 IamAlexy
 
13.11.12
21:11
+(18) а самое прикольное когда с этими номерами, вернее их печатным вариантом "1" ушли исходящие документы клиентам...
21 ПиН
 
13.11.12
21:14
(16) лучше форматнуть эту строчку после запроса, запрос лочит базу, а то что ты с макетом делаешь всем пох...
22 Defender aka LINN
 
13.11.12
21:19
(17) Про ПОДОБНО месье не в курсе :)
23 Umga2002
 
13.11.12
21:23
По Поводу Надо или Нет Неспорю.
Клиент Всегда ПРАВ.
Работу я выполнил. Но Как то Коряво получилось и долго...
Может ЧТО Сообщество посоветует......
24 kotletka
 
13.11.12
21:24
(22)как подобно разиличит 0001 и 00001? 00011?
25 kotletka
 
13.11.12
21:25
*разиличит=различит
26 zulu_mix
 
13.11.12
21:25
>>Может ЧТО Сообщество посоветует.
прострелить коленку?
27 Umga2002
 
13.11.12
21:26
(24) Вот мне и надо было выловить первого и второго....
28 Umga2002
 
13.11.12
21:27
Коленку прострелить Хозяину этой базы я и сам могу посоветовать....
29 kotletka
 
13.11.12
21:27
(14)для 1с 8.2 это побоку, там это не стандарт как бэ
30 kotletka
 
13.11.12
21:28
(28)в запросе никак! хотя вру можно как в (13) перебрать все номера
31 Umga2002
 
13.11.12
21:29
В принципе и решил перебором  но долго считала....
32 svent0vit
 
13.11.12
21:51
ПОДСТРОКА не катит?
33 ERWINS
 
13.11.12
22:18
выбор
когда подстрока(..,1,1)="0"
выбор
когда подстрока(..,2,1)="0"
выбор
когда подстрока(..,3,1)="0"

итд
34 МихаилМ
 
13.11.12
22:43
(33)
тут подсказали более красивый вариант
v8: Как можно определить длину строк в запросе
35 Вяйнемейнен
 
13.11.12
22:53
Если в номерах нет букв, то ВЫРАЗИТЬ КАК ЧИСЛО (10, 0)
36 PR
 
13.11.12
23:29
(35) Не пори чушь
37 КошерныйТролль
 
13.11.12
23:31
(0) а зачем от них избавляться, они же могут пригодиться
38 Umga2002
 
13.11.12
23:41
Номера 0001 и 000000001 по заданию являются двойниками
"умников" было несколько у одного что-то начало получаться но его отвлекли(уехал) не доделал.
все последующие похоже только испортили дело.
а ГБ уже на формировала Книги и закрыла месяц.
Попросили почистить БД.
Вот и пришлось мудрить отлавливая двойников.

по ссылке в (34) тоже понравился пост 16(надо попробовать)
39 Dethmont
 
14.11.12
00:47
Можно еще вот так например

ВЫБРАТЬ
   Договор.Ссылка,
   ВЫБОР
       КОГДА Договор.Номер ПОДОБНО "%00000000%"
           ТОГДА ПОДСТРОКА(Договор.Номер, 9, 1)
       КОГДА Договор.Номер ПОДОБНО "%0000000%"
           ТОГДА ПОДСТРОКА(Договор.Номер, 8, 2)
       КОГДА Договор.Номер ПОДОБНО "%000000%"
           ТОГДА ПОДСТРОКА(Договор.Номер, 7, 3)
       КОГДА Договор.Номер ПОДОБНО "%00000%"
           ТОГДА ПОДСТРОКА(Договор.Номер, 6, 4)
       КОГДА Договор.Номер ПОДОБНО "%0000%"
           ТОГДА ПОДСТРОКА(Договор.Номер, 5, 5)
       КОГДА Договор.Номер ПОДОБНО "%000%"
           ТОГДА ПОДСТРОКА(Договор.Номер, 4, 6)
       КОГДА Договор.Номер ПОДОБНО "%00%"
           ТОГДА ПОДСТРОКА(Договор.Номер, 3, 7)
       КОГДА Договор.Номер ПОДОБНО "%0%"
           ТОГДА ПОДСТРОКА(Договор.Номер, 2, 8)
       ИНАЧЕ Договор.Номер
   КОНЕЦ КАК Номер
ИЗ
   Документ.Договор КАК Договор
40 Umga2002
 
14.11.12
00:49
(39)Спасибо попробую!!!
41 Dethmont
 
14.11.12
00:52
Нее туплю. Так Не проканает
42 Dethmont
 
14.11.12
00:58
Вот так
ВЫБРАТЬ
   Договор.Ссылка,
   ВЫБОР
       КОГДА ПОДСТРОКА(Договор.Номер, 1, 8) = "00000000"
           ТОГДА ПОДСТРОКА(Договор.Номер, 9, 1)
       КОГДА ПОДСТРОКА(Договор.Номер, 1, 7) = "0000000"
           ТОГДА ПОДСТРОКА(Договор.Номер, 8, 2)
       КОГДА ПОДСТРОКА(Договор.Номер, 1, 6) = "000000"
           ТОГДА ПОДСТРОКА(Договор.Номер, 7, 3)
       КОГДА ПОДСТРОКА(Договор.Номер, 1, 5) = "00000"
           ТОГДА ПОДСТРОКА(Договор.Номер, 6, 4)
       КОГДА ПОДСТРОКА(Договор.Номер, 1, 4) = "0000"
           ТОГДА ПОДСТРОКА(Договор.Номер, 5, 5)
       КОГДА ПОДСТРОКА(Договор.Номер, 1, 3) = "000"
           ТОГДА ПОДСТРОКА(Договор.Номер, 4, 6)
       КОГДА ПОДСТРОКА(Договор.Номер, 1, 2) = "00"
           ТОГДА ПОДСТРОКА(Договор.Номер, 3, 7)
       КОГДА ПОДСТРОКА(Договор.Номер, 1, 1) = "0"
           ТОГДА ПОДСТРОКА(Договор.Номер, 2, 8)
       ИНАЧЕ Договор.Номер
   КОНЕЦ КАК Номер
ИЗ
   Документ.Договор КАК Договор
43 Umga2002
 
15.11.12
17:36
(42)Спасибо последний вариант работает очень быстро!!!!
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.