Ограничение предсказуемо, т.к. для преобразования числа в строку возникает много вариантов представления числа: выводить лидирующие нули, до какого знака выводить после запятой, и т.д. Система счисления тоже может быть разная: десятичная, двоичная, шестнадцатеричная или n-ичная.
Данное ограничение можно преодолеть с помощью математической операции округления. Далее представлен текст запроса, который вернет строку "Число приведенное к строке 97443.456".
ВЫБРАТЬ
97443.456 КАК Поле
ПОМЕСТИТЬ ТЗ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"Число приведенное к строке " +
ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 10000 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 100000 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 1000 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 10000 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 100 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 1000 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 10 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 100 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
ПОДСТРОКА("0123456789", 1 + ТЗ.Поле - (ВЫРАЗИТЬ(ТЗ.Поле / 10 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)+
"."+
ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 0.1 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 1 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 0.01 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 0.1 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1) +
ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле / 0.001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 0.01 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
КАК СтрокаПоле
ИЗ
ТЗ КАК ТЗ
|
Рассмотрим как это работает. Каждая цифра вычисляется и выводится отдельно. Для цифры в разряде i вычисление проводится следующим образом
Операция Цел(x) реализуется в запросе 1С 8.x с помощью округления Выразить. Несложно проверить:
Цел(x)=Выразить(x - 0.5 КАК ЧИСЛО(14,0))
Мы получили весь набор цифр числа в виде чисел от 0 до 9. Сделать из них строки можно с помощью Строковой функции ПОДСТРОКА("0123456789",1+Цифра).
Аналогично можно реализовать вывод чисел в другой системе счисления.
Подобный функционал можно просмотреть здесь: http://kb.mista.ru/article.php?id=666