Как улучшить запрос, чтобы себестоимость бралась из вида цены номенклатуры?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как улучшить запрос, чтобы себестоимость бралась из вида цены номенклатуры?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38590
      Фото аватараOdineski
      Участник

        Вот запрос, поправь его:
        ВЫБРАТЬ РАЗРЕШЕННЫЕ
        Оплаты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
        Оплаты.Организация КАК Организация,
        ВЫБОР &ДанныеОтчета
        КОГДА 3
        ТОГДА Оплаты.Организация.ВалютаРегламентированногоУчета
        ИНАЧЕ &ВалютаУправленческогоУчета
        КОНЕЦ КАК Валюта,
        Оплаты.Партнер КАК Партнер,
        Продажи.Подразделение КАК Подразделение,
        Продажи.Менеджер КАК Менеджер,
        Продажи.ЗаказКлиента КАК ЗаказКлиента,
        ВЫБОР
        КОГДА Оплаты.ЗаказКлиента ЕСТЬ NULL
        ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК Распределить,
        Оплаты.РасчетныйДокумент КАК РасчетныйДокумент,
        СУММА(Продажи.СуммаВыручки) КАК ВыручкаСНДС,
        СУММА(Продажи.Выручка) КАК Выручка,
        Оплаты.ОстатокКОплате КАК ОстатокКОплате,
        Оплаты.ОплаченоБезОтгрузки КАК ОплаченоБезОтгрузки,
        Оплаты.ОтгрузкаВПериодеОтчета КАК ОтгрузкаВПериодеОтчета,
        СУММА(ВЫБОР
        КОГДА &ДанныеОтчета = 1
        ТОГДА ВЫБОР
        КОГДА ЕСТЬNULL(РасчетСебестоимостиОрганизации.ПредварительныйРасчет, ЛОЖЬ)
        ТОГДА ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.Стоимость, 0) +
        ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.СтоимостьДопРасходы, 0) +
        ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.Трудозатраты, 0) + ЕСТЬNULL(Продажи.Количество,
        0) * ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПостоянныеСНДС, 0) + ЕСТЬNULL(Продажи.Количество, 0) *
        ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПеременныеСНДС, 0)
        ИНАЧЕ ЕСТЬNULL(Продажи.Себестоимость, 0) + ЕСТЬNULL(Продажи.СуммаДополнительныхРасходов, 0) +
        ЕСТЬNULL(Продажи.РасходыНаПродажуСНДС, 0)
        КОНЕЦ
        КОГДА &ДанныеОтчета = 3
        ТОГДА ВЫБОР
        КОГДА ЕСТЬNULL(РасчетСебестоимостиОрганизации.ПредварительныйРасчет, ЛОЖЬ)
        ТОГДА ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.СтоимостьРегл, 0) +
        ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.ТрудозатратыРегл, 0) +
        ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПостоянныеРегл, 0) +
        ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПеременныеРегл, 0)
        ИНАЧЕ ЕСТЬNULL(Продажи.СебестоимостьРегл, 0) + ЕСТЬNULL(Продажи.СуммаДополнительныхРасходовРегл, 0) +
        ЕСТЬNULL(Продажи.РасходыНаПродажуРегл, 0)
        КОНЕЦ
        ИНАЧЕ ВЫБОР
        КОГДА ЕСТЬNULL(РасчетСебестоимостиОрганизации.ПредварительныйРасчет, ЛОЖЬ)
        ТОГДА ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.СтоимостьБезНДС, 0) +
        ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.СтоимостьДопРасходыБезНДС, 0) +
        ЕСТЬNULL(Продажи.Количество, 0) * ЕСТЬNULL(СтоимостьНоменклатуры.Трудозатраты, 0) + ЕСТЬNULL(Продажи.Количество,
        0) * ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПостоянныеБезНДС, 0) + ЕСТЬNULL(Продажи.Количество, 0) *
        ЕСТЬNULL(СтоимостьНоменклатуры.ПостатейныеПеременныеБезНДС, 0)
        ИНАЧЕ ЕСТЬNULL(Продажи.СебестоимостьБезНДС, 0) + ЕСТЬNULL(Продажи.СуммаДополнительныхРасходовБезНДС, 0) +
        ЕСТЬNULL(Продажи.РасходыНаПродажуБезНДС, 0)
        КОНЕЦ
        КОНЕЦ) КАК Себестоимость,
        0 КАК СуммаВозврата,
        0 КАК СебестоимостьВозврата
        ПОМЕСТИТЬ Результат
        ИЗ
        Оплаты КАК Оплаты
        ЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК Продажи
        ПО (Продажи.РасчетныйДокумент = Оплаты.РасчетныйДокумент)
        И (Продажи.ЗаказКлиента = Оплаты.ЗаказКлиента
        ИЛИ Оплаты.ЗаказКлиента ЕСТЬ NULL)
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтоимостьТоваров КАК СтоимостьНоменклатуры
        ПО (Продажи.Период = СтоимостьНоменклатуры.Период)
        И (Продажи.АналитикаУчетаНоменклатуры = СтоимостьНоменклатуры.АналитикаУчетаНоменклатуры)
        И (Продажи.ВидЗапасов = СтоимостьНоменклатуры.ВидЗапасов)
        И (Продажи.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
        И
        СтоимостьНоменклатуры.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию)
        ИЛИ Продажи.ТипЗапасов <> ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
        И СтоимостьНоменклатуры.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах))
        И Оплаты.Организация = СтоимостьНоменклатуры.Организация}
        {ЛЕВОЕ СОЕДИНЕНИЕ РасчетСебестоимостиОрганизации КАК РасчетСебестоимостиОрганизации
        ПО (РасчетСебестоимостиОрганизации.Дата = Продажи.Период)
        И (РасчетСебестоимостиОрганизации.Организация = Оплаты.Организация)}
        СГРУППИРОВАТЬ ПО
        Оплаты.АналитикаУчетаПоПартнерам,
        Оплаты.Организация,
        Оплаты.Партнер,
        Продажи.Подразделение,
        Продажи.Менеджер,
        Продажи.ЗаказКлиента,
        ВЫБОР
        КОГДА Оплаты.ЗаказКлиента ЕСТЬ NULL
        ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
        КОНЕЦ,
        Оплаты.РасчетныйДокумент,
        Оплаты.ДолгОстаток,
        Оплаты.ОстатокКОплате,
        Оплаты.ОплаченоБезОтгрузки,
        Оплаты.ОтгрузкаВПериодеОтчета,
        ВЫБОР &ДанныеОтчета
        КОГДА 3
        ТОГДА Оплаты.Организация.ВалютаРегламентированногоУчета
        ИНАЧЕ &ВалютаУправленческогоУчета
        КОНЕЦ
        ИМЕЮЩИЕ
        (СУММА(Продажи.СуммаВыручки) <> Оплаты.ДолгОстаток
        ИЛИ &НоваяАрхитектураВзаиморасчетов)

      • #38591
        bot_avaOdin — Одинэсник
        Участник

          В вашем запросе нужно изменить расчет себестоимости, чтобы она бралась из указанного на форме вида цены номенклатуры. Для этого нужно добавить левое соединение с регистром сведений «ЦеныНоменклатуры25.СрезПоследних» по номенклатуре и виду цены, а в расчёте себестоимости использовать цену из этого регистра.

          Вот исправленный фрагмент запроса с учётом этого:

          Ключевые изменения:

          — Добавлено левое соединение с регистром сведений ЦеныНоменклатуры25.СрезПоследних с параметром &ВидЦены.
          — В расчёте себестоимости заменена цена на ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0).
          — Параметр &ВидЦены должен передаваться из формы отчёта.

          Такой подход позволит брать себестоимость из выбранного вида цены номенклатуры.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С