8.х Вывод данных из регистра

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем PavelA, 1 авг 2012.

  1. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    Вопрос следующий.
    Делаю отчет. Один из реквизитов мощность. Она берется из регстра сведени, в пвх у мощности 3 показателя ( Мощность 1, Мощность 2, Мощность 3). Вопрос! Как выводить в отчете мощность, чтобы если у объекта была мощность 1 то она выводилась, если нет то мощность 2, если нет то мощность 3. Регистр связал со справочником. пставил в иерархи по мощности выводит все...
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а вот как описываете в посте, так и выводите по условию

    в чем конкретно затык?
  3. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Доброго Всем,

    Если используете запрос, то есть конструкция
    Код:
    ВЫБОР
    КОГДА <Условие> ТОГДА <Возвращаемое выражение, поле>
    КОГДА .... ТОГДА
    ......
    ИНАЧЕ <Возвращаемое выражение, поле если условия не выполнены>
    КОНЕЦ КАК <Имя поля>
    В Синтаксис помощнике, по этому вопросу, можно найти больше информации.
  4. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВЫБРАТЬ
    ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ОбъектДС,
    ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства КАК ЗначениеСвойства,
    ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.Свойство КАК Свойство,
    ПредНаименованияОбъектов.Ссылка,
    ПредНаименованияОбъектов.ОбъектКС,
    ПредНаименованияОбъектов.ОбъектКС.Регион КАК ОбъектКСРегион
    ИЗ
    РегистрСведений.ЗначенияСвойствПредНаименованийОбъектов.СрезПоследних КАК ЗначенияСвойствПредНаименованийОбъектовСрезПоследних
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредНаименованияОбъектов КАК ПредНаименованияОбъектов
    ПО ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ОбъектДС = ПредНаименованияОбъектов.Ссылка
    ГДЕ
    ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.Свойство В ИЕРАРХИИ(&Свойство)
    И ПредНаименованияОбъектов.Ссылка В ИЕРАРХИИ(&Ссылка)
    УПОРЯДОЧИТЬ ПО
    Свойство
    ИТОГИ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗначениеСвойства)
    ПО
    ОБЩИЕ,
    ОбъектКСРегион
    //
    Вот запрос и результат в консоле

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      81,8 КБ
      Просмотров:
      22
  5. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    неплохо было бы пользоваться тегами для оформления кода и еще представьте структруту регистра
  6. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    Измерения Объект и Свойство, Ресурсы ЗначениеСвойства и ПолнНаименование
  7. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    Вопрос актулен! Как в запросе написать условие при котром в случае отстутсвия первого значения из регистра бралось второе, при отсутствии 2 -3е.
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вам предложили конструкцию "Выбор когда...тогда...иначе" не пробовали? или не помогло?
  9. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    не знаю как вставить такую конструкцию =( создаю реквизит пытаю всем прописать что то типо этого?
    ВЫБОР
    КОГДА ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства.ПустаяСсылка() ТОГДА ПланыВидовХарактеристик.СвойстваПредНаименованийОбъектов.НайтиПоКоду("000000007")
    ИНАЧЕ ПланыВидовХарактеристик.СвойстваПредНаименованийОбъектов.НайтиПоКоду("000000008")
    КОНЕЦ
  10. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Не ПустаяСсылка() !, а ЕСТЬ NULL смотри описание языка запросов в синтаксис пощнике

    ВЫБОР КОГДА ТОГДА ... - это нужно писать в тексте запроса
  11. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Пример как вставить конструкцию в запрос :
    Код:
    ВЫБРАТЬ
    ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ОбъектДС,
    ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства КАК ЗначениеСвойства,
    ВЫБОР
    КОГДА ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства ЕСТЬ NUL
    ТОГДА <вот - это>
    КОГДА <условие>
    ТОГДА <то - то>
    ИНАЧЕ <это>
    КОНЕЦ КАК <имя поля>,
    ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.Свойство КАК Свойство,
    ПредНаименованияОбъектов.Ссылка,
    ПредНаименованияОбъектов.ОбъектКС,
    ПредНаименованияОбъектов.ОбъектКС.Регион КАК ОбъектКСРегион
    ИЗ
    Возможно до этого я непонятно описал.
  12. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    Спасибо, буду пробовать :)
  13. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    Попробовал, почитал... Мысль действительно самая верная... Хз что в условии ставить((( Пробовал вот так
    КОГДА ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства ЕСТЬ NULL
    ТОГДА Свойство

    КОГДА Свойство ЕСТЬ NULL
    ТОГДА Свойство2
    ИНАЧЕ Свойство3
    КОНЕЦ КАК <имя поля>


    Попробовал вывести просто ресурс, выводит все 4 значения!
  14. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    В Последующих проверках условия нужно добавить проверку предыдущего, потому как, исходя из описанной логики, может выполнятся сразу два условия и в поле будет значение по последнему верному
  15. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    Так вроде стоит??! Если нет значение свойства, тогда свойство2 итд
  16. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Код:
    КОГДА ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства ЕСТЬ NULL
    ТОГДА Свойство
    КОГДА Свойство ЕСТЬ NULL И ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства ЕСТЬ NULL
    ТОГДА Свойство2
    ИНАЧЕ Свойство3
    КОНЕЦ КАК <имя поля>
    Так надеюсь понятней
  17. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    [sup]Спасибо, щас посмотрим![/sup]

    Вот что выдает! Последняя колонка мощность

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      186,2 КБ
      Просмотров:
      15
  18. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Поле если "ЗначениеСвойства" тип "Цифровое" то вместо "ЕСТЬ NULL" пиши "= 0"

    Пора бы поэкспериментировать с условиями, раз запрос уже дает что то похожее на результат ;)
  19. TopicStarter Overlay
    PavelA
    Offline

    PavelA Опытный в 1С

    Регистрация:
    26 дек 2011
    Сообщения:
    739
    Симпатии:
    0
    Баллы:
    26
    Так я тоже пробовал. Результат ниже... То есть вообще выводит свойство а не значение и выводит все, а не 1.

    Вот код:
    ВЫБОР
    КОГДА ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства = 0
    ТОГДА ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.Свойство
    КОГДА &Свойство = 0
    И ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства = 0
    ТОГДА &Свойство2
    КОГДА &Свойство2 = 0
    И ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства = 0
    ТОГДА &Свойство3
    ИНАЧЕ &Свойство4
    КОНЕЦ

    Вот условие: Свойство В ИЕРАРХИИ (&Свойство)
    ИЛИ Свойство В ИЕРАРХИИ (&Свойство2)
    ИЛИ Свойство В ИЕРАРХИИ (&Свойство3)
    ИЛИ Свойство В ИЕРАРХИИ (&Свойство4)

    И вот значения задал
    Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваПредНаименованийОбъектов.НайтиПоКоду("000000007"));
    Запрос.УстановитьПараметр("Свойство2", ПланыВидовХарактеристик.СвойстваПредНаименованийОбъектов.НайтиПоКоду("000000005"));
    Запрос.УстановитьПараметр("Свойство3", ПланыВидовХарактеристик.СвойстваПредНаименованийОбъектов.НайтиПоКоду("000000002"));
    Запрос.УстановитьПараметр("Свойство4", ПланыВидовХарактеристик.СвойстваПредНаименованийОбъектов.НайтиПоКоду("000000006"));


    Что не так ппц просто =(

    Вложения:

    • 2.jpg
      2.jpg
      Размер файла:
      223,3 КБ
      Просмотров:
      15
  20. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а параметры у вас никогда не будут равны 0, это же не числа а элементы ПланыВидоыХарактеристик

    З.Ы. читайте СП что даст на выходе ПланыВидовХарактеристик.СвойстваПредНаименованийОбъектов.НайтиПоКоду("000000007")

    я бы попробовала так

    Код:
    ВЫБОР
    КОГДА ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства = 0
    ТОГДА ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.Свойство
    КОГДА &Свойство Есть Null
    И ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства = 0
    ТОГДА &Свойство2
    КОГДА &Свойство2 Есть Null И  &Свойство Есть Null
    И ЗначенияСвойствПредНаименованийОбъектовСрезПоследних.ЗначениеСвойства = 0
    ТОГДА &Свойство3
    ИНАЧЕ &Свойство4
    КОНЕЦ

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