Имя: Пароль:
1C
 
Средний остаток за месяц
0 Чинандалар Бонг
 
20.03.09
07:41
делаю отчет в котором считаю средний остаток за месяц. Среднее считается сложением начального остатка на каждый день и делением на колво дней.
Отчет имеет вид
-----------------------------------------
Товар                | Остаток          |
                    |-------------------
                    |Январь | Февраль  |
-----------------------------------------

делается все на СКД, получился такой запрос
ВЫБРАТЬ
   ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
   ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
   ПартииТоваровНаСкладахОстаткиИОбороты.ПериодМесяц,
   ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень,
   СРЕДНЕЕ(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьНачальныйОстаток) КАК СредняяСебестоимость
   
ИЗ
   РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты

СГРУППИРОВАТЬ ПО
   ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
   ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
   ПартииТоваровНаСкладахОстаткиИОбороты.ПериодМесяц,
   ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень

проблема в том что здесь две группировки по периоду - день и месяц. Когда я в отчете вывожу с группировкой по месяцу, то он мне показывает начальный остаток на этот месяц, а мне нужно среднее на месяц. Не могу сообразить как это сделать. Подскажите пожалуйста
1 Defender aka LINN
 
20.03.09
07:43
(0) "Среднее считается сложением начального остатка на каждый день и делением на колво дней" - ну и где это?
2 Чинандалар Бонг
 
20.03.09
07:53
ну типа вот :)
СРЕДНЕЕ(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьНачальныйОстаток) КАК СредняяСебестоимость
3 Чинандалар Бонг
 
20.03.09
08:12
нид хелп
4 Чинандалар Бонг
 
20.03.09
08:44
помогите пожалуйста
5 Чинандалар Бонг
 
20.03.09
08:55
аксакалы, ау!
6 Irbis
 
20.03.09
08:56
Плюс еще не хило бы на начало и конец периода брать не весь остаток, а только половину.
7 Чинандалар Бонг
 
20.03.09
08:59
ну можно конечно на начало и конец брать и делить пополам, но это не принципиально. Вопрос в другом. Как в группировку по месяцу засунуть не данные остатка по это группировке а результат вычисления среднего по дням?
8 Чинандалар Бонг
 
20.03.09
09:18
буду настойчивым. спросить больше не у кого
9 Irbis
 
20.03.09
09:19
Периодичность кури. И то еще придется помучаться.
10 чувак
 
20.03.09
09:26
(7) Если это СКД, там в первой закладке есть же опция "Выражения"
11 Чинандалар Бонг
 
20.03.09
09:26
может сделать два набора данных в СКД, в одном считать по дням, в другом по месяца и потом соединить?
12 Чинандалар Бонг
 
20.03.09
09:46
может где то почитать про СКД можно? инфы очень мало, на ИТСе смотрел...
13 Defender aka LINN
 
20.03.09
09:52
(2) Это типа "СРЕДНЕЕ(Поле)". Это никак не "сложение начального остатка на каждый день и деление на колво дней"
14 Чинандалар Бонг
 
20.03.09
09:54
(13) ок. а как надо сделать?
15 IronDemon
 
20.03.09
10:18
16 Чинандалар Бонг
 
20.03.09
10:50
тупо сделал так
ВЫБРАТЬ
   ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
   ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень,
   СРЕДНЕЕ(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьНачальныйОстаток) КАК СтоимостьНачальныйОстаток,
   ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
ИЗ
   РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты

СГРУППИРОВАТЬ ПО
   ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
   ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень,
   ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры

формирую отчет за месяц, в итогах получаю нужную мне цифру - средний остаток за месяц рассчитанный с периодичностью день. Как получить тож самое но чтобы еще с периодичнлстью по месяцам?
17 Чинандалар Бонг
 
20.03.09
10:51
(15) долго внимал. не увидел обшности задачи, тем более для СКД этот способ видимо не катит
18 IronDemon
 
20.03.09
10:52
(17) Запросом из (15) считается сумма по **всем** дням
19 Irbis
 
20.03.09
10:53
20 IronDemon
 
20.03.09
10:55
ВЫБРАТЬ
   СУММА(Дебиторка.СуммаКонечныйОстаток) КАК Долг,
   ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, РазностьДат.НомерДняИзДиапазона) КАК Период,
   0 КАК Средний,
   Дебиторка.Склад,
   Дебиторка.Организация
ИЗ
   (ВЫБРАТЬ
       Оборот1.Дата КАК ДатаС,
       МИНИМУМ(ВЫБОР
               КОГДА Оборот2.Дата ЕСТЬ NULL
                   ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
               ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Оборот2.Дата, ДЕНЬ, -1), ДЕНЬ)
           КОНЕЦ) КАК ДатаПо,
       Оборот1.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
       Оборот1.Организация КАК Организация,
       Оборот1.Склад КАК Склад
   ИЗ
       (ВЫБРАТЬ
           ПартииТоваровНаСкладахОстаткиИОбороты.Период КАК Дата,
           ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРеглКонечныйОстаток КАК СуммаКонечныйОстаток,
           ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
           ПартииТоваровНаСкладахОстаткиИОбороты.Организация КАК Организация
       ИЗ
           РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , {(Организация).* КАК Организация, (Склад).* КАК Склад}) КАК ПартииТоваровНаСкладахОстаткиИОбороты) КАК Оборот1
           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               ПартииТоваровНаСкладахОстаткиИОбороты.Период КАК Дата,
               ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
               ПартииТоваровНаСкладахОстаткиИОбороты.Организация КАК Организация
           ИЗ
               РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&КонецПериода, &КонецПериода, День, , {(Организация).* КАК Организация, (Склад).* КАК Склад}) КАК ПартииТоваровНаСкладахОстаткиИОбороты) КАК Оборот2
           ПО Оборот1.Дата < Оборот2.Дата
               И Оборот1.Склад = Оборот2.Склад
               И Оборот1.Организация = Оборот2.Организация
       СГРУППИРОВАТЬ ПО
       Оборот1.Дата,
       Оборот1.СуммаКонечныйОстаток,
       Оборот1.Организация,
       Оборот1.Склад) КАК Дебиторка
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК НомерДняИзДиапазона
       ИЗ
           (ВЫБРАТЬ
               0 КАК a
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               1
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               2
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               3
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               4
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               5
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               6
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               7
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               8
                       ОБЪЕДИНИТЬ
                       ВЫБРАТЬ
               9) КАК aa
               ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   0 КАК b
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   1
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   2
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   3
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   4
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   5
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   6
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   7
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   8
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   9) КАК bb
               ПО (ИСТИНА)
               ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   0 КАК c
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   1
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   2
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   3
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   4
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   5
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   6
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   7
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   8
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   9) КАК cc
               ПО (ИСТИНА)
               ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   0 КАК d
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   1
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   2
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   3
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   4
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   5
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   6
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   7
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   8
                               ОБЪЕДИНИТЬ
                               ВЫБРАТЬ
                   9) КАК dd
               ПО (ИСТИНА)
       ГДЕ
           aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= &КолДнейМеждуДатами) КАК РазностьДат
       ПО (ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, РазностьДат.НомерДняИзДиапазона) МЕЖДУ Дебиторка.ДатаС И Дебиторка.ДатаПо)

СГРУППИРОВАТЬ ПО
   ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, РазностьДат.НомерДняИзДиапазона),
   Дебиторка.Склад,
   Дебиторка.Организация
21 Чинандалар Бонг
 
20.03.09
10:55
(18) эт я понял. потом надо поделить на колво дней. можно конечно, тока зачем если способ (16) прекрсно работает
22 IronDemon
 
20.03.09
10:57
(21) Этот метод работает когда есть движение.
23 Чинандалар Бонг
 
20.03.09
11:00
а хоть бы и не было. не стоит задача снять остатки на каждый день. стоит задача посчитать СРЕДНЕЕ. если даже за весь месяц движения не было, то хоть н акаждый день остатки снимай и дели на колво дней, хоть фукнцию среднее используй - результат одинаковый
24 Irbis
 
20.03.09
11:02
(23) Приход 01.01 расход 31.01 - каков средний остаток? Половина прихода по твоему? А то что товар месяц пролежал на складе?
25 IronDemon
 
20.03.09
11:07
(23) Ну-ну