![]() |
![]() |
![]() |
|
Цена на дату документа | ☑ | ||
---|---|---|---|---|
0
Sasha_uu
31.08.10
✎
06:34
|
Добрый день
Задача в следующем. Требуется получить цену из регистра на дату документа в запросе. Делаю запрос к регистру продаж , получаю регистратор и хочу получить цену которая была на установлена на дату регистратора 1С8 УТ 10.3.8.9 |
|||
1
Гефест
31.08.10
✎
06:38
|
Ты разрешения спрашиваешь?
|
|||
2
Sasha_uu
31.08.10
✎
06:39
|
(1) хочу знать ответ как это сделать?
|
|||
3
Нуф-Нуф
31.08.10
✎
06:45
|
||||
4
Sasha_uu
31.08.10
✎
11:16
|
v8: Запрос по ценам по разным датам документа
все прочитал, это все понятно, но в том случае если цена менялась несколько раз за месяц и отчет формируется тоже за месяц. Формируется отчет по группировкам документ то как быть в этом случае? Отчеты делаю через построитель с использованием универсального отчета |
|||
5
Ненавижу 1С
гуру
31.08.10
✎
11:23
|
там все расписано по полочкам:
ВЫБРАТЬ ВложенныйЗапрос.Ссылка, ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Количество, ВложенныйЗапрос.Количество * ЦеныНоменклатуры.Цена КАК Сумма ИЗ (ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура И (ЦеныНоменклатуры.ТипЦен = &ТипЦен) И (РеализацияТоваровУслугТовары.Ссылка.Дата >= ЦеныНоменклатуры.Период) СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Ссылка, РеализацияТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ВложенныйЗапрос.Период = ЦеныНоменклатуры.Период И ВложенныйЗапрос.Номенклатура = ЦеныНоменклатуры.Номенклатура И (ЦеныНоменклатуры.ТипЦен = &ТипЦен) |
|||
6
Sasha_uu
31.08.10
✎
11:28
|
(5) мне понятно. Получается что из вложенного запроса получаются максимальный период. А если цена на товар менялась несколько раз за месяц. Получается что он вернет максимальное значение? Я прав?
|
|||
7
Sasha_uu
31.08.10
✎
11:29
|
Как сделать группировку периодов, и как все это написать в запросе???
|
|||
8
shuhard
31.08.10
✎
11:33
|
||||
9
73
31.08.10
✎
12:02
|
(6) <Получается что он вернет максимальное значение?>
Обрати внимание в соединении: (РеализацияТоваровУслугТовары.Ссылка.Дата >= ЦеныНоменклатуры.Период) Максимальное, но не более чем на дату в документе! Т.е. на дату документа. Что ты и просил. |
|||
10
Sasha_uu
31.08.10
✎
12:41
|
у меня сейчас мозг сломается, не получается будь оно не ладно. ппц....
мой запрос: ВЫБРАТЬ РАЗРЕШЕННЫЕ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.СтоимостьОборот КАК СуммаУчет, ПродажиОбороты.ДоговорКонтрагента.Владелец КАК Контрагент, ПродажиОбороты.КоличествоОборот КАК Количество, ПродажиОбороты.Номенклатура.Вес * ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Тоннаж, ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ОптоваяЦена.Цена, 0) КАК СуммаОптовая, ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0) КАК СуммаТранспорт, ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ЗакупочнаяЦена.Цена, 0) КАК СуммаЗакупочная, ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0) КАК СуммаНаценка, (ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0)) / (ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0)) * 100 КАК ПроцентНаценки {ВЫБРАТЬ Номенклатура.* КАК Номенклатура, Контрагент.*, СуммаУчет, Количество, Тоннаж, СуммаОптовая, СуммаТранспорт, СуммаЗакупочная, СуммаНаценка, ПроцентНаценки} ИЗ (ВЫБРАТЬ МАКСИМУМ(Цена_ОПТОВАЯ.Период) КАК Период_ОПТОВАЯ_ЦЕНА, ПродажиОбороты.Номенклатура КАК Номенклатура, МАКСИМУМ(Цена_ТРАНСПОРТ.Период) КАК Период_ТРАНСПОРТ_ЦЕНА, МАКСИМУМ(Цена_ЗАКУП.Период) КАК Период_ЗАКУП_ЦЕНА, ПродажиОбороты.Регистратор КАК Регистратор ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цена_ТРАНСПОРТ ПО ПродажиОбороты.Номенклатура = Цена_ТРАНСПОРТ.Номенклатура И ПродажиОбороты.Регистратор.Дата >= Цена_ТРАНСПОРТ.Период ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цена_ЗАКУП ПО ПродажиОбороты.Номенклатура = Цена_ЗАКУП.Номенклатура И ПродажиОбороты.Регистратор.Дата >= Цена_ЗАКУП.Период ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цена_ОПТОВАЯ ПО ПродажиОбороты.Номенклатура = Цена_ОПТОВАЯ.Номенклатура И ПродажиОбороты.Регистратор.Дата >= Цена_ОПТОВАЯ.Период ГДЕ Цена_ОПТОВАЯ.ТипЦен = &ТипЦенОптовая И Цена_ТРАНСПОРТ.ТипЦен = &ТипЦенТранспортные И Цена_ЗАКУП.ТипЦен = &ТипЦенЗакупПлюс СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.Регистратор) КАК РасчетЦены ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ОптоваяЦена ПО РасчетЦены.Номенклатура = ОптоваяЦена.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ТранспортнаяЦена ПО РасчетЦены.Номенклатура = ТранспортнаяЦена.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЗакупочнаяЦена ПО РасчетЦены.Номенклатура = ЗакупочнаяЦена.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ПродажиОбороты ПО РасчетЦены.Номенклатура = ПродажиОбороты.Номенклатура И РасчетЦены.Регистратор = ПродажиОбороты.Регистратор ГДЕ ЗакупочнаяЦена.ТипЦен = &ТипЦенЗакупПлюс И ОптоваяЦена.ТипЦен = &ТипЦенОптовая И ТранспортнаяЦена.ТипЦен = &ТипЦенТранспортные {ГДЕ ПродажиОбороты.Номенклатура.* КАК Номенклатура, ПродажиОбороты.ДоговорКонтрагента.Владелец.* КАК Контрагент, ПродажиОбороты.Регистратор.*} {УПОРЯДОЧИТЬ ПО Номенклатура.*, Контрагент.*} ИТОГИ ПО ОБЩИЕ {ИТОГИ ПО Номенклатура.* КАК Номенклатура, Контрагент.*} |
|||
11
Sasha_uu
31.08.10
✎
12:41
|
в итоге получаю цену последнюю
|
|||
12
Ненавижу 1С
гуру
31.08.10
✎
12:45
|
подзапрос не соединяется с ценами по периодам у вас, в итоге вы хрень должны вроде бы вообще получить
|
|||
13
Sasha_uu
31.08.10
✎
12:48
|
(12) можете написать как правильно будет?
|
|||
14
Sasha_uu
31.08.10
✎
12:57
|
(12) сейчас попробую
|
|||
15
Sasha_uu
31.08.10
✎
13:18
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.СтоимостьОборот КАК СуммаУчет, ПродажиОбороты.ДоговорКонтрагента.Владелец КАК Контрагент, ПродажиОбороты.КоличествоОборот КАК Количество, ПродажиОбороты.Номенклатура.Вес * ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Тоннаж, ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ОптоваяЦена.Цена, 0) КАК СуммаОптовая, ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0) КАК СуммаТранспорт, ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ЗакупочнаяЦена.Цена, 0) КАК СуммаЗакупочная, ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0) КАК СуммаНаценка, (ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0)) / (ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0)) * 100 КАК ПроцентНаценки {ВЫБРАТЬ Номенклатура.* КАК Номенклатура, Контрагент.*, СуммаУчет, Количество, Тоннаж, СуммаОптовая, СуммаТранспорт, СуммаЗакупочная, СуммаНаценка, ПроцентНаценки} ИЗ (ВЫБРАТЬ МАКСИМУМ(Цена_ОПТОВАЯ.Период) КАК Период_ОПТОВАЯ_ЦЕНА, ПродажиОбороты.Номенклатура КАК Номенклатура, МАКСИМУМ(Цена_ТРАНСПОРТ.Период) КАК Период_ТРАНСПОРТ_ЦЕНА, МАКСИМУМ(Цена_ЗАКУП.Период) КАК Период_ЗАКУП_ЦЕНА, ПродажиОбороты.Период КАК Период ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, День, ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цена_ТРАНСПОРТ ПО ПродажиОбороты.Номенклатура = Цена_ТРАНСПОРТ.Номенклатура И ПродажиОбороты.Период >= Цена_ТРАНСПОРТ.Период ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цена_ЗАКУП ПО ПродажиОбороты.Номенклатура = Цена_ЗАКУП.Номенклатура И ПродажиОбороты.Период >= Цена_ЗАКУП.Период ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цена_ОПТОВАЯ ПО ПродажиОбороты.Номенклатура = Цена_ОПТОВАЯ.Номенклатура И ПродажиОбороты.Период >= Цена_ОПТОВАЯ.Период ГДЕ Цена_ОПТОВАЯ.ТипЦен = &ТипЦенОптовая И Цена_ТРАНСПОРТ.ТипЦен = &ТипЦенТранспортные И Цена_ЗАКУП.ТипЦен = &ТипЦенЗакупПлюс СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.Период) КАК РасчетЦены ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ОптоваяЦена ПО РасчетЦены.Номенклатура = ОптоваяЦена.Номенклатура И РасчетЦены.Период_ОПТОВАЯ_ЦЕНА = ОптоваяЦена.Период ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ТранспортнаяЦена ПО РасчетЦены.Номенклатура = ТранспортнаяЦена.Номенклатура И РасчетЦены.Период_ТРАНСПОРТ_ЦЕНА = ТранспортнаяЦена.Период ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЗакупочнаяЦена ПО РасчетЦены.Номенклатура = ЗакупочнаяЦена.Номенклатура И РасчетЦены.Период_ЗАКУП_ЦЕНА = ЗакупочнаяЦена.Период ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, День, ) КАК ПродажиОбороты ПО РасчетЦены.Номенклатура = ПродажиОбороты.Номенклатура И РасчетЦены.Период = ПродажиОбороты.Период ГДЕ ЗакупочнаяЦена.ТипЦен = &ТипЦенЗакупПлюс И ОптоваяЦена.ТипЦен = &ТипЦенОптовая И ТранспортнаяЦена.ТипЦен = &ТипЦенТранспортные {ГДЕ ПродажиОбороты.Номенклатура.* КАК Номенклатура, ПродажиОбороты.ДоговорКонтрагента.Владелец.* КАК Контрагент, ПродажиОбороты.Регистратор.*} СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.ДоговорКонтрагента.Владелец, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.Номенклатура.Вес * ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0), ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ОптоваяЦена.Цена, 0), ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0), ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ЗакупочнаяЦена.Цена, 0), ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0), (ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0)) / (ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ТранспортнаяЦена.Цена, 0)) * 100 {УПОРЯДОЧИТЬ ПО Номенклатура.*, Контрагент.*} ИТОГИ СУММА(СуммаУчет), СУММА(Количество), СУММА(Тоннаж), СУММА(СуммаОптовая), СУММА(СуммаТранспорт), СУММА(СуммаЗакупочная), СУММА(СуммаНаценка), СУММА(ПроцентНаценки) ПО ОБЩИЕ {ИТОГИ ПО Номенклатура.* КАК Номенклатура, Контрагент.*} выдает цену на последнюю дату |
|||
16
73
31.08.10
✎
13:25
|
>>ГДЕ
Цена_ОПТОВАЯ.ТипЦен = &ТипЦенОптовая И Цена_ТРАНСПОРТ.ТипЦен = &ТипЦенТранспортные И Цена_ЗАКУП.ТипЦен = &ТипЦенЗакупПлюс Условия на правую таблицу. Перенеси в условия соединений. |
|||
17
73
31.08.10
✎
13:27
|
(16)+ Типа:
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цена_ТРАНСПОРТ ПО ПродажиОбороты.Номенклатура = Цена_ТРАНСПОРТ.Номенклатура И ПродажиОбороты.Период >= Цена_ТРАНСПОРТ.Период И Цена_ТРАНСПОРТ.ТипЦен = &ТипЦенТранспортные остальные аналогично. |
|||
18
Sasha_uu
31.08.10
✎
13:42
|
(17) в чем разница то что я написал. Одно и тоже
|
|||
19
73
31.08.10
✎
14:01
|
(17) Условие ГДЕ на правую таблицу превращает Левое соединение во Внутреннее.
|
|||
20
73
31.08.10
✎
14:02
|
(19) -> (18)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |