![]() |
![]() |
![]() |
|
Преобразование числа в строку в запросе | ☑ | ||
---|---|---|---|---|
0
Александр_
Тверь 13.01.09
✎
09:17
|
Привет всем! Тема когда-то вроде обсуждалась, но как-то совершенно вяло и невнятно.
Задача в запросе числовое поле преобразовать в строковое и добавить его к строке. По типу: Выбрать 12 +"34" В результает хочется получить строку "1234" (выразить и представление тоже пробовал) Вобщем преобразование такого типа никак не получается, с чем связано проблема не понятно, на сколько я знаю на SQL такая задача решается без проблем. Есть идеи? Может я что-то упустил? |
|||
1
Stepa86
13.01.09
✎
09:20
|
в запросе конкатенация строк работает только если поля строковые изначально, вроде бы... легче через код делать
|
|||
2
Александр_
Тверь 13.01.09
✎
09:22
|
Задача подразумевает необходимость сделать именно через запрос :(
Интересно, с чем связано данное ограничение? |
|||
3
Serg_1960
13.01.09
✎
09:26
|
(2) А зачем? Вам хочется в запросе все свои "проблемы" решить? Лучше алгоритм измените - без потребности в преобразовании...
|
|||
4
Александр_
Тверь 13.01.09
✎
09:35
|
(3) хе хе, табличная часть документа "Отчет о розничных продадах" содержит дополнительное поле "номер чека". Если не вдаваться в подробности, то для проведения анализа продаж с выводом коэфициента продаж зависящего от количества чеков (иногда требуется посмотреть именно номер чека), необходимо обеспечить уникальность этого номера. Один из вариантов, это к номеру чека добалять номер документа и год (т.к. номер документа имеет периодичность в год), что позволило бы без проблем получить необходимую отчетность без необходимости изменения соответствующих регистров и формирования заново проводок.
|
|||
5
Александр_
Тверь 13.01.09
✎
09:37
|
(3) тем более хотелось бы узнать с чем связано данное ограничение, т.к. оно существует только для 1С, SQL без проблем позволяет решить аналогичную задачу.
|
|||
6
selenat
13.01.09
✎
09:43
|
||||
7
Stepa86
13.01.09
✎
09:43
|
у 1С многого чего нет от SQL, очень многого
|
|||
8
DmitrO
13.01.09
✎
09:46
|
(3) Ограничение связано с тем, что преобразование числа в строку зависит от региональных настроек текущего пользователя (группировка разрядов, разделитель групп разрядов, разделитель десятичной части, представление нуля), в запросах (т.е. на сервере БД) этот механизм платформой не реализован. Сервер БД конечно же умеет это делать но не так как определено в настройках локали 1С для текущего пользователя, и 1С исходит из того, что разные сервера возможно будут это делать по разному.
|
|||
9
Александр_
Тверь 13.01.09
✎
09:47
|
(6) Спасибо за информацию!
В моем конкретно случае можно решить проблему проще, просто используя условия. Однозначно не радует данное ограничение. |
|||
10
Александр_
Тверь 13.01.09
✎
09:48
|
(8) пардон, а вот есть возможность использовать ПРЕДСТАВЛЕНИЕ(12) - что в таком случае возвращает оно? почему то что возвращается данной функцией нельзя рассматривать как строку в запросе 1с?
|
|||
11
DmitrO
13.01.09
✎
09:50
|
8+ это для (5)
|
|||
12
Garkin
13.01.09
✎
09:51
|
(4) ты хочешь обеспечить уникальность 1 полем, ну обеспечь ее двумя "ДокументОтчетРозничныхПродаж" и "НомерЧека", какая разница, полем больше, полем меньше?
|
|||
13
DmitrO
13.01.09
✎
09:52
|
Функция ПРЕДСТАВЛЕНИЕ работает на клиенте, а не на сервере.
|
|||
14
selenat
13.01.09
✎
09:52
|
(10) в запросе ПРЕДСТАВЛЕНИЕ не есть строка, насколько помню. ОНа становится строкой позже. Так что не поможет...
|
|||
15
DmitrO
13.01.09
✎
09:53
|
13+ имеется в виду сервер БД и клиент сервера БД.
|
|||
16
DmitrO
13.01.09
✎
10:03
|
13+
По сути дела, применение функции ПРЕДСТАВЛЕНИЕ в запросе (ее можно применять только в конечных полях результата запроса (в самом верхнем ВЫБРАТЬ)) это вот что: 1. Поле получаемое в запросе (аргумент функции ПРЕДСТАВЛЕНИЕ) получается (приходит) с сервера БД как есть, того типа которое получится на сервере (это может быть несколько полей в случае использования составных типов). 2. Поле в результате запроса (РзультатЗапроса) будет всегда типа Строка, полученное формированием основного представления значения в виде строки. 3. При формировании основного представления в процессе формирования данных объекта РезультатЗапроса будет использовано кеширование. |
|||
17
Stepa86
13.01.09
✎
10:06
|
(16) у меня сложилось такое впечатление, что Вы являетесь разработчиком 8ки =)
|
|||
18
Александр_
Тверь 13.01.09
✎
10:06
|
(12) вопрос только в том, как в запросе посчитать количество чеков скажем за год?
|
|||
19
DmitrO
13.01.09
✎
10:07
|
(17) оно ошибочно, я всего лишь грамотный пользователь.
|
|||
20
Александр_
Тверь 13.01.09
✎
10:07
|
DmitrO спасибо не знал :)
|
|||
21
Garkin
13.01.09
✎
10:11
|
(18) как обычно, через Количество()
|
|||
22
Александр_
Тверь 13.01.09
✎
10:16
|
(21) вот смотри
Таблица: Док. Номер чека 1 1 1 2 1 3 2 1 2 2 как получить в запросе поле содержащее общее количество чеков? |
|||
23
Александр_
Тверь 13.01.09
✎
10:18
|
не говоря уже про то, что:
1 это всего лишь одно из многих полей 2 часть полей будет не обязательно будет присутствовать в запросе 3 пользователь будет управлять запросом через Построитель Отчета (т.е. нужна не статичная табличка) |
|||
24
DmitrO
13.01.09
✎
10:21
|
(23) сгруппируй по полю Док. и все, не понимаю в чем пролема..
|
|||
25
Александр_
Тверь 13.01.09
✎
10:23
|
(24) ага, я просто сам себя запутал. Спасибо всем.
|
|||
26
kumena
13.01.09
✎
10:56
|
Загони номер дока в параметр и складывай
|
|||
27
Александр_
Тверь 13.01.09
✎
11:50
|
(26) номер дока содержит префикс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |