Имя: Пароль:
1C
1С v8
Оптимальное решение
0 cool
 
27.02.13
09:36
РН Продажи
"дата",    "Ном-ра"   "Кол-во"    

РС Цены (период "день")
"дата",    "Ном-ра"   "Цена"

Отчет
дата    Ном-ра    Кол-во    Сумма в розничных ценах ценах

Предполагаемое ниже решение подразумевает "запрос в цикле", что нельзя

Запрос к регистру продаж (сгруппировав по номенклатуре в пределах периодичности регистра сведений, так как в ином случае цена будет неактуальной) и использовать из полученных записей реквизиты, номенклатура и период, в качестве параметров к срезу последних регистра сведений полученную цену перемножать на количество и писать например в таблицу значений, потом эту таблицу выводить в качестве этого отчета, сворачивать и что-то еще с ней делать не нужно, так как у нас детализация по дате нужна

Вопрос, как избавиться от запроса в цикле, как сделать с помощью одного запроса?
Замена запроса на объектное обращение к РС использовав структура в качестве отбора считается таким же запросом, так нельзя
1 butterbean
 
27.02.13
09:39
нифига не понял, но вот это поможет Книга знаний: Срез последних на каждую дату в запросе
2 Shurjk
 
27.02.13
09:39
В поиск этой теме уже лет 5 не меньше.
3 Alex S D
 
27.02.13
09:39
что мешает соединить по дате и по номенклатуре?
4 cool
 
27.02.13
09:58
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ПродажиОбороты.Период,
   |    ПродажиОбороты.Номенклатура,
   |    ПродажиОбороты.КоличествоОборот
   |ПОМЕСТИТЬ ВремТаб
   |ИЗ
   |    РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ПродажиОбороты
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ВремТаб.Период,
   |    ВремТаб.Номенклатура,
   |    ВремТаб.КоличествоОборот,
   |    ВремТаб.КоличествоОборот * ЦеныНоменклатуры.Сумма КАК Сумма
   |ИЗ
   |    ВремТаб КАК ВремТаб
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
   |        ПО ВремТаб.Период = ЦеныНоменклатуры.Период
   |            И ВремТаб.Номенклатура = ЦеныНоменклатуры.Номенклатура";
5 cool
 
27.02.13
09:59
Интересует, это классическая задача, и есть ли красивое решение?
6 andreymongol82
 
27.02.13
10:01
(5) Это классическая
7 cool
 
27.02.13
10:04
На РС мы можем в качестве параметра отбор по номенклатуре из ВремТаб передать? Нужно ли это делать? Просто до соединения мы получаем весь регистр сведений, это нехорошо.
8 cool
 
04.03.13
11:40
|            И ВремТаб.Номенклатура = ЦеныНоменклатуры.Номенклатура";

Тут надо >= вместо = ,но работать не будет, вернее будет, но будут выбираться записи и за прошлые даты изменения цен. Кто подскажет как надо?
9 Fragster
 
гуру
04.03.13
11:40
Оптимально запилить в Продажи ресурс/реквизит СуммаБезСкидок
10 cool
 
04.03.13
11:43
не-не-не, структуру регистров менять нельзя, ресурсы добавлять нельзя
11 Fragster
 
гуру
04.03.13
11:50
(10) риальне, летать будет на любом количестве данных. а всякие костыли со срезом последних на каждую дату тебя вынуждают делать выборку по дням даже если у тебя отчет помесячный
12 cool
 
04.03.13
12:01
(11) А если несколько типов цен, тогда добавлять измерение еще, это понятно, но как решить задачу из того, что есть?
13 Fragster
 
гуру
04.03.13
12:10
(12) не, ну хотелки маркетологов убьют любую базу, да.