Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 дек 2025, 07:37

Разная выборка из запросов консоли и в модуле формы документа

Автор Sasha1C, Вчера в 09:11

antoneus и 2 гостей просматривают эту тему.

Sasha1C

Добрый день, есть запрос который в консоли запросов выводит данные, которые мне нужны (номенклатура и цена). А на форме поле цена остается пустым при выгрузке результата запроса. В чем может быть проблема, если запросы одинаковые, и параметры тоже (проверил в отладке). 
ВЫБРАТЬ
Д1_СебестоимостьВыпускаПродукцииСебестоимостьВыпуска.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_Список
ИЗ
Документ.Д1_СебестоимостьВыпускаПродукции.СебестоимостьВыпуска КАК Д1_СебестоимостьВыпускаПродукцииСебестоимостьВыпуска
ГДЕ
Д1_СебестоимостьВыпускаПродукцииСебестоимостьВыпуска.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
Д1_СебестоимостьВыпускаПродукцииСебестоимостьВыпуска.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена,
МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК Период
ПОМЕСТИТЬ ВТ_Цены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
&НачалоПериода,
ТипЦен = &ТипЦен
И Номенклатура В
(ВЫБРАТЬ
ВТ_Список.Номенклатура КАК Номенклатура
ИЗ
ВТ_Список КАК ВТ_Список)) КАК ЦеныНоменклатурыСрезПоследних

СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыСрезПоследних.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Список.Номенклатура КАК Номенклатура,
ЕСТЬNULL(ВТ_Цены.Цена, 0) КАК Цена
ИЗ
ВТ_Список КАК ВТ_Список
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цены КАК ВТ_Цены
ПО ВТ_Список.Номенклатура = ВТ_Цены.Номенклатура

antoneus

Значит, проблема не в запросе, а в заполнении поля цена на форме.

Sasha1C


Sasha1C

antoneus, в шапке диалога есть полный текст запроса. Этот запрос должен выдавать срез последней цены на дату параметра, но уже 2 дня воюю с тем, что либо куча дублей, либо как сейчас цена максимум, а не срез последней. Может у Вас есть идеи что можно сделать, что бы решить мою задачу.
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена,
    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК Период
ПОМЕСТИТЬ ВТ_Цены
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &НачалоПериода,
            ТипЦен = &ТипЦен
                И Номенклатура В
                    (ВЫБРАТЬ
                        ВТ_Список.Номенклатура КАК Номенклатура
                    ИЗ
                        ВТ_Список КАК ВТ_Список)) КАК ЦеныНоменклатурыСрезПоследних

СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыСрезПоследних.Номенклатура
;

antoneus

Период в выборке не нужен, только Номенклатура и Цена.

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ ВТ_Цены
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &НачалоПериода,
            ТипЦен = &ТипЦен
                И Номенклатура В
                    (ВЫБРАТЬ
                        ВТ_Список.Номенклатура КАК Номенклатура
                    ИЗ
                        ВТ_Список КАК ВТ_Список)) КАК ЦеныНоменклатурыСрезПоследних

Sasha1C

antoneus, Период брал что бы отслеживать откуда дубли) Там просто еще доп характеристики есть, их он выпуливает 2-3 варианта на 1 номенклатуру, а как только самую последнюю выбрать не понимаю. Был вариант с инфостарта через максимум, но там нету ресурса, а это проблема, так как нельзя сгруппировать без потери данных.

antoneus

Оттуда дубли, из периода. Если в запросе брать период - будут последние на каждый период. То есть, если было по товару три изменения цены - вывалится по этому товару все три (те, которые были до &НачалоПериода).

Sasha1C

antoneus, Все равно дубли в результате запроса. И текущий полный запрос дублирую. Первый запрос в шапке убирал все дубли, но тянул максимальную цену по номенклатуре. ВЫБРАТЬ
Д1_СебестоимостьВыпускаПродукцииСебестоимостьВыпуска.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_Список
ИЗ
Документ.Д1_СебестоимостьВыпускаПродукции.СебестоимостьВыпуска КАК Д1_СебестоимостьВыпускаПродукцииСебестоимостьВыпуска
ГДЕ
Д1_СебестоимостьВыпускаПродукцииСебестоимостьВыпуска.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
Д1_СебестоимостьВыпускаПродукцииСебестоимостьВыпуска.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ ВТ_Цены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
&НачалоПериода,
ТипЦен = &ТипЦен
И Номенклатура В
(ВЫБРАТЬ
ВТ_Список.Номенклатура КАК Номенклатура
ИЗ
ВТ_Список КАК ВТ_Список)) КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Список.Номенклатура КАК Номенклатура,
ЕСТЬNULL(ВТ_Цены.Цена, 0) КАК ЦенаПредыдущегоМесяца
ИЗ
ВТ_Список КАК ВТ_Список
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цены КАК ВТ_Цены
ПО ВТ_Список.Номенклатура = ВТ_Цены.Номенклатура

antoneus

Из первого запроса дубли, значит. Там различные воткни.
Да и не нужен третий запрос, второго хватит, не надо еще раз все это друг с другом соединять.

Sasha1C

antoneus, Это сделано для интуитивности. И я не правильно сформулировал дубли возникают в ВТ_Цены, ТАМ Я ВЫВЕЛ ПЕРИОДЫ И БЫЛО 01.11.2025, 01.10.2025 И Т.Д.
Интернет пишет что надо использовать максимум, но я его везде использовал уже, а толку ноль

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск