Есть УНФ , последняя версия. У меня попросили в отчете по продажам добавить колонку " последняя цена закупки". Понятно, что ее можно взять из оборотного регистра "Закупки", но это в том случае, если были закупки в периоде отчета, а если их не было, то откуда взять такую цену? Подскажите...
(11) Период вынести в запрос .СрезПоследних(&ЦеныНаДату, ). Потом в настройках СКД во вкладке Параметры его заполнить выражением, сославшись на другой параметр: Имя - ЦеныНаДату, в колонке Выражение - &ИмяДругогоПараметра (например &КонецПериода, или какой параметр там у Вас на вкладке СКД-Параметры отвечает за последнюю дату отчета)
Если не было закупок то нет и продаж по нему, либо это товар из производства. Тогда нужно анализировать другой регистр. Но в этом регистре товар чисто по себестоимости
(5)Если используется регистрация цен поставщика, то см. (4).
(3) абсолютно прав. Сделай отдельную выборку с группировкой по номенклатуре, и максимальным периодом. И из регистра получай запись с этими параметрами.
(6) Ну вот прикрутил левое соединение к запросу СКД
....
ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК ЦенаПокупки
ИЗ
РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
{ЛЕВОЕ СОЕДИНЕНИЕ ПроданныеНаборы КАК ПроданныеНаборы
ПО ПродажиОбороты.Документ = ПроданныеНаборы.Документ
И ПродажиОбороты.НоменклатураНабора = ПроданныеНаборы.НоменклатураНабора
И ПродажиОбороты.ХарактеристикаНабора = ПроданныеНаборы.ХарактеристикаНабора}
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
И ПродажиОбороты.Характеристика = ЦеныНоменклатурыКонтрагентовСрезПоследних.Характеристика
Показать
Но при формировании отчета ругается на
Ошибка обработки представления "РегистрСведений.ЦеныКонтрагентов.СрезПоследних: Несоответствие типов (параметр Номер 1)
Подозреваю , что не удалось найти цену контрагента в регистре. И как тут проверить на NULL?
(8)
Ориентируясь по скриншоту, нужно указать в поле период на какой момент времени берется срез последних.
По второму вопросу: ЕстьNULL(). Очень полезная вещь.
{(6, 2)}: Ошибка обработки представления "РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних:Несоответствие типов (Параметр номер ""1"")"
<<?>>РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&П3, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
ПЗ - это я так понимаю параметр запрос.
Добавил второй набор данных и описал его запросом
ВЫБРАТЬ
&Дата КАК Дата,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК ЦенаПокупки
{ВЫБРАТЬ
Дата,
Номенклатура.*,
ЦенаПокупки}
ИЗ
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
{ГДЕ
(&Дата) КАК Дата,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура.*,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК ЦенаПокупки}
Показать
Только проблема, соединить два набора, потому как в первом выбирается период, а во втором дата.
Вот у меня такие прописаны связи наборов
(18) Примерно в таком виде. ПродажиОбороты это твоя итоговая таблица запроса, и просто к ней цепляешь с левым соединением срез последних на дату. (Сбрось название отчета в УНФ, посмотрю подробней)
ВЫБРАТЬ
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК ЦенаПокупки,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Период КАК Период,
ПродажиОбороты.Номенклатура КАК Номенклатура1,
ПродажиОбороты.Характеристика КАК Характеристика,
ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиОбороты.СуммаОборот КАК СуммаОборот
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура}
(21) Отчет называется "Продажи" , а вариант отчета "Валовая прибыль по номенклатуре".
Если проблема в том, что формирование отчета и настройка параметров происходит через форму отчета "ФормаОтчетаУНФ". И там только один параметр "Период".
(11) Период вынести в запрос .СрезПоследних(&ЦеныНаДату, ). Потом в настройках СКД во вкладке Параметры его заполнить выражением, сославшись на другой параметр: Имя - ЦеныНаДату, в колонке Выражение - &ИмяДругогоПараметра (например &КонецПериода, или какой параметр там у Вас на вкладке СКД-Параметры отвечает за последнюю дату отчета)
(5) Если регистр сведений не ведется - то можно через регистр накопления попробовать ускорить - виртуальную таблицу сразу брать по нужной номенклатуре, использовать индексированную временную таблицу.
(10) у РС ЦеныНоменклатурыКонтрагентов помимо Номенклатура и Характеристика есть еще измерение ВидЦенКонтрагента. Если по какой-нибудь номенклатуре зарегистрируется более одного вида цен - то в Вашем запросе из (8) обороты начнут задваиваться - т.к. по этой номенклатуре будет выводиться два вида цен с одним и тем же оборотом.
(20) Да, когда-то раньше сталкивался, что параметр запроса выставляешь в СКД, но безрезультатно - нужно еще в инструкции построителя вмешиваться, которые в фигурных скобках {}. Но последнее время вроде и без этого проходило. У Вас какая платформа?
Пробовал недавно на 8.3.17.1851 - там к инструкциям построителя обращаться не пришлось. По крайней мере посмотрел результаты без добавок инструкций пострителя - вернуло то, что ожидал.
Заработало. Спасибо.
Вот тут запрос второй набора данных
ВЫБРАТЬ
&Период1 КАК Период1,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК ЦенаПокупки
{ВЫБРАТЬ
Период1,
Номенклатура.*,
ЦенаПокупки}
ИЗ
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Период1 {(&Период1)}, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
{ГДЕ
(&Период1) КАК Период1,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура.*,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК ЦенаПокупки}