Вход | Регистрация
 

Как получить число целых миллионов из числа, используя только операторы языка запросов?

Как получить число целых миллионов из числа, используя только операторы языка запросов?
Я
   Dzenn
 
26.07.19 - 17:22
Привет!

Есть номера заказов, числа от 1000000 до 25000000. Все заказы, начинающиеся на 1 - это сегмент 1, все, начинающиеся на 2 - это сегмент 2, и так далее, до сегмента 25. Как, используя только операторы языка запросов, то есть ( + , -, *, /, сумма, максимум, минимум, среднее ) получить из номера сегмент?
 
 
   H A D G E H O G s
 
1 - 26.07.19 - 17:25
Не тащить такую фигню в запросы.
   Dzenn
 
2 - 26.07.19 - 17:26
(1) бляяяяяяяяя.......
   palsergeich
 
3 - 26.07.19 - 17:27
Язык запросов 1с не предназначен для таких операций.
Разбирайте и храните данные отдельно от такой сущности как код.
   palsergeich
 
4 - 26.07.19 - 17:28
Сделать то можно, но производительность данного решения будет под огромным сомнением.
   RomanYS
 
5 - 26.07.19 - 17:29
выразить(ТвоеЧисло/1000000 - 0.5 как Число(10,0))
   lodger
 
6 - 26.07.19 - 17:29
(0)
выразить(ИмяТаблицы.Номер / 1000000 как число (5,0)) КАК НомерСегмента
   palsergeich
 
7 - 26.07.19 - 17:30
(5) (6) а теперь выведите мне все товары 25 сегмента и давайте посмотрим на план)
   palsergeich
 
8 - 26.07.19 - 17:31
А завтра окажется что по одному сегменту миллиона мало и переходим на миллиарды.
   H A D G E H O G s
 
9 - 26.07.19 - 17:31
Без ВЫБОР КОГДА тут никак.
Производительность будет нормальная, читать эту дрянь потом тяжко - отмывать кровь из глаз тяжело.
   palsergeich
 
10 - 26.07.19 - 17:32
(9) ну как нормальная постоянный фулл скан.
   azernot
 
11 - 26.07.19 - 17:33
ВЫРАЗИТЬ((НомерЗаказа-500000) / 1000000 КАК ЧИСЛО(2, 0)) КАК Сегмент
   Dzenn
 
12 - 26.07.19 - 17:33
(5) спасибо, точно :-)
   Dzenn
 
13 - 26.07.19 - 17:34
(11) да, спасибо, или так :-)
   H A D G E H O G s
 
14 - 26.07.19 - 17:34
(10) Это же не в условии, в результирующем поле
   lodger
 
15 - 26.07.19 - 17:36
(7) (10) если уж надо в условие, то условие надо модифицировать.
ГДЕ
ИмяТаблицы.Номер > &НомерСегментаСнулями
   palsergeich
 
16 - 26.07.19 - 17:38
(14) ну а зачем ещё нужен? 100% для отборов в дальнейшем, а если все очень плохо то для РЛС.
ТС послушная дядю Пашу. Я тоже был молод и любил арифметику в запросах похожего вида, а потом наступил себе на уй ей же.
Не хочешь конфу коверкать - сделай доп реквизит хотя бы.
   azernot
 
17 - 26.07.19 - 17:39
Если НомерЗаказа - строка, то без выбора не обойтись

    ВЫБОР
        КОГДА НомерЗаказа ПОДОБНО "25%"
            ТОГДА 25
        КОГДА НомерЗаказа ПОДОБНО "24%"
            ТОГДА 24
        КОГДА НомерЗаказа ПОДОБНО "23%"
            ТОГДА 23
        КОГДА НомерЗаказа ПОДОБНО "22%"
            ТОГДА 22
....
        КОГДА НомерЗаказа ПОДОБНО "1%"
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК Сегмент
   lodger
 
18 - 26.07.19 - 17:40
(17) нам обещали число
   azernot
 
19 - 26.07.19 - 17:40
(0) Я очень надеюсь, что этот запрос тебе нужен, чтобы прошерстить историю заказов в базе и правильно заполнить реквизит "НомерСегмента", чтобы потом уже использовать его.
   palsergeich
 
20 - 26.07.19 - 17:40
(17) а потом ещё 150 сегментов добавится.
Просто потому что шеф захотел.
Почему сразу не сделать нормально??
   olegves
 
21 - 26.07.19 - 17:40
а можно и так:
НомерЗакакза - НомерЗаказа%1000000 КАК Сегмент
   azernot
 
22 - 26.07.19 - 17:41
(20) Я двумя руками за то, чтобы сделать "нормально". Но "нормально" можно сделать начиная с сегодня, а что делать с тем, что было вчера?
   palsergeich
 
23 - 26.07.19 - 17:42
(22) привести их к нормально сегодня.
Чем больше такого копится исторически тем больнее жахнет.
Завалы тоже надо разгребать.
   lodger
 
24 - 26.07.19 - 17:43
(21) Синтаксическая ошибка "%".
   palsergeich
 
25 - 26.07.19 - 17:44
(23) на моей памяти у заказчика весь отдел на улицу пошел после выявления такого багажа тех долга.
   Dzenn
 
26 - 26.07.19 - 17:44
(19) (20) Заказы - это номера из производственной системы, подключённой к 1С с помощью внешнего источника данных. Они не хранятся в 1С, и сегменты нужно получать "на лету". Я и сам должен был найти ответ из (11), но что-то сильно подтупливаю сегодня. А по поводу ваших комментариев - кто-то флудит, а кто-то отвечает по сути, ищите разницу.
   RomanYS
 
27 - 26.07.19 - 17:47
(7) не знаю что там в плане
На 0.5М проводок время выполнения запросов почти одинаковое (между быстрее на 5%)
    
"ВЫБРАТЬ
    |    ТЧ.Регистратор,
    |    ПРЕДСТАВЛЕНИЕ(ТЧ.Регистратор)
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК ТЧ
    |ГДЕ
    |    (ВЫРАЗИТЬ(ТЧ.Сумма / 1000 - 0.5 КАК ЧИСЛО(10, 0))) = 1";
    
    
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    ТЧ.Регистратор,
    |    ПРЕДСТАВЛЕНИЕ(ТЧ.Регистратор)
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК ТЧ
    |ГДЕ
    |    ТЧ.Сумма между 1000 И 1999.99";
   H A D G E H O G s
 
28 - 26.07.19 - 17:48
(27) Епстественно, везде скан, поэтому одинаковое.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.