Имя: Пароль:
1C
1С v8
Можно ли в СКД сделать такую формулу
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)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс