Функция Строка в запросе

1. AlexeyShiganov 11.04.24 11:03 Сейчас в теме
Добрый день. Столкнулся со странным (для меня) поведением функции "Строка" в запросе (1С:КА 2 (2.5.16.80)):
ВЫБРАТЬ 
ВЫРАЗИТЬ(0.56 КАК ЧИСЛО(15, 10)),
Строка(ВЫРАЗИТЬ(0.56 КАК ЧИСЛО(15, 10))),
Строка(0.56)

(10 знаков после запятой поставлено специально для выделения проблемы).

Результат:
0,56	
5600000000	
0,56

Помогите найти объяснение?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 11.04.24 11:06 Сейчас в теме
(1)версия платформы какая?
У меня на 8.3.23.2040 вот так
Прикрепленные файлы:
3. AlexeyShiganov 11.04.24 11:07 Сейчас в теме
(2) 1С:Предприятие 8.3 (8.3.22.2411)
4. nomad_irk 76 11.04.24 11:10 Сейчас в теме
(3)на другой версии(ниже/выше) попробуйте
5. DENSKR 16 11.04.24 13:35 Сейчас в теме
(1) Платфоома (8.3.23.2157) - 1. Число(0,56), 2. Строка("0,56"), 3. Строка("0,56");
Платформа (8.3.20.1914) - 1. Число(0,56), 2. Строка(",56"), 3. Строка("0,56");
6. AlexeyShiganov 11.04.24 14:00 Сейчас в теме
К сожалению, пока не могу проверить на другой платформе, но продолжил исследование на следующем коде, дабы понять логику ошибки:
		   ВЫБРАТЬ ВЫРАЗИТЬ(0.000123456 КАК ЧИСЛО(15, 10)),Строка(ВЫРАЗИТЬ(0.000123456 КАК ЧИСЛО(15, 10))),Строка(0.000123456)
ОБЪЕДИНИТЬ ВЫБРАТЬ ВЫРАЗИТЬ(0.00123456 КАК ЧИСЛО(15, 10)),Строка(ВЫРАЗИТЬ(0.00123456 КАК ЧИСЛО(15, 10))),Строка(0.00123456)
ОБЪЕДИНИТЬ ВЫБРАТЬ ВЫРАЗИТЬ(0.0123456 КАК ЧИСЛО(15, 10)),Строка(ВЫРАЗИТЬ(0.0123456 КАК ЧИСЛО(15, 10))),Строка(0.0123456)
ОБЪЕДИНИТЬ ВЫБРАТЬ ВЫРАЗИТЬ(0.123456 КАК ЧИСЛО(15, 10)),Строка(ВЫРАЗИТЬ(0.123456 КАК ЧИСЛО(15, 10))),Строка(0.123456)
ОБЪЕДИНИТЬ ВЫБРАТЬ ВЫРАЗИТЬ(1.23456 КАК ЧИСЛО(15, 10)),Строка(ВЫРАЗИТЬ(1.23456 КАК ЧИСЛО(15, 10))),Строка(1.23456)
ОБЪЕДИНИТЬ ВЫБРАТЬ ВЫРАЗИТЬ(12.3456 КАК ЧИСЛО(15, 10)),Строка(ВЫРАЗИТЬ(12.3456 КАК ЧИСЛО(15, 10))),Строка(12.3456)
ОБЪЕДИНИТЬ ВЫБРАТЬ ВЫРАЗИТЬ(123.456 КАК ЧИСЛО(15, 10)),Строка(ВЫРАЗИТЬ(123.456 КАК ЧИСЛО(15, 10))),Строка(123.456)
ОБЪЕДИНИТЬ ВЫБРАТЬ ВЫРАЗИТЬ(1234560000 КАК ЧИСЛО(20, 10)),Строка(ВЫРАЗИТЬ(1234560000 КАК ЧИСЛО(20, 10))),Строка(1234560000)
Показать


Поле1			Поле2					Поле3
0,000123456		0001234560				0,000123456
0,00123456		0012345600				0,00123456
0,0123456		0123456000				0,0123456
0,123456	        	1234560000				0,123456
1,23456	        	1,2345600000				1,23456
12,3456	       		12,3456000000			12,3456
123,456	    		123,4560000000			123,456
1 234 560 000		1 234 560 000,0000000000	1 234 560 000
Показать
7. DENSKR 16 11.04.24 16:37 Сейчас в теме
(6) А где вы ошибку нашли?
Тут скорее всего логика платформы на вывод лидирующих нулей, так как в 1м поле вы число как число выражаете, то всё логично для платформы, во 2м варианте вы задаете числу формат и задаете тип строки исходя из заданного формата у вас выводит значение, (у меня на 2х различных платформах) такого не наблюдается, далее 3й вариант - вы напрямую меняете тип числа на строку. Утверждать что на других платформах правильно, а на вашей нет нельзя так же как и в обратном порядке, получается относительно правильно везде.
andrey_sag; +1 Ответить
9. Sashares 35 11.04.24 16:44 Сейчас в теме
(7)
А где вы ошибку нашли?

Судя по данным ТС, ошибка в отсутствии "0," перед дробной частью.
Иначе как понять, что это дробная часть числа.
10. DENSKR 16 11.04.24 16:50 Сейчас в теме
(9) Ну в моем случае отсутствует "0", а в случае ТС отсутствует даже запятая, с точки зрения 1С неправильно согласен, но если это фича а не баг, так как задается формат в выражении замены типа? )))
11. Sashares 35 11.04.24 16:51 Сейчас в теме
(10) Не знаю в чем причина, но кажется, имеет смысл написать на ЛК.
12. vadim.semyonov.rzn 12.04.24 09:21 Сейчас в теме
(6)
продолжил исследование на следующем коде
Могу предположить только глюк конкретного релиза, поскольку на платформах 8.3.22.2239, 8.3.23.2040 и 8.3.24.1368 результат одинаковый:
Прикрепленные файлы:
8. DENSKR 16 11.04.24 16:43 Сейчас в теме
Но 100 % поведение релиза платформы так как имеются различия. Например на Sof есть тема по c++ но это уже совсем другая история...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот