1с выразить как число в запросе
Перейти к содержимому

1с выразить как число в запросе

  • автор:

ВЫРАЗИТЬ КАК ЧИСЛО в запросе

Встроенная функция запроса ВЫРАЗИТЬ() используется не только для приведения, но и для округления чисел.

Для этого используется такой синтаксис:

ВЫРАЗИТЬ(<ОбрабатываемоеЧисло> КАК ЧИСЛО (<ДлинаЦелойЧасти>.<ДлинаДробнойЧасти>))

Общие особенности использования в запросе

Если в качестве параметра передано не числовое значение, это может не вызывать ошибки выполнения запроса, но значение корректно не обработается:

Например, если передан NULL или он сформировался при соединениях таблиц, значение на выходе останется NULL:

vyrazit-null-kak-chislo

Передача же «Неопределено» вызывает ошибку «Несовместимые типы ВЫРАЗИТЬ»:

vyrazit-neopredeleno-kak-chislo

  • Ссылочные типы или значения БУЛЕВО вызывают такую же ошибку (ИСТИНА не приводится к 1, а ЛОЖЬ к 0).
  • ВЫРАЗИТЬ строку как число также нельзя, используя эту функцию.

Поэтому следует обрабатывать/проверять значение до его передачи в качестве параметра функции.

Обработка значения производится по методам округления (0.5 округляется до 1.0), поэтому, если требуется получить целое значение, то следует перед округлением вычесть 0.5 (половину цены шага)

Для округления до десятых в меньшую сторону вычесть 0.5, до сотых 0.05.

Демонстрация использования ВЫРАЗИТЬ в запросе для округления

primery-vyrazit-kak-chislo

Все таки есть еще в мире вещи, на которые можно положиться. Например, еще ни разу не было рекламного клипа с плохим концом.

— Роберт Орбен

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

(19) ВЫРАЗИТЬ не работает в конце запроса, в конце работает ПРЕДСТАВЛЕНИЕ.

(14) Думаю, что не ругнется, просто в значении типа строка значения типа число не будет обнаружено, а поэтому вернется какая-нить пустая кака, может неопределено.

(20) Можно и так, но победить оч захотелось.
(22) )) Хорошая статья, надо проверить как механизм с пробелами борется. По идее должен. Мимолетом на сколько смог код вкурить: там вроде сравнение на вхождение в 0123456789 проверяется, так что пробелы в сад вроде..

Я про то, когда Код в справочнике строковый, то в конце пробелы до длины строки добавляются. Они и костыли в колеса добавляют. А ни ltrim-rtrim ни right 1c не умеет.

(22) Все работает. Статья в точку, спасибо огромнищее за ссылку!

А я, не видя (22), вчера вот такой код наваял. Теперь не актуально, но мож на мысли хорошие натолкнет кого.

Есть справочник Товары со строковым кодом. Нужно обобрать все коды в числовом интервале (для поиска дырки для нового кода). Длина кода 6 символов.

Если вопросы появятся по данной реализации, что где и зачем, спрашивайте. Потому как одна идея порождает другую 🙂

(38) Потому что такой запрос
выбрать первые 20
код
выдает

Код
0
1
10
100004
10023
1010
10100
10101
10102
10103
10104
10105
101051
10106
10107
10108
10109
10110
10111
10112

(40)
1. Создать запрос с выборкой всего справочника и одной колонки
2. Выборкой обойти весь результат и в ранее созданную ТЗ при каждой итерации добавлять строки со значением Число(Выборка.Код)

2-й пункт плохой тут. Ресурсы СУБД на получение результата запроса и передачу его на сторону 1С, обход результата в 1С с преобразованием значения, заполнение объекта на стороне 1С. Да и подход к решению задачи так себе получается

1с выразить как число в запросе

телефон программиста 1С8(495)005-62-29

skype: live:di-sem

Связь с программистом 1с через телеграм@programmist_1C

Заявка программисту 1СОтправить заявку

1С Строку в число в запросе. Число в строку в запросе.

МАКСИМУМ(выразить(Номенклатура.Код как число(6,2))) — к сожалению вот так преобразовать строку в число не получится!

На помощь придут вот такие функции. Нашел их тут.

Использовать их так:

Получаем максимальный числовой код для товара из спр Номенклатура, где код — строка:

  • Главная
  • Блог
  • В помощь 1с программисту
  • 1С Строку в число в запросе. Число в строку в запросе.

Добавить комментарий

Ваш адрес email не будет опубликован.