|
Можно ли в СКД сделать такую формулу | ☑ | ||
---|---|---|---|---|
0
Karambol
02.02.13
✎
18:49
|
Добрый день!
Подскажите, можно ли средствами СКД задать такую формулу(функцию) за произвольный период: Аср = (А1/2+А2+А3+...+Аn/2)/n-1, где n - количество дней в периоде, Аn - значение ресурса регистра накопления на n-ный день? |
|||
1
Kom-off
02.02.13
✎
23:03
|
Да можно, но скорее всего, придется потрудиться.
|
|||
2
ssh2006
02.02.13
✎
23:59
|
Делал такое в запросе. Можно не получать остаток регистра на каждый день, а и из вирт таб остатки и обороты с периодичностью день получать количество дней, между двумя ближайшими периодами и умножать на значение ресурса, т.е. заначение * сколько дней оно не изменялось
|
|||
3
i-rek
03.02.13
✎
00:08
|
СКД тут ни при делах вообще, всё только языком запросов
|
|||
4
GANR
03.02.13
✎
01:12
|
(0) В 1С 8.3 в язык выражений СКД, вроде, куча формул понапихана. Может там и можно. Ну а так можно (2)(3), либо ещё функцию общего модуля можно привинтить, что проще, но не факт, что лучше.
|
|||
5
Noroving
03.02.13
✎
04:40
|
(0) Ну если строго по такой формуле, то тут реально нужно функцию из общего модуля прикреплять) или же делать пакетный запос... получать данные на первый день.. последний... и потом уже по формуле...
|
|||
6
Karambol
03.02.13
✎
06:34
|
(5)А почему пакетный запрос, а не объединение?
|
|||
7
Karambol
03.02.13
✎
07:06
|
(2)Можно пример?
|
|||
8
GANR
03.02.13
✎
11:18
|
(8) Вот примеры: sql-ex.ru. Получи первый сертификат - отличное соотношение затраченных сил к полезности полученных навыков. У меня месяц ушел между делами, люди за 2 недели успевают всего-то.
|
|||
9
i-rek
03.02.13
✎
11:39
|
ВЫБРАТЬ СУММА(Т.Сумма)/Количество(Дней) ИЗ (ВЫБРАТЬ Регистр.Сумма*ВЫБОР КОГДА Регистр.Период = &ДатаНач ИЛИ Регистр.Период = НАЧАЛОПЕРИОДА(&ДатаКон,День) ТОГДА 0.5 ИНАЧЕ 0 КОНЕЦ КАК Сумма, 1 КАК Дней ИЗ РегистрНакопления.ИмяРегистра.Остатки(&ДатаНач,ДатаКон,День) КАК Регистр) КАК Т
|
|||
10
kabanoff
03.02.13
✎
11:41
|
(0) Легко. Если у тебя виртуальная таблица оборотов, ставишь периодичность ДЕНЬ, а в формуле ресурса пишешь что-то вроде этого:
СУММА(ВЫБОР КОГДА Период = &НачалоПериода ИЛИ Период = &КонецПериода ТОГДА ТвойРесурс/2 ИНАЧЕ ТвойРесурс) / КоличествоДнейВПериоде где КоличествоДнейВПериоде - это РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ). |
|||
11
kabanoff
03.02.13
✎
11:44
|
*Точнее так:
СУММА(ВЫБОР КОГДА Период = &НачалоПериода ИЛИ Период = &КонецПериода ТОГДА ТвойРесурс/2 ИНАЧЕ ТвойРесурс КОНЕЦ) / (КоличествоДнейВПериоде-1) |
|||
12
Karambol
03.02.13
✎
11:50
|
(8)Спасибо! Полезный сайт.
(9),(10) Спасибо! Только вот еще вопрос: а попадут ли в выборку дни, в которых не было движений? |
|||
13
shuhard
03.02.13
✎
11:53
|
(12) в выборку - нет
|
|||
14
wertyu
03.02.13
✎
12:12
|
ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.Период = &ДатаНачала ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток ИНАЧЕ ВЫБОР КОГДА ТоварыНаСкладахОстаткиИОбороты.Период = &ДатаОкончания ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток / 2 / РАЗНОСТЬДАТ(&ДатаНачала, &ДатаОкончания, ДЕНЬ) ИНАЧЕ ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот * (РАЗНОСТЬДАТ(ТоварыНаСкладахОстаткиИОбороты.Период, &ДатаОкончания, ДЕНЬ) + 0.5) / РАЗНОСТЬДАТ(&ДатаНачала, &ДатаОкончания, ДЕНЬ) КОНЕЦ КОНЕЦ КАК Среднее |
|||
15
wertyu
03.02.13
✎
12:14
|
Аср = (А1/2+А2+А3+...+Аn/2)/(n-1) = А1 + А1об*(n-1.5)/(n-1) + А2об*(n-2.5)/(n-1) + ... + Аn-1об/2/(n-1)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |