|
Как получить число целых миллионов из числа, используя только операторы языка запросов? | ☑ | ||
---|---|---|---|---|
0
Dzenn
гуру
26.07.19
✎
17:22
|
Привет!
Есть номера заказов, числа от 1000000 до 25000000. Все заказы, начинающиеся на 1 - это сегмент 1, все, начинающиеся на 2 - это сегмент 2, и так далее, до сегмента 25. Как, используя только операторы языка запросов, то есть ( + , -, *, /, сумма, максимум, минимум, среднее ) получить из номера сегмент? |
|||
1
H A D G E H O G s
26.07.19
✎
17:25
|
Не тащить такую фигню в запросы.
|
|||
2
Dzenn
гуру
26.07.19
✎
17:26
|
(1) бляяяяяяяяя.......
|
|||
3
palsergeich
26.07.19
✎
17:27
|
Язык запросов 1с не предназначен для таких операций.
Разбирайте и храните данные отдельно от такой сущности как код. |
|||
4
palsergeich
26.07.19
✎
17:28
|
Сделать то можно, но производительность данного решения будет под огромным сомнением.
|
|||
5
RomanYS
26.07.19
✎
17:29
|
выразить(ТвоеЧисло/1000000 - 0.5 как Число(10,0))
|
|||
6
lodger
26.07.19
✎
17:29
|
(0)
выразить(ИмяТаблицы.Номер / 1000000 как число (5,0)) КАК НомерСегмента |
|||
7
palsergeich
26.07.19
✎
17:30
|
(5) (6) а теперь выведите мне все товары 25 сегмента и давайте посмотрим на план)
|
|||
8
palsergeich
26.07.19
✎
17:31
|
А завтра окажется что по одному сегменту миллиона мало и переходим на миллиарды.
|
|||
9
H A D G E H O G s
26.07.19
✎
17:31
|
Без ВЫБОР КОГДА тут никак.
Производительность будет нормальная, читать эту дрянь потом тяжко - отмывать кровь из глаз тяжело. |
|||
10
palsergeich
26.07.19
✎
17:32
|
(9) ну как нормальная постоянный фулл скан.
|
|||
11
azernot
26.07.19
✎
17:33
|
ВЫРАЗИТЬ((НомерЗаказа-500000) / 1000000 КАК ЧИСЛО(2, 0)) КАК Сегмент
|
|||
12
Dzenn
гуру
26.07.19
✎
17:33
|
(5) спасибо, точно :-)
|
|||
13
Dzenn
гуру
26.07.19
✎
17:34
|
(11) да, спасибо, или так :-)
|
|||
14
H A D G E H O G s
26.07.19
✎
17:34
|
(10) Это же не в условии, в результирующем поле
|
|||
15
lodger
26.07.19
✎
17:36
|
(7) (10) если уж надо в условие, то условие надо модифицировать.
ГДЕ ИмяТаблицы.Номер > &НомерСегментаСнулями |
|||
16
palsergeich
26.07.19
✎
17:38
|
(14) ну а зачем ещё нужен? 100% для отборов в дальнейшем, а если все очень плохо то для РЛС.
ТС послушная дядю Пашу. Я тоже был молод и любил арифметику в запросах похожего вида, а потом наступил себе на уй ей же. Не хочешь конфу коверкать - сделай доп реквизит хотя бы. |
|||
17
azernot
26.07.19
✎
17:39
|
Если НомерЗаказа - строка, то без выбора не обойтись
ВЫБОР КОГДА НомерЗаказа ПОДОБНО "25%" ТОГДА 25 КОГДА НомерЗаказа ПОДОБНО "24%" ТОГДА 24 КОГДА НомерЗаказа ПОДОБНО "23%" ТОГДА 23 КОГДА НомерЗаказа ПОДОБНО "22%" ТОГДА 22 .... КОГДА НомерЗаказа ПОДОБНО "1%" ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК Сегмент |
|||
18
lodger
26.07.19
✎
17:40
|
(17) нам обещали число
|
|||
19
azernot
26.07.19
✎
17:40
|
(0) Я очень надеюсь, что этот запрос тебе нужен, чтобы прошерстить историю заказов в базе и правильно заполнить реквизит "НомерСегмента", чтобы потом уже использовать его.
|
|||
20
palsergeich
26.07.19
✎
17:40
|
(17) а потом ещё 150 сегментов добавится.
Просто потому что шеф захотел. Почему сразу не сделать нормально?? |
|||
21
olegves
26.07.19
✎
17:40
|
а можно и так:
НомерЗакакза - НомерЗаказа%1000000 КАК Сегмент |
|||
22
azernot
26.07.19
✎
17:41
|
(20) Я двумя руками за то, чтобы сделать "нормально". Но "нормально" можно сделать начиная с сегодня, а что делать с тем, что было вчера?
|
|||
23
palsergeich
26.07.19
✎
17:42
|
(22) привести их к нормально сегодня.
Чем больше такого копится исторически тем больнее жахнет. Завалы тоже надо разгребать. |
|||
24
lodger
26.07.19
✎
17:43
|
(21) Синтаксическая ошибка "%".
|
|||
25
palsergeich
26.07.19
✎
17:44
|
(23) на моей памяти у заказчика весь отдел на улицу пошел после выявления такого багажа тех долга.
|
|||
26
Dzenn
гуру
26.07.19
✎
17:44
|
(19) (20) Заказы - это номера из производственной системы, подключённой к 1С с помощью внешнего источника данных. Они не хранятся в 1С, и сегменты нужно получать "на лету". Я и сам должен был найти ответ из (11), но что-то сильно подтупливаю сегодня. А по поводу ваших комментариев - кто-то флудит, а кто-то отвечает по сути, ищите разницу.
|
|||
27
RomanYS
26.07.19
✎
17:47
|
(7) не знаю что там в плане
На 0.5М проводок время выполнения запросов почти одинаковое (между быстрее на 5%) "ВЫБРАТЬ | ТЧ.Регистратор, | ПРЕДСТАВЛЕНИЕ(ТЧ.Регистратор) |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК ТЧ |ГДЕ | (ВЫРАЗИТЬ(ТЧ.Сумма / 1000 - 0.5 КАК ЧИСЛО(10, 0))) = 1"; Запрос.Текст = "ВЫБРАТЬ | ТЧ.Регистратор, | ПРЕДСТАВЛЕНИЕ(ТЧ.Регистратор) |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК ТЧ |ГДЕ | ТЧ.Сумма между 1000 И 1999.99"; |
|||
28
H A D G E H O G s
26.07.19
✎
17:48
|
(27) Епстественно, везде скан, поэтому одинаковое.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |