Вход | Регистрация
 

Как получить цену на дату документа

Как получить цену на дату документа
Я
   AnisaL
 
23.03.21 - 11:03
Добрый день!
Есть запрос, нужно чтобы он получал стоимость часа из регистра сведений на дату документа, а не на дату окончания. Как это сделать?

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

УПОРЯДОЧИТЬ ПО
    Контрагент,
    Период
ИТОГИ
    СУММА(ЗагрузкаФакт),
    МАКСИМУМ(ЗначениеЧасы),
    МАКСИМУМ(ЗначениеСопр),
    МАКСИМУМ(ЗначениеРазраб)
ПО
    Контрагент,
    Номенклатура,
    Сотрудник
   zuza
 
1 - 23.03.21 - 11:17
Запрос.УстановитьПараметр("ДатаОкончания", ЗдесьДатаДокумента)
   AnisaL
 
2 - 23.03.21 - 11:28
(1) Я не правильно выразилась: на данный момент запрос выдает например данные за 2 года и цену везде подставляет на дату окончания, а нужно чтобы он брал цену на тот момент, какая была тогда
   JeHer
 
3 - 23.03.21 - 11:32
Запрос.УстановитьПараметр("ДатаОкончания", ЗдесьДатаКакаяБылаТогда)
   azernot
 
4 - 23.03.21 - 11:36
   AnisaL
 
5 - 23.03.21 - 12:00
(4) Сделала запрос как в этой статье, но почему-то вывелось 2 строки и со старой ценой и с новой, а нужно только с новой https://a.radikal.ru/a18/2103/de/4f11bd83bdeb.jpg
   AnisaL
 
6 - 23.03.21 - 12:00
(4) запрос:

ВЫБРАТЬ
    Таб1.Контрагент КАК Контрагент,
    Таб1.Номенклатура КАК Номенклатура,
    Таб1.Сотрудник КАК Сотрудник,
    Таб1.ЗагрузкаФакт КАК ЗагрузкаФакт,
    Таб1.ЗначениеЧасы КАК ЗначениеЧасы,
    Таб1.ЗначениеСопр КАК ЗначениеСопр,
    Таб1.ЗначениеРазраб КАК ЗначениеРазраб,
    Таб1.Период КАК Период,
    Таб1.ВремяНачала КАК ВремяНачала,
    Таб1.Дата КАК Дата
ИЗ
    (ВЫБРАТЬ
        ЗаданияНаРаботу.Контрагент КАК Контрагент,
        ЗаданияНаРаботу.Номенклатура КАК Номенклатура,
        ЗаданияНаРаботу.Сотрудник КАК Сотрудник,
        ЗаданияНаРаботу.ЗагрузкаФакт КАК ЗагрузкаФакт,
        ТабЦен.БесплатноЧасов КАК ЗначениеЧасы,
        ТабЦен.Сопр КАК ЗначениеСопр,
        ТабЦен.Разраб КАК ЗначениеРазраб,
        ЗаданияНаРаботу.Период КАК Период,
        ЗаданияНаРаботу.ВремяНачала КАК ВремяНачала,
        МАКСИМУМ(ТабЦен.Период) КАК Дата
    ИЗ
        РегистрНакопления.ЗаданияНаРаботу КАК ЗаданияНаРаботу
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Расш1_Прайс КАК ТабЦен
            ПО (ТабЦен.Период <= ЗаданияНаРаботу.Период)
                И ЗаданияНаРаботу.Контрагент = ТабЦен.Контрагент
    ГДЕ
        ЗаданияНаРаботу.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
        И ВЫБОР
                КОГДА &Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                    ТОГДА ЗаданияНаРаботу.Контрагент = &Контрагент
                ИНАЧЕ ИСТИНА
            КОНЕЦ
    
    СГРУППИРОВАТЬ ПО
        ЗаданияНаРаботу.Контрагент,
        ЗаданияНаРаботу.Номенклатура,
        ЗаданияНаРаботу.Сотрудник,
        ЗаданияНаРаботу.ЗагрузкаФакт,
        ТабЦен.БесплатноЧасов,
        ТабЦен.Сопр,
        ТабЦен.Разраб,
        ЗаданияНаРаботу.Период,
        ЗаданияНаРаботу.ВремяНачала) КАК Таб1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Расш1_Прайс КАК Таб2
        ПО (Таб1.Дата = Таб2.Период)
            И (Таб1.Контрагент = Таб2.Контрагент)

УПОРЯДОЧИТЬ ПО
    Таб2.Контрагент,
    Таб1.Период
ИТОГИ
    СУММА(ЗагрузкаФакт),
    МАКСИМУМ(ЗначениеЧасы),
    МАКСИМУМ(ЗначениеСопр),
    МАКСИМУМ(ЗначениеРазраб)
ПО
    Таб2.Контрагент,
    Номенклатура,
    Сотрудник
   AnisaL
 
7 - 23.03.21 - 12:06
   AnisaL
 
8 - 23.03.21 - 13:37
Вот что выдает запрос из (6)  https://d.radikal.ru/d18/2103/e3/1b16df7ed306.jpg , т.е. там 2 строки, которая выделена красным - ее не должно быть, как быть?
   azernot
 
9 - 23.03.21 - 13:46
(5) Значит неправильно запрос сделали.

Ваша задача №1 получить максимальную из меньших дату установки цены в разрезе задания на работу и контрагента.

Ваша задача №2 соединить задания на работу с результатом  из №1
   azernot
 
10 - 23.03.21 - 13:53
Как-то так:

ВЫБРАТЬ
        ЗаданияНаРаботу.Контрагент КАК Контрагент,
        ЗаданияНаРаботу.Период КАК Период,
        МАКСИМУМ(ТабЦен.Период) КАК ДатаУстановкиЦены
ПОМЕСТИТЬ ДатаУстановкиЦенПоКонтрагенту
    ИЗ
        РегистрНакопления.ЗаданияНаРаботу КАК ЗаданияНаРаботу
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Расш1_Прайс КАК ТабЦен
            ПО (ТабЦен.Период <= ЗаданияНаРаботу.Период)
                И ЗаданияНаРаботу.Контрагент = ТабЦен.Контрагент
    ГДЕ
        ЗаданияНаРаботу.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
        И ВЫБОР
                КОГДА &Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                    ТОГДА ЗаданияНаРаботу.Контрагент = &Контрагент
                ИНАЧЕ ИСТИНА
            КОНЕЦ
    
    СГРУППИРОВАТЬ ПО
        ЗаданияНаРаботу.Контрагент,
        ЗаданияНаРаботу.Период 
;

ВЫБРАТЬ
    ЗаданияНаРаботу.Контрагент КАК Контрагент,
    ЗаданияНаРаботу.Номенклатура КАК Номенклатура,
    ЗаданияНаРаботу.Сотрудник КАК Сотрудник,
    ЗаданияНаРаботу.Комментарий КАК Комментарий,
    ЗаданияНаРаботу.ЗагрузкаФакт КАК ЗагрузкаФакт,
    ТабЦен.Период КАК Дата,
    ТабЦен.БесплатноЧасов КАК ЗначениеЧасы,
    ТабЦен.Сопр КАК ЗначениеСопр,
    ТабЦен.Разраб КАК ЗначениеРазраб,
    ЗаданияНаРаботу.Период КАК Период,
    ЗаданияНаРаботу.ВремяНачала КАК ВремяНачала,
    ДанныеПроизводственногоКалендаря.ВидДня КАК ВидДня
ИЗ
    РегистрНакопления.ЗаданияНаРаботу КАК ЗаданияНаРаботу
        ЛЕВОЕ СОЕДИНЕНИЕ ДатаУстановкиЦенПоКонтрагенту КАК ДатаУстановкиЦенПоКонтрагенту
        ПО ЗаданияНаРаботу.Контрагент = ДатаУстановкиЦенПоКонтрагенту.Контрагент
    И ЗаданияНаРаботу.Период = ДатаУстановкиЦенПоКонтрагенту.Период
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Расш1_Прайс КАК ТабЦен
        ПО (ДатаУстановкиЦенПоКонтрагенту.Контрагент = ТабЦен.Контрагент)
    И ДатаУстановкиЦенПоКонтрагенту.ДатаУстановкиЦены = ТабЦен.Период
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
        ПО (ЗаданияНаРаботу.Период = ДанныеПроизводственногоКалендаря.Дата)
ГДЕ
    ЗаданияНаРаботу.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
    И ВЫБОР
            КОГДА &Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                ТОГДА ЗаданияНаРаботу.Контрагент = &Контрагент
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И ВЫБОР
            КОГДА &Сотрудник <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
                ТОГДА ЗаданияНаРаботу.Сотрудник = &Сотрудник
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И ВЫБОР
            КОГДА &Договор <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
                ТОГДА ЗаданияНаРаботу.Договор = &Договор
            ИНАЧЕ ИСТИНА
        КОНЕЦ

УПОРЯДОЧИТЬ ПО
    Контрагент,
    Период
ИТОГИ
    СУММА(ЗагрузкаФакт),
    МАКСИМУМ(ЗначениеЧасы),
    МАКСИМУМ(ЗначениеСопр),
    МАКСИМУМ(ЗначениеРазраб)
ПО
    Контрагент,
    Номенклатура,
    Сотрудник
   AnisaL
 
11 - 23.03.21 - 14:08
(10) Спасибо большое!!! Все получилось)))

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.