Добрый день, уважаемые гуру!
Считал себя не новичком в 1С, но тут столкнулся с бедой, прошу помощи
Суть проблемы такова: имеем таблицу значений. Помещаем её во временную таблицу запроса. Оператор ВЫРАЗИТЬ, естественно, при этом используем. Но если в исходной таблице значений у нас содержится число с точностью до 18 знаков, то во временной оно уже имеет точность 9 знаков (и не спрашивайте, зачем мне столько)
Код для тестирования примерно такой:
Процедура КнопкаВыполнитьНажатие(Кнопка)
тб1 = Новый ТаблицаЗначений;
Массив = Новый Массив;
КЧ = Новый КвалификаторыЧисла(31, 18);
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
тб1.Колонки.Добавить("Цена", ОписаниеТиповЧ);
НоваяСтрока = тб1.Добавить();
НоваяСтрока.Цена = 1/3; // 0.333333333333333333
Сообщить("Цена в строке 1 = "+Строка(тб1[0].Цена));
Запрос1 = Новый Запрос;
Запрос1.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос1.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(тбЗначений.Цена КАК ЧИСЛО(31, 18)) КАК Цена
|ПОМЕСТИТЬ ВТТаблица
|ИЗ
| &тбЗначений КАК тбЗначений
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВЫРАЗИТЬ(ВТТаблица.Цена КАК ЧИСЛО(31, 18)) КАК Цена
|ИЗ
| ВТТаблица КАК ВТТаблица";
Запрос1.УстановитьПараметр("тбЗначений", тб1);
тб2 = Запрос1.Выполнить().Выгрузить();
Сообщить("Цена в строке 1 = "+Строка(тб2[0].Цена));
КонецПроцедуры
При выполнении получаем результат:
Цена в строке 1 = 0,333333333333333333
Цена в строке 1 = 0,333333333
Использовал релизы платформы 8.2.19.76 (файловая и sql) и 8.3.6.2041 (файловая)
Подскажите пожалуйста, где тут собака порылась? Как запихнуть в ВТ требуемую точность? Или где почитать. Я уже и ВЫРАЗИТЬ(*1000000000...)/1000000000 пробовал
Заранее благодарен