8.х Вычисляемое поле в запросе с условием

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

  1. TopicStarter Overlay
    lamer666
    Offline

    lamer666 Опытный в 1С

    Регистрация:
    9 апр 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток.
    1. Как в вычисляемом поле запроса применить условие: например в зависимости от типа документа выполнить разные арифметические операции. "Возврат товара" прибыль не вычисляем (Прибыль=0), "продажа" прибыли вычисляем (Прибыль=Продажа-Закуп)?
    Или в зависимости от покупателя применить в вычислении поля нужный тип цен?
    Спасибо
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Выбор когда <ЛогическоеУсловие>
    ТОГДА <Опрерации>
    ИНАЧЕ <Операции>
    КОНЕЦ
  3. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Используйте конструкцию "ВЫБОР-КОГДА-ТОГДА-ИНАЧЕ-КОНЕЦ".
    А вообще - надо смотреть конкретно запрос.
  4. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Запрос покажите
  5. TopicStarter Overlay
    lamer666
    Offline

    lamer666 Опытный в 1С

    Регистрация:
    9 апр 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    Все работает, спасибо:
    Код:
    ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.СтоимостьОборот,
    ВЫБОР
    КОГДА ВложенныйЗапрос.ДокументПродажи ССЫЛКА Документ.ВозвратТоваровОтПокупателя
    ТОГДА ЕСТЬNULL(ВложенныйЗапрос.СтоимостьОборот, 0)
    ИНАЧЕ ЕСТЬNULL(ВложенныйЗапрос.СтоимостьОборот, 0) - ЕСТЬNULL(ВложенныйЗапрос.КоличествоОборот, 0) * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)
    КОНЕЦ КАК СуммаДохода,
    ВложенныйЗапрос.ДокументПродажи,
    ВложенныйЗапрос.КоличествоОборот,
    ЦеныНоменклатуры.Цена,
    ЦеныНоменклатуры.Период,
    ЦеныНоменклатуры.ТипЦен
    ИЗ
    (ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.Период КАК Период,
    МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ДатаЦены,
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
    ПродажиОбороты.ДокументПродажи КАК ДокументПродажи
    ИЗ
    РегистрНакопления.Продажи.Обороты(&НачПер, &КонПер, Регистратор, ) КАК ПродажиОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатуры.Номенклатура
    И ПродажиОбороты.Период >= ЦеныНоменклатуры.Период
    
    СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Период,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот,
    ПродажиОбороты.ДокументПродажи) КАК ВложенныйЗапрос
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатуры.Номенклатура
    И ВложенныйЗапрос.ДатаЦены = ЦеныНоменклатуры.Период
    И (ЦеныНоменклатуры.ТипЦен В ИЕРАРХИИ (&СписокТиповЦен))
    
    Еще хотелось бы поинтересоваться как мне вместо параметра &СписокТиповЦен в запрос указать конкретные два типа цен?
  6. TopicStarter Overlay
    lamer666
    Offline

    lamer666 Опытный в 1С

    Регистрация:
    9 апр 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    По идее еще мне необходимо сделать что бы для расчета прибыли для нескольких групп товаров фигурировал ТИПЦЕН№1 а для остальных ТИПЦЕН№2
    Вот я и думаю, как реализовать?
    1. Выбираю обатипа цен
    2. При расчете себестоимости для конкретной группы товара выбираю свой тип ЦЕН

    правильная ли логика?
  7. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    А как вы сейчас этот список в запрос передаете?

    Ну как бы да. А "Группа товара" у вас по какому принципу определяется? (номенклатурная группа, или просто группа элементов)
    Вот посмотрите на всякий случай вчерашнюю тему: http://www.1c-pro.ru/index.php?showtopic=2...mp;#entry113298, там я описывал 2 способа получения цены на дату и реализацию одного из них, вы реализовали второй.

    Если вам для 2-х типов цен надо то по идее, заменяете "ЦеныНоменклатуры.ТипЦен В ИЕРАРХИИ (&СписокТиповЦен)" на "ЦеныНоменклатуры.ТипЦен = &ТипЦен1" и "ЦеныНоменклатуры.ТипЦен = &ТипЦен2" т.е. делаете 2 одинаковые выборки (2 запроса) по ценам каждая для своего типа цены, и пишите (условно):

    Код:
    ВЫБОР
    КОГДА ВложенныйЗапрос.ДокументПродажи ССЫЛКА Документ.ВозвратТоваровОтПокупателя
    ТОГДА ЕСТЬNULL(ВложенныйЗапрос.СтоимостьОборот, 0)
    ИНАЧЕ 
    ВЫБОР КОГДА ВложенныйЗапрос.Номенклатура = Группа1 ТОГДА
    ЕСТЬNULL(ВложенныйЗапрос.СтоимостьОборот, 0) - ЕСТЬNULL(ВложенныйЗапрос.КоличествоОборот, 0) * ЕСТЬNULL(ЦеныНоменклатуры1.Цена, 0)
    ИНАЧЕ 
    ЕСТЬNULL(ВложенныйЗапрос.СтоимостьОборот, 0) - ЕСТЬNULL(ВложенныйЗапрос.КоличествоОборот, 0) * ЕСТЬNULL(ЦеныНоменклатуры2.Цена, 0)
    КОНЕЦ
    КОНЕЦ КАК СуммаДохода,
    
  8. TopicStarter Overlay
    lamer666
    Offline

    lamer666 Опытный в 1С

    Регистрация:
    9 апр 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    Большое спасибо за ответ, решил использовать два подЗАПРОСА
    1. Отбираю группу номенклатуры с типом цен №1
    2. Отбираю все остальные группы номенклатуры с типом цен №2

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