8.х Преобразование значений внутри запроса

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Rafail, 12 дек 2007.

  1. TopicStarter Overlay
    Rafail
    Offline

    Rafail

    Регистрация:
    12 дек 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Мне понадобилось строковое значение числа преобразовать в число. Воспользоваться оператором ВЫРАЗИТЬ() не получилось.
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Что не получилось - как использовал? Где код? Телепатов тут нет.
  3. TopicStarter Overlay
    Rafail
    Offline

    Rafail

    Регистрация:
    12 дек 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Задача:
    Найти максимальный код подразделения.
    Запрос (который не работает):

    ВЫБРАТЬ
    МАКСИМУМ(ВЫРАЗИТЬ(ЕСТЬNULL(ПодразделенияОрганизаций.Код, 0) КАК ЧИСЛО(9, 0))) КАК КодМаксимум
    ИЗ
    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
  4. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Интересная задача, а в связи с чем она возникла?

    Операция сравнения, которая используется в Максимуме, кажется подходит и к строкам, но могу ошибаться.

    И мне не нравится в вашем коде ЕстьNULL - чего-то не то, попробуйте для начала сделать простой запрос без проверок "на дурака".

    ВЫБРАТЬ
    МАКСИМУМ(ВЫРАЗИТЬ(ПодразделенияОрганизаций.Код КАК ЧИСЛО(9, 0))) КАК КодМаксимум
    ИЗ
    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций


    Ну и я бы еще ГДЕ указал, а то подразделеняи организаций подчиненный справочник

    С ходу сработало на строковом и на числовом коде:
    Код:
    ВЫБРАТЬ
    МАКСИМУМ(Номенклатура.Код) КАК Код
    ИЗ
    Справочник.Номенклатура КАК Номенклатура
    
    
    Живите проще :)
  5. TopicStarter Overlay
    Rafail
    Offline

    Rafail

    Регистрация:
    12 дек 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Проверил: из двух величин "9" и "11" - максимальным запрос вернул значение "9". Это неверно!
    У нас часто возникает желание проводить математические вычисления с текстовыми величинами.
    Например, хочется сделать автоматическое присвоение номера документу, в котором присутствуют префиксы в конце номера в зависимости от подразделения. Неужели придется циклически перебирать все документы для выявления максимального значения?
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    9 вернул - потому что код текстовый :)
    Вставьте вперед нули - и будет все окей.
  7. TopicStarter Overlay
    Rafail
    Offline

    Rafail

    Регистрация:
    12 дек 2007
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Дело не в конкретном примере.
    Хотелось в принципе научиться преобразовывать типы значений в запросах.
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Дык проверяли код Эмина?

    Код:
    ВЫБРАТЬ
    МАКСИМУМ(ВЫРАЗИТЬ(ПодразделенияОрганизаций.Код КАК ЧИСЛО(9, 0))) КАК КодМаксимум
    ИЗ
    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
    

Поделиться этой страницей