Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 17:21

Как получить максимальное значение реквизита справочника ?

Автор Lun, 17 мар 2019, 14:00

0 Пользователей и 2 гостей просматривают эту тему.

Lun

Здравствуйте!
В БД есть справочник ПереченьФайлов с реквизитом НомерСессии: число.
Мне нужно вычислить макс. значение реквизита. Справочник не пустой. Делаю так, но Выборка.НомерСессии в отладчике = <ошибка чтения значения>, соотв. МаксСессия = неопределено.
Что я делаю неправильно?
...
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   максимум(ПереченьФайлов.НомерСессии)
    |ИЗ
    |   Справочник.ПереченьФайлов КАК ПереченьФайлов";
   
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    МаксСессия = Выборка.НомерСессии;

Etherial

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
    |  ПереченьФайлов.НомерСессии
    |ИЗ
    |   Справочник.ПереченьФайлов КАК
    | ПереченьФайлов
    |АВТОУПОРЯДОЧИТЬ ПО
| ПереченьФайлов.НомерСессии УБЫВ ";

Так?

Отправлено с моего MI 5s через Tapatalk


Vit1501

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   максимум(ПереченьФайлов.НомерСессии)
    |ИЗ
    |   Справочник.ПереченьФайлов КАК ПереченьФайлов";
   
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Следующий() Тогда
        МаксСессия = Выборка.НомерСессии;
    Иначе
        МаксСессия = 0;
    КонецЕсли;

Так должно работать

alex0402

Цитата: Vit1501 от 18 мар 2019, 09:50Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   максимум(ПереченьФайлов.НомерСессии)
    |ИЗ
    |   Справочник.ПереченьФайлов КАК ПереченьФайлов";
   
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Следующий() Тогда
        МаксСессия = Выборка.НомерСессии;
    Иначе
        МаксСессия = 0;
    КонецЕсли;
Я думаю, что так:

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   максимум(isnull(ПереченьФайлов.НомерСессии,0))
    |ИЗ
    |   Справочник.ПереченьФайлов КАК ПереченьФайлов";
   
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Следующий() Тогда
        МаксСессия = Выборка.НомерСессии;
    КонецЕсли;

Спасибо за Сказать спасибо

LexaK

что за бред? :lol:
Цитироватьмаксимум(isnull(ПереченьФайлов.НомерСессии,0))
в справочнике, реквизит не может быть Null :befhbt:
если помогло нажмите: Спасибо!

alex0402

Цитата: LexaK от 18 мар 2019, 17:35в справочнике, реквизит не может быть Null

реквизит не может, а результат агрегатной функции еще как может...
Спасибо за Сказать спасибо

LexaK

упс, действительно, не учел что условия нет, и если нет ни одного элемента, будет нулл <_<
если помогло нажмите: Спасибо!

Lun

Всем спасибо!
Просто забыл вызвать Следующий() ...

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск