8.х ЕстьNULL в Регистре сведений

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

  1. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Добрый день! Из регистра сведений "Цены номенклатуры", получаю цену, на определенную дату, с определенным типом цен. Если на указанную дату, цены нету, то запрос мне возвращает НЕОПРЕДЕЛЕННО, пытался воспользоваться функцией ЕСТЬNULL, но безрезультатно. Как я понял эта функция не работает в регистре сведений. Каким образом мне при значении НЕОПРЕДЕЛЕННО вывести 0.
  2. andryscha92
    Offline

    andryscha92 Опытный в 1С

    Регистрация:
    31 янв 2012
    Сообщения:
    389
    Симпатии:
    1
    Баллы:
    29
    если в запросе то Выбор когда РегистрСведенийСрезПоследнихЦеныНоменклатуры.Цена = Неопределено Тогда 0 Иначе РегистрСведенийСрезПоследнихЦеныНоменклатуры.Цена КОнец
    Если в модуле то проверяй Если Выборка.Цена = Неопределено Тогда (если это функция Возврат 0)(если к чему то присваиваешь то Цена = 0) иначе (анолагично но уже Возврат Выборка.Цена)или Цена= Выборка.Цена).
    Гриша нравится это.
  3. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Функция ВЫБОР не помогла, по прежнему выводит НЕОПРЕДЕЛЕНО
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    запрос не может сам вернуть НЕОПРЕДЕЛЕНО, если данных нет.
    Скорее всего, в запросе обрабатывается вариант, когда значение цены NULL и вместо него выводится Неопределено.

    Текст запроса покажите хотя бы, там будет понятно.....
  5. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Код:
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
            |ИЗ
            |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Товар) КАК ЦеныНоменклатурыСрезПоследних
            |ГДЕ
            |    ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = &ТипЦены";
    
        Запрос.УстановитьПараметр("Дата", Дата);
        Запрос.УстановитьПараметр("ТипЦены", ТипЦены);
        Запрос.УстановитьПараметр("Товар", Товар);
    
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Конструкция ЕСТЬNULL в данном случае - лишняя, тип цены так же можно в параметры виртуальной таблицы перенести и необходимо отбор по типу цены сделать по ссылке, а не по наименованию.

    Если цена не установлена, то результат запроса будет пустой.
  7. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    А можно как-нибудь, вывести, что если цена не установлено результат был 0
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    В самом запросе - никак, только в коде:
    Код:
    Цена = 0;
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() Тогда
    Цена = Выборка.Цена;
    КонецЕсли;
    Последнее редактирование: 6 ноя 2014
  9. TopicStarter Overlay
    НиколайН
    Offline

    НиколайН Опытный в 1С

    Регистрация:
    14 фев 2014
    Сообщения:
    246
    Симпатии:
    0
    Баллы:
    26
    Спасибо!
Похожие темы
  1. prohorp
    Ответов:
    1
    Просмотров:
    387
Загрузка...

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