Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрос продажи по дням за период в ценах контрагента по группе товаров
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
DiegoLidabo
Здравствуйте
необходимо запросом получить продажи по дням за период в ценах контрагента по определенной группе товаров.

УТП 1.2.48.1

необходимо зарегистрироваться для просмотра ссылки
ТекстЗапроса ="ВЫБРАТЬ
    |    &КодДистрибьютора КАК КодДистрибьютора,
    //|    Продажи.Контрагент.Код + &Разделитель + Продажи.Контрагент.Код КАК ПродажиКонтрагентКод,
    |    Продажи.Контрагент.Код КАК ПродажиКонтрагентКод,
    |    &ДатаКакДата КАК ДатаКакДата,
    |    Продажи.Период КАК ПродажиПериод,
    |ЦеныНоменклатурыКонтрагентовСрезПоследних.Период,
    |    Продажи.Номенклатура.Код КАК ПродажиНоменклатураКод,
    |    Продажи.Количество КАК Количество,
    |    Продажи.Стоимость + Продажи.НДС КАК СуммаОтгрузки,
    |    Пользователи.ФизЛицо.Код КАК КодТА,
    //|    Продажи.Номенклатура КАК ПродажиНоменклатура,               //отладка
    |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена,
    |    Продажи.Регистратор.Номер КАК НомерРТУ
    |ИЗ
    |    РегистрНакопления.Продажи КАК Продажи
    |        Левое СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
    |        ПО Продажи.Контрагент.ОсновнойМенеджерПокупателя = Пользователи.Ссылка
    |
    |
    |
    |   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
    |        ,
    |        ВЫБОР
      |            КОГДА &фНом
      |                    ТОГДА Номенклатура В ИЕРАРХИИ (&Группа)
      |                ИНАЧЕ ИСТИНА
      |            КОНЕЦ
    |        И ТипЦен = &выбТипЦен) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
    |    ПО Продажи.Период >= ЦеныНоменклатурыКонтрагентовСрезПоследних.Период
    |    И Продажи.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
    |
    |
    |
    |ГДЕ
    |    Продажи.Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
    |    И Продажи.Период >= &НачПериода
    |    И Продажи.Период <= &КонПериода
    |
    |УПОРЯДОЧИТЬ ПО
    |    ПродажиПериод,
    |    ПродажиКонтрагентКод,
    |    СуммаОтгрузки,
    |    ПродажиНоменклатураКод";                  
                  
              
    Запрос.Текст = ТекстЗапроса;
    Если НомГруппа.Пустая() Тогда
        Возврат;
    КонецЕсли;
    
    ДатаКакДата = Лев(КонПериода, 10);    

    Запрос.УстановитьПараметр("КодДистрибьютора", КодДистрибьютора);
    Запрос.УстановитьПараметр("Разделитель", "#");    
    Запрос.УстановитьПараметр("ДатаКакДата", ДатаКакДата);
    Запрос.УстановитьПараметр("Начпериода", НачПериода);        
    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("Группа", НомГруппа);
    Запрос.УстановитьПараметр("фНом", ЗначениеЗаполнено(НомГруппа));
    Запрос.УстановитьПараметр("выбТипЦен"            , ТипЦеныНоменклатурыКонтрагентов);
    
    
    ТЗ3 = Запрос.Выполнить().Выгрузить();


далее часть результата


Видно, что там где в ЦеныНоменклатурыКонтрагентовСрезПоследних не одна запись то не работает и соответствующий период NULL,
а там где ЦеныНоменклатурыКонтрагентовСрезПоследних одна запись за период то работает.
Подскажите как исправить.
sava1
выборку из ЦеныНоменклатуры - отдельно, сгруппировать по Номенклатура,Период, , цена МАКСИМУМ,() поместить во ВрТабл
и в основном запросе уже ее присоединять
Bernet
DiegoLidabo @ Сегодня, 15:13 необходимо зарегистрироваться для просмотра ссылки ,
если я вас правильно понял, то то что вы хотите получить называется получение цены на дату документа.
Привожу пример получения цены на дату документа, адаптируйте под ваш запрос
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    ПродажиОбороты.Период,
|    ПродажиОбороты.Контрагент,
|    ПродажиОбороты.Номенклатура,
|    ПродажиОбороты.ХарактеристикаНоменклатуры,
|    СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество,
|    СУММА(ПродажиОбороты.СтоимостьОборот) КАК Сумма
|ПОМЕСТИТЬ ВтПродажи
|ИЗ
|    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ПродажиОбороты
|
|СГРУППИРОВАТЬ ПО
|    ПродажиОбороты.Период,
|    ПродажиОбороты.Контрагент,
|    ПродажиОбороты.Номенклатура,
|    ПродажиОбороты.ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    ВтПродажи.Период,
|    ВтПродажи.Номенклатура,
|    ВтПродажи.ХарактеристикаНоменклатуры,
|    ВтПродажи.Количество,
|    ВтПродажи.Сумма,
|    МАКСИМУМ(ЕСТЬNULL(Цены.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))) КАК ДатаЦены
|ПОМЕСТИТЬ ВтДатыЦен
|ИЗ
|    ВтПродажи КАК ВтПродажи
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены
|        ПО ВтПродажи.Номенклатура = Цены.Номенклатура
|            И ВтПродажи.ХарактеристикаНоменклатуры = Цены.ХарактеристикаНоменклатуры
|            И (Цены.ТипЦен = &ТипЦен)
|            И ВтПродажи.Период >= Цены.Период
|
|СГРУППИРОВАТЬ ПО
|    ВтПродажи.Период,
|    ВтПродажи.Номенклатура,
|    ВтПродажи.ХарактеристикаНоменклатуры,
|    ВтПродажи.Количество,
|    ВтПродажи.Сумма
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    ВтДатыЦен.Период,
|    ВтДатыЦен.Номенклатура,
|    ВтДатыЦен.ХарактеристикаНоменклатуры,
|    ВтДатыЦен.Количество,
|    ВтДатыЦен.Сумма,
|    ЕСТЬNULL(Цены.Цена, 0) КАК ЦенаНаДатуДокумента
|ИЗ
|    ВтДатыЦен КАК ВтДатыЦен
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены
|        ПО ВтДатыЦен.ДатаЦены= Цены.Период
|            И ВтДатыЦен.Номенклатура = Цены.Номенклатура
|            И ВтДатыЦен.ХарактеристикаНоменклатуры = Цены.ХарактеристикаНоменклатуры
|            И (Цены.ТипЦен = &ТипЦен)
|";
DiegoLidabo
sava1, Bernet,
Спасибо, сейчас начну пробовать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.