База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как улучшить запрос, чтобы себестоимость бралась из вида цены номенклатуры?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
7 сентября 2026 в 19:40 #38590
Вот запрос, поправь его:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Оплаты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
Оплаты.Организация КАК Организация,
ВЫБОР &ДанныеОтчета
КОГДА 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
ТОГДА Оплаты.Организация.ВалютаРегламентированногоУчета
ИНАЧЕ &ВалютаУправленческогоУчета
КОНЕЦ
ИМЕЮЩИЕ
(СУММА(Продажи.СуммаВыручки) <> Оплаты.ДолгОстаток
ИЛИ &НоваяАрхитектураВзаиморасчетов) -
7 сентября 2026 в 19:40 #38591
В вашем запросе нужно изменить расчет себестоимости, чтобы она бралась из указанного на форме вида цены номенклатуры. Для этого нужно добавить левое соединение с регистром сведений «ЦеныНоменклатуры25.СрезПоследних» по номенклатуре и виду цены, а в расчёте себестоимости использовать цену из этого регистра.
Вот исправленный фрагмент запроса с учётом этого:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105ВЫБРАТЬ РАЗРЕШЕННЫЕОплаты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,Оплаты.Организация КАК Организация,ВЫБОР &ДанныеОтчетаКОГДА 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)ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних({&КонецПериода}, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследнихПО Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтоимостьТоваров КАК СтоимостьНоменклатурыПО (Продажи.Период = СтоимостьНоменклатуры.Период)И (Продажи.АналитикаУчетаНоменклатуры = СтоимостьНоменклатуры.АналитикаУчетаНоменклатуры)И (Продажи.ВидЗапасов = СтоимостьНоменклатуры.ВидЗапасов)И (Продажи.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)ИСтоимостьНоменклатуры.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию)ИЛИ Продажи.ТипЗапасов <> ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)И СтоимостьНоменклатуры.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах))И Оплаты.Организация = СтоимостьНоменклатуры.Организация}{ЛЕВОЕ СОЕДИНЕНИЕ РасчетСебестоимостиОрганизации КАК РасчетСебестоимостиОрганизацииПО (РасчетСебестоимостиОрганизации.Дата = Продажи.Период)И (РасчетСебестоимостиОрганизации.Организация = Оплаты.Организация)}СГРУППИРОВАТЬ ПООплаты.АналитикаУчетаПоПартнерам,Оплаты.Организация,Оплаты.Партнер,Продажи.Подразделение,Продажи.Менеджер,Продажи.ЗаказКлиента,ВЫБОРКОГДА Оплаты.ЗаказКлиента ЕСТЬ NULLТОГДА ИСТИНАИНАЧЕ ЛОЖЬКОНЕЦ,Оплаты.РасчетныйДокумент,Оплаты.ДолгОстаток,Оплаты.ОстатокКОплате,Оплаты.ОплаченоБезОтгрузки,Оплаты.ОтгрузкаВПериодеОтчета,ВЫБОР &ДанныеОтчетаКОГДА 3ТОГДА Оплаты.Организация.ВалютаРегламентированногоУчетаИНАЧЕ &ВалютаУправленческогоУчетаКОНЕЦИМЕЮЩИЕ(СУММА(Продажи.СуммаВыручки) <> Оплаты.ДолгОстатокИЛИ &НоваяАрхитектураВзаиморасчетов)Ключевые изменения:
— Добавлено левое соединение с регистром сведений
ЦеныНоменклатуры25.СрезПоследнихс параметром&ВидЦены.
— В расчёте себестоимости заменена цена наЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0).
— Параметр&ВидЦеныдолжен передаваться из формы отчёта.Такой подход позволит брать себестоимость из выбранного вида цены номенклатуры.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.