Имя: Пароль:
1C
 
СКД: Помогите с отчетом на компоновке
0 also
 
25.08.09
12:05
Приветствую всех! Вот решил заняться благим делом. Порешать задачки на спеца по платформе. Засел как ни странно на отчете. В общем задание такое: построить отчет по анализу продаж за период. Отчет должен выглядеть так

___________________________________________________________
|Ном-ра|Кол-во|Себестоимость|Продажа|Прибыль|Интервал|Срок|
|      |      |             |       |       |        |    |
|      |      |             |       |       |        |    |

В общем засел на поле Интервал.
Интервал - расчетный показатель. Средний интервал отгрузок (в днях). Рассчитывается как дата первой отгрузки минус дата последний отгрузки поделенное на количество отгрузок.

Собственно у меня уже сделан оборотный регистр "Продажи"(Контрагент, Номенклатура|Количество, Сумма).
Вобщем-то главная проблема не могу понять как получить табличку

|Ном-ра1|ДатаПервойОтгрузки1|
|Ном-ра2|ДатаПервойОтгрузки1|
.............................

Ну и с последней отгрузкой также. Как их объединить и посчитать я уж соображу, а в получении таких табличек чего-то завис
1 also
 
25.08.09
12:05
Блин, извиняюсь. Поменяйте тему на v8
2 also
 
25.08.09
12:13
Вот таким запросом

ВЫБРАТЬ
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.Регистратор.Дата
ИЗ
   РегистрНакопления.Продажи.Обороты(, , Регистратор, ) КАК ПродажиОбороты


я получаю такую таблицу

|Ном-ра1|ДатаПервойОтгрузки1|
|Ном-ра2|ДатаПервойОтгрузки2|
|Ном-ра1|ДатаСледующейОтгрузки1|
|Ном-ра2|ДатаСледующейОтгрузки2|
........................

Как условие наложить чтобы получить только

|Ном-ра1|ДатаПервойОтгрузки1|
|Ном-ра2|ДатаПервойОтгрузки2|
3 eklmn
 
гуру
25.08.09
12:19
РегистрНакопления.Продажи.Обороты(, , ДЕНЬ, )
+ условие по периоду
4 also
 
25.08.09
12:20
(3) Мне кажется день не канает. Потому что каждый документ это отгрузка, а их может быть несколько в день
5 also
 
25.08.09
12:35
ап
6 Vitello
 
25.08.09
12:36
Вложенный запрос с выбрать первые 1 и соеднинением потом с номенклатурой?
7 also
 
25.08.09
12:41
(6)Вот я тоже о чем то таком думал. Только получается что нужно не ВЫБРАТЬ ПЕРВЫЕ 1, а ВЫБРАТЬ ПЕРВЫЕ n, где n-количество номенклатуры
8 also
 
25.08.09
12:43
+(7) потому как ДатаПервойОтгрузки1 может не равняться ДатаПервойОтгрузки2
9 Aprobator
 
25.08.09
13:11
ЛЕВОЕ СОЕДИНЕНИЕ на само себя с условием ДАТА1 > ДАТА2 и МАКС(ДАТА2)
10 also
 
25.08.09
14:22
(9) Блин, а не можешь написать. Чего то все не получается (
11 also
 
25.08.09
14:48
подниму еще разок
12 Aprobator
 
25.08.09
17:42
Лови, код далеко не идеальный. В частности в том плане, что даты предыдущей отгрузки смотреть по виртуальной таблице не есть хорошо (это лучше делать по основной таблице), ну и т.д.. Идею схватишь - сделаешь все красиво. Идеально писать лениво. Да и ковыряясь сам  подрастешь.

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

СГРУППИРОВАТЬ ПО Продажи.Номенклатура, Продажи.Дата
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn