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


#0 by CaIIIka
Здравствуйте! Не появилась ли данная возможность в свежих версиях 1С? Работаю на 8.2. Перейти на 8.3 возможности нет пока, острой необходимости тоже. Спрашиваю, чтоб велосипед не изобретать. В инете готовых решений, чтоб прям запросом из строки в число, не видел пока что.
#1 by Cyberhawk
выбор когда "1" тогда 1 когда "2" тогда 2 ... конец
#2 by Александр Б
ВЫРАЗИТЬ (Таблица.Строка КАК Число(15,2))
#3 by ДенисЧ
В явном виде нельзя. Если только извращаться как в
#4 by ДенисЧ
Размечтался...
#5 by Александр Б
Такая возможность была давно, если не всегда.
#6 by Господин ПЖ
ага ага
#7 by Господин ПЖ
ловите наркомана
#8 by Александр Б
:) не слушай их. Всю жизнь использовал как в . Прекрасно работает.
#9 by rs_trade
сам то пробовал так делать?
#10 by Александр Б
десятки раз.
#11 by CaIIIka
)) А если справочник с 70 тыс строками и реквизит из строки в число? Так низя. Не работает.
#12 by Александр Б
Пля. Или я туплю, сейчас проверю...
#13 by rs_trade
ты тупишь. можешь не проверять.
#14 by CaIIIka
Ругнется она на разные типы данных
#15 by Fragster
не, ну если тип реквизита "строка" - число - то работает. а вообще надо сделать так, чтобы в исходных данных было число
#16 by DrZombi
Не работает оно как надо. Может у Скуля робит, но не у 1С :)
#17 by CaIIIka
Готовых решений не было не у кого? Я вчера задался идеей победить. Несколько раз в ступор восмёрошными ограничениями (по сравнению со скулем) вставал.
#18 by PR
Нет
#19 by GROOVY
Не тупишь, в результате запроса будет то что в выразить, но в самом запросе будет строка. Преобразование, по сути, происходит после выполнения всего запроса.
#20 by Fragster
сделай так, чтобы в исходных данных было число
#21 by CaIIIka
Ругается парсер на енто
#22 by Timon1405
рвет шаблоны и взрывает мозг, как и все статьи автора
#23 by Александр Б
и всё-таки я тупанул :) Пишет "Несовместимые типы"
#24 by ДенисЧ
выбрать ВЫРАЗИТЬ (&парам как число(10, 0)) где парам задан как строка "15" Текст запроса: Строка 1: {(1,9)}: Несовместимые типы "ВЫРАЗИТЬ" выбрать <<?>>ВЫРАЗИТЬ (&парам как число(10, 0))
#25 by Fragster
страшно далек он от реальности
#26 by PR
Господа, вы меня пугаете. ВЫРАЗИТЬ не работает в конце запроса, в конце работает ПРЕДСТАВЛЕНИЕ. Думаю, что не ругнется, просто в значении типа строка значения типа число не будет обнаружено, а поэтому вернется какая-нить пустая кака, может неопределено.
#27 by ДенисЧ
читай до просветления
#28 by PR
Кому рвет? Мне не рвет.
#29 by Fragster
не будет ругани и будет пусто, если реквизит составного типа, один из которых - число, но в момент запроса там находится значение другого типа. в остальных случаях заругается.
#30 by PR
Ну значит так. Че ты как ребенок :)) В любом случае главное, что никакого преобразования ни в начале запроса ни в конце не будет.
#31 by PR
Думаю, что так, да.
#32 by CaIIIka
Можно и так, но победить оч захотелось. )) Хорошая статья, надо проверить как механизм с пробелами борется. По идее должен. Мимолетом на сколько смог код вкурить: там вроде сравнение на вхождение в 0123456789 проверяется, так что пробелы в сад вроде.. Я про то, когда Код в справочнике строковый, то в конце пробелы до длины строки добавляются. Они и костыли в колеса добавляют. А ни ltrim-rtrim ни right 1c не умеет.
#33 by Тролль главный
когда уже народ будет требовать в запросах операторы ISERT/UPDATE/DELETE?
#34 by CaIIIka
видимо за последствия боятся
#35 by aleks_default
а зачем тогда язык 1с нужен будет?
#36 by CaIIIka
Все работает. Статья в точку, спасибо огромнищее за ссылку! А я, не видя , вчера вот такой код наваял. Теперь не актуально, но мож на мысли хорошие натолкнет кого... Есть справочник Товары со строковым кодом. Нужно обобрать все коды в числовом интервале (для поиска дырки для нового кода). Длина кода 6 символов. Если вопросы появятся по данной реализации, что где и зачем, спрашивайте. Потому как одна идея порождает другую :)
#37 by CaIIIka
+36 обобрать = отобрать ))
#38 by hhhh
вроде поиск дырок в числовом интервале и в таком же строковом одинаково будет. Зачем тебе понадобилось в число преобразовывать?
#39 by rs_trade
Никогда. Этого не надо.
#40 by rs_trade
Загнать в ТЗ с кодами как число и выбрать в запросе.
#41 by CaIIIka
Потому что такой запрос выбрать первые 20 код из справочник.товары упорядочить по код выдает Код 0 1 10 100004 10023 1010 10100 10101 10102 10103 10104 10105 101051 10106 10107 10108 10109 10110 10111 10112
#42 by hhhh
дык напиши небольшую обработку, добавь к коду спереди нули, чтобы все были шестизначные. Ведь это и для многих других целей будет полезно, не только для поиска дырок.
#43 by CaIIIka
1. Создать запрос с выборкой всего справочника и одной колонки 2. Выборкой обойти весь результат и в ранее созданную ТЗ при каждой итерации добавлять строки со значением Число(Выборка.Код) 3. Сортировать ТЗ 4. Выбрать строки ТЗ, проверяя на дырки 2-й пункт плохой тут. Ресурсы СУБД на получение результата запроса и передачу его на сторону 1С, обход результата в 1С с преобразованием значения, заполнение объекта на стороне 1С.... Да и подход к решению задачи так себе получается
#44 by CaIIIka
Так нельзя у нас
#45 by CaIIIka
Тогда уж новый реквизит КодЧисло числовой и туда при записи гнать число. И обработкой по всем один раз. Но это новый реквизит в базе, дополнительный объем, его обработка при каждой записи. Справочник под 100 тыщ элементов. А у меня только запрос
#46 by Ildarovich
Вот еще одна статья . Называется "Поиск пропусков в нумерации документов запросом". Там приложена обработка, которую можно и на справочник(и) переделать. Расчет был на 11-ти значные номера. С 6-ти значными еще проще. Пропуски в нумерации показываются в виде интервалов ... - ... .
#47 by Cyberhawk
, напиши как-нибудь статью, как ты пришел к этому (с двух глобальных ракурсов: что сподвигло к написанию таких статей и что сподвигло заниматься вычислением этих штук в запросах)
#48 by CaIIIka
Спасибо большое, поизучаю, интересно! Уважуха за труды! :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С