Преобразование числа в строку в запросе 1С 8.x

23.02.16

Разработка - Универсальные функции

В запросах 1С предприятие 8.x есть ограничение: нельзя преобразовывать число в строку.

Ограничение предсказуемо, т.к. для преобразования числа в строку возникает много  вариантов представления числа: выводить лидирующие нули, до какого знака выводить после запятой, и т.д. Система счисления тоже может быть разная: десятичная, двоичная, шестнадцатеричная или 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

Преобразование числа в строку запрос 1С

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2664    0    John_d    8    

53

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4597    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3956    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8804    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16140    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7242    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. u_n_k_n_o_w_n 34 23.02.16 21:58 Сейчас в теме
Плагиат!!!
Просьба указать первоисточник!!!
2. starik-2005 3033 23.02.16 22:05 Сейчас в теме
4. lastcontra 102 24.02.16 08:05 Сейчас в теме
(2) starik-2005, в твоей ссылке на статью написано, что это невозможно, кроме одного сообщения, что нужно вывести по разрядам (но как это сделать не расписано, и инициатор в итоге смирился, что это не возможно). Я говорю, что это возможно, вот конкретный пример в статье.
5. starik-2005 3033 24.02.16 09:17 Сейчас в теме
(4) Вы бы в смысл того, что я написал, вдумальсь бы немного. То, что Вы скопипастили один в один запрос из статьи "минимализмы", автор которой скопипастил ее из приведенных им источников - это не плохо. Но моя ссылка на древний источник, в котором это расписано, а там есть посылка в книгу знаний мисты, где данный запрос приведен в том практически виде, который приводите Вы. Странно, что автор первого коммента не уличил в плагиате Ильдаровича !или как его там?)
u_n_k_n_o_w_n; +1 Ответить
7. lastcontra 102 24.02.16 11:48 Сейчас в теме
(5) starik-2005, чтобы вдуматься в смысл того, что ты написал, надо хотя бы что-то написать.
Из того что ты написал "тут и ссылка" я должен найти очень тайную книгу Мисты и статью "минимализмы"???
Ссылку на статью кто-нибудь может прислать?
Так можно про любую статью писать - "все что придумано - плагиат тайной книги которой мы поклоняемся каждый раз в монитор".
Пока не увижу статью нет смысла трепаться. Да и мне не нужно никому доказывать, что до меня это никто не придумал, не нравится не читай.
SergeyTerentyev; +1 Ответить
10. ildarovich 7850 24.02.16 13:31 Сейчас в теме
(5) starik-2005,
То, что Вы скопипастили один в один запрос из статьи "минимализмы", автор которой скопипастил ее из приведенных им источников

вы, думаю, не потрудились разобраться в тонкостях приведенных выражений, а они могут быть интересны и поучительны. Поэтому и возводите напраслину. Прежде чем что либо "изобрести" я обычно просматриваю уже имеющиеся решения и чужие решения стараюсь не повторять. И в "минимализмах" , "минимализмах2" (с) и в статье Выразить число как строку и дату как строку в запросе опубликованы мои собственные оригинальные решения, всегда имеющие признаки какой-либо новизны.

Преобразование строки в число приведенным здесь способом - более-менее очевидное решение. В своей статье я бы его повторять не стал, но мотивы автора статьи мне понятны, претензию на оригинальность автор объяснил.

Вообще такое решение я уже видел ранее несколько раз. В ссылке на мисте оно записано наиболее "коряво". Данное решение мне не нравилось тем, что аргумент приходится записывать дважды. В моем решении остаток от деления вычисляется через функции работы с датами (в этом суть изобретения), что дает более короткую запись с одним упоминанием аргумента при нахождении каждого разряда.
cleaner_it; +1 Ответить
11. starik-2005 3033 24.02.16 19:40 Сейчас в теме
(10) ildarovich, вот честно даже не тягет с умным человеком спорить ни разу. Но про плагиат не я написал, заметьте. Уже второй раз пытаюсь защитить позицию автора на данном сайте, но из-за, видимо, проблем с логикой у 1с-ников, мне же и достается)))
3. lastcontra 102 24.02.16 08:00 Сейчас в теме
(1) u_n_k_n_o_w_n, укажи первоисточник, раз ты уже видел такую статью.
6. Sgeor 24.02.16 09:44 Сейчас в теме
Может каждому пользователю такую статейку написать? =)
http://infostart.ru/public/331805/
Istur; speshuric; mike_grig; Bassgood; u_n_k_n_o_w_n; Dimel; +6 Ответить
8. u_n_k_n_o_w_n 34 24.02.16 12:24 Сейчас в теме
9. lastcontra 102 24.02.16 12:42 Сейчас в теме
Добавил ссылку подобную на статью. Признаю, что она более ранняя, чем моя. Но моя статья не является ее копией, ничего особенного нет в этих статьях (включая мою), чтобы их нельзя было написать самому, имея какое-то тайное знание.
12. Fragster 1138 02.03.16 14:33 Сейчас в теме
Регулярно вижу статьи на тему преобразования строки в число и обратно в запросе. И каждый раз возникает вопрос: "А зачем?"
13. lastcontra 102 02.03.16 20:28 Сейчас в теме
(12) Fragster, значит ты их регулярно читаешь и пишешь отзывы, а зачем? 1. Ничего нового не узнал, 2. чего ты хочешь чтобы тебе ответили? ЗАЧЕМ????
14. Fragster 1138 03.03.16 15:01 Сейчас в теме
(13) реальная применимость этих запросов какая? Ну, кроме "смотрите, как я могу?"
ИНТЕГРА; +1 Ответить
15. speshuric 1326 11.03.16 03:12 Сейчас в теме
(14) Fragster,
В идеальном мире, где единороги какают радугой, и есть бесконечные ресурсы и бесконечное время на разработку такие запросы, наверное, не нужны. Почти всегда они говорят о каких-то неприятных вещах типа технического долга или кривой архитектуры. Но у нас, в реальном мире, они часто пригождаются. Примеры:
  • Иногда (в отчетах) очень нежелательно протягивать в источнике данных новое поле и нужно сформировать строку типа "Название+Размер". А если этот отчет на построителе отчетов, а не на СКД, то и вообще альтернатив нет, если не переписывать его полностью.
  • При вытягивании достаточно больших объёмов из базы (выгрузки или очень большие отчеты) то же самое представление на сервере будет считаться быстрее и меньше данных придётся тянуть с сервера. А если весь код выгрузки/отчета вообще оперирует только результатами запроса, то опять же - альтернатив кроме как "переписать всё" нет. Я сталкивался с отчетами и выгрузками по 100 млн строк.
  • Внешняя система даёт вам неразбираемый фильтр по такому представлению ("Название+Размер"). приходится собирать из своих полей в запросе и сравнивать с таким фильтром. Не тянуть же без фильтра всё на клиента.
  • Нужно отсортировать выборку по представлению числа в алфавитном порядке (1, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9)
В обратную сторону тоже примеры есть. Да, еще раз подчеркну, когда возникает эта задача - это явный признак, что что-то не так в системе. Но обычно решение нужно скорее, чем полная переработка решения и структур данных, особенно, если это задачи отчетов или интеграции (которые часто ставятся и решаются после реализации основного функционала).

Другой вопрос, что задача тянет на слегка продвинутую задачу на собеседовании (если без текста, то хотя бы путь решения, и это минут на 5-7). Причем для ведущего программиста можно еще и с дополнительными ограничениями (например, "нам не известна разрядность") или ожидать 3-4 решения. А для лида или архитектора еще и вопрос "что надо сделать, чтобы не писать такие запросы".
16. inf012 31.10.16 09:35 Сейчас в теме
А что в итоге универсального решения нет?
Мне все в запросе надо обработать, у меня строка получается формата:
00003.000
А мне надо просто 3 чтобы вернулось.
Как убрать лидирующие нули? и дробную часть?
Если я заранее не знаю исходное число (также получается только в запросе)
17. ildarovich 7850 31.10.16 13:13 Сейчас в теме
(16) Универсальные решения есть:
Выразить число как строку и дату как строку в запросе ,
Выразить строку как число и строку как дату в запросе.

Но вам, видимо, нужно не строку в число преобразовать, а строку в строку без ведущих нулей и всего, что справа от точки (и без самой точки).
Хотя это и можно сделать "универсально" с помощью искусственных таблиц, при вашей длине строки лучше использовать громоздкое выражение ВЫБОР КОГДА ПОДСТРОКА(Х, 1, 1) = "0" ТОГДА ПОДСТРОКА(Х, 2, 8) КОГДА ПОДСТРОКА(Х, 1, 2) = "00" ТОГДА ТОГДА ПОДСТРОКА(Х, 3, 7) ... . Аналогично потом можно определить положение точки и обрезать строку справа.
18. k9260130000 27 19.10.17 14:26 Сейчас в теме
Лидирующие нули выбором убираем. За исключением их весьма годное решение. Как - то так получилось. Надо было писать сроки производства строкой через тире собирая из 2х чисел.

ВЫБОР
		КОГДА НЕ ЗаказПокупателя.СрокИзготовленияПродукции1 = 0
			ТОГДА ВЫБОР
					КОГДА НЕ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции1 / 10 - 0.5 КАК ЧИСЛО(3, 0))) - (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции1 / 100 - 0.5 КАК ЧИСЛО(3, 0))) * 10, 1) = "0"
						ТОГДА ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции1 / 10 - 0.5 КАК ЧИСЛО(3, 0))) - (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции1 / 100 - 0.5 КАК ЧИСЛО(3, 0))) * 10, 1)
					ИНАЧЕ ""
				КОНЕЦ + ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции1 / 1 - 0.5 КАК ЧИСЛО(3, 0))) - (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции1 / 10 - 0.5 КАК ЧИСЛО(3, 0))) * 10, 1) + "-"
		ИНАЧЕ ""
	КОНЕЦ + ВЫБОР
		КОГДА НЕ ЗаказПокупателя.СрокИзготовленияПродукции2 = 0
			ТОГДА ВЫБОР
					КОГДА НЕ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции2 / 10 - 0.5 КАК ЧИСЛО(3, 0))) - (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции2 / 100 - 0.5 КАК ЧИСЛО(3, 0))) * 10, 1) = "0"
						ТОГДА ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции2 / 10 - 0.5 КАК ЧИСЛО(3, 0))) - (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции2 / 100 - 0.5 КАК ЧИСЛО(3, 0))) * 10, 1)
					ИНАЧЕ ""
				КОНЕЦ + ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции2 / 1 - 0.5 КАК ЧИСЛО(3, 0))) - (ВЫРАЗИТЬ(ЗаказПокупателя.СрокИзготовленияПродукции2 / 10 - 0.5 КАК ЧИСЛО(3, 0))) * 10, 1)
		ИНАЧЕ ""
	КОНЕЦ КАК СрокПроизводства
Показать
19. dgonson 177 20.02.19 09:09 Сейчас в теме
Дописал код примера, что бы убирались нули, для полноты картины)

ВЫБРАТЬ
    45.5 КАК Поле
ПОМЕСТИТЬ ТЗ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    ПОДСТРОКА("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) 
    КАК СтрокаПоказатель
Поместить втПредварительныеДанные    
ИЗ
    ТЗ КАК ТЗ;
	
//////////////////////////////////////////////	
ВЫБРАТЬ
	СтрокаПоказатель,
	ВЫБОР КОГДА ПОДСТРОКА(СтрокаПоказатель,1,4)="0000" ТОГДА ПОДСТРОКА(СтрокаПоказатель,5,1) 
		  КОГДА ПОДСТРОКА(СтрокаПоказатель,1,3)="000"  ТОГДА ПОДСТРОКА(СтрокаПоказатель,4,2)  
	      КОГДА ПОДСТРОКА(СтрокаПоказатель,1,2)="00"   ТОГДА ПОДСТРОКА(СтрокаПоказатель,3,3)  
	      КОГДА ПОДСТРОКА(СтрокаПоказатель,1,1)="0"   ТОГДА ПОДСТРОКА(СтрокаПоказатель,2,4)  
	ИНАЧЕ ПОДСТРОКА(СтрокаПоказатель,1,5)       
	КОНЕЦ
	+
	ВЫБОР КОГДА ПОДСТРОКА(СтрокаПоказатель,7,2)="00" ТОГДА ""
	ИНАЧЕ 
		ВЫБОР КОГДА ПОДСТРОКА(СтрокаПоказатель,8,1)="0" ТОГДА ПОДСТРОКА(СтрокаПоказатель,6,2)
		ИНАЧЕ ПОДСТРОКА(СтрокаПоказатель,6,3)
	    КОНЕЦ
	КОНЕЦ    
	
ИЗ втПредварительныеДанные
Показать
20. mark_oilbass 25.03.20 08:41 Сейчас в теме
Сейчас на выходе получается цифра 00003.000, а как получить 00000000000003?
т.е. хотелось бы получить число (14,0)
21. lastcontra 102 25.03.20 12:47 Сейчас в теме
(20) По аналогии. Добавить разряды до точки и убрать после точки. Жаль, что вы не вникли, зачем тогда эти статьи.
22. mark_oilbass 25.03.20 14:18 Сейчас в теме
(21)В том то и дело что я так и сделал.
Но у меня такая ситуация с 1 на выходе получаю вот так 99990000000001
23. mark_oilbass 25.03.20 14:25 Сейчас в теме
(21) я делаю отбор в запрос и такое получается когда Поиск идет по цифре 9
24. rabid_otter 134 23.05.20 18:25 Сейчас в теме
господи, а зачем? не легче ли выпросить у 1С нормальный cast?
неприменимо, т. к. число должно быть неотрицательным, строго определенного формата.
жуткий, неприменимый костыль, имхо.
25. lastcontra 102 25.05.20 10:14 Сейчас в теме
Согласен, это не для применения. Просто теоретические выводы. На практике не применял.
26. gybson 07.07.22 21:19 Сейчас в теме
Выбрать Представление(19)
27. Vend34 09.11.22 10:16 Сейчас в теме
В этой строке ошибка
ПОДСТРОКА("0123456789", 1 + ТЗ.Поле - (ВЫРАЗИТЬ(ТЗ.Поле / 10 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)+
Должно быть так
ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(ТЗ.Поле - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(ТЗ.Поле / 10 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)+
28. lastcontra 102 16.11.22 04:22 Сейчас в теме
(27) Так, как описано в статье, должно работать. Я проверял. Функция ПОДСТРОКА работает с дробными числами, поэтому сократил код. Может есть пример как мой запрос неправильно преобразует число в строку?
29. maxicom 17.11.23 07:36 Сейчас в теме
(28)Вот пример ошибки. Число 112506 преобразуется в 12506
30. lastcontra 102 17.11.23 11:03 Сейчас в теме
(29)
12506

Запрос, представленный в статье, рассчитан на пятизначное число в целой части. В вашем примере запрос первые 5 цифр обработал правильно. По аналогии дополните запрос и он корректно преобразует 6-значное число.
Оставьте свое сообщение