Имя: Пароль:
1C
1С v8
Как вычислить среднее значение в колонке таблицы значений ?
, ,
0 Ткачев
 
18.07.12
20:30
Собственно сабж.
Сейчас сделано через цикл, подсчет кол-во значений и делиться на сумму.
1 mehfk
 
18.07.12
20:32
тз.Итог("мояколонка")/тз.Количество()
2 Mort
 
18.07.12
20:32
Итог() Количество()
3 Ткачев
 
18.07.12
20:32
Немножко не то, число строк постоянно 31, а значение может быть не у всех.
4 Ткачев
 
18.07.12
20:36
Постоянно... колонок 12, строк 31, значение в строках есть не везде, надо вычислить среднее значение во всех колонках.
5 andrewks
 
18.07.12
20:40
(3) не понял
6 izekia
 
18.07.12
20:40
ну сложи итоги и посчитай, или ты про то что незаполненные не должны попадать в расчет?
7 izekia
 
18.07.12
20:41
(5) он похоже хочет только по заполненным расчитывать
8 andrewks
 
18.07.12
20:41
(7) тогда предложу запросом
9 izekia
 
18.07.12
20:42
(8) некошерно как-то
10 Мимохожий Однако
 
18.07.12
20:43
При заполнении ТЗ создай колонку "Есть значение", проставляй в этой колонке единицу при наличии ненулевого значения в соседней колонке. Тогда можно без перебора обойтись. Возьмешь для подсчета количества итог в этой колонке.
11 Ткачев
 
18.07.12
20:43
0,0,0,5,0,0,2,0,0,3 - вот отсюда надо вычислить среднее.
12 izekia
 
18.07.12
20:43
(10) типа и так можно сортировать
13 izekia
 
18.07.12
20:44
(11) лучше скажи свою версию среднего по этим данным
14 andrewks
 
18.07.12
20:44
(9) почему?
15 Ткачев
 
18.07.12
20:45
(13)3,33
16 izekia
 
18.07.12
20:45
(14) а зачем данные на скл гонять только для того чтобы посчитать?
17 izekia
 
18.07.12
20:46
(15) значит сортируешь по убыванию и складываешь пока не 0, дальше прерываешь цикл и делишь на количество обработанных строк и делишь
18 andrewks
 
18.07.12
20:46
(16) пусть работает, скотина бессловесная. даром, что-ли, на неё деньги потрачены? :)
19 Живой Ископаемый
 
18.07.12
20:47
боже мой... и до сих пор никто не предложил правильного?
20 izekia
 
18.07.12
20:47
я предложил уже
21 Ткачев
 
18.07.12
20:47
(19)Нее, Вас только ждем.
22 Живой Ископаемый
 
18.07.12
20:50
а, предложили... только не разжевали...
23 izekia
 
18.07.12
20:50
автору только читать подучиться и все у него получится
24 Живой Ископаемый
 
18.07.12
20:50
правильно в (8)
25 Ткачев
 
18.07.12
20:51
Расположение строк нельзя нарушать.
26 izekia
 
18.07.12
20:52
правильно в (9)
27 izekia
 
18.07.12
20:54
с чего бы в 8 правильно, 1С в любом случае обходит коллекцию, причем все поля, чтобы положить таблицу на сервер, потом скл пишет в темп дб, потом выполняется запрос, что же в этом правильного?
28 izekia
 
18.07.12
20:54
тогда уже просто обойти колонки проще
29 Fragster
 
гуру
18.07.12
20:54
Итог(...)/(Количество() - НайтиСтроки(тута отбор по нулю).Количество())
30 izekia
 
18.07.12
20:55
(28) строки
31 izekia
 
18.07.12
20:55
(29) да, прикольный вариант, крутился)
32 Fragster
 
гуру
18.07.12
20:57
(31) обращайтесь. А вообще задолбали примитивные вопросы. Такое ощущение, что алгоритм простейший составить не могут люди. Приходится "вредные советы" давать.
33 Fragster
 
гуру
18.07.12
20:57
ну и понятия о том, что такое "среднее", суммовые разницы, и т.п. у всех тоже свое...
34 Fragster
 
гуру
18.07.12
20:57
:(
35 Ткачев
 
18.07.12
21:00
Не так все просто, там еще итоги в 0 и 32 строке (по индексу).
36 Fragster
 
гуру
18.07.12
21:01
(35) молодец. а теперь себе ответь на вопрос, откуда берется эта таблица?
37 Живой Ископаемый
 
18.07.12
21:02
2(36)даже думать нечего, и так понятно
38 Fragster
 
гуру
18.07.12
21:02
кстати, в феврале 28-29 дней...
39 Fragster
 
гуру
18.07.12
21:02
в апреле - 30...
40 Fragster
 
гуру
18.07.12
21:03
а если оно на форме - то походу автор не осилил шапку и подвал у табличного поля...
41 Ткачев
 
18.07.12
21:03
(38)Это не важно, где нет дня там 0, отчет разбираю прошлого программера, статистика продаж.
42 Ткачев
 
18.07.12
21:04
(40)Не на форме, данные собираются запросом, ложатся в ТЗ и от туда в макет.
43 andrewks
 
18.07.12
21:05
(27) съел? (42)  :Р
44 Fragster
 
гуру
18.07.12
21:06
(42) а запрос не позволяет это сделать ДО того, как ты склеишь реальные обороты с числами?
45 izekia
 
18.07.12
21:06
а в запросе сразу никак не посчитать?
46 izekia
 
18.07.12
21:06
(43) я же не виноват в том что автор непробиваем
47 Ненавижу 1С
 
гуру
18.07.12
21:06
(42) а сразу взять в запросе?
48 izekia
 
18.07.12
21:08
у меня вообще есть предложение к автору: не трогать то что работает
49 Ткачев
 
18.07.12
21:09
(48)Медленно работает.
50 Мимохожий Однако
 
18.07.12
21:13
(49)Смотри не на ТЗ, а на запрос.
51 Ткачев
 
18.07.12
21:14
(47)Там периодичность ДЕНЬ стоит, среднее надо за месяц, итоги нужны за день, 10 дней, месяц
52 Живой Ископаемый
 
18.07.12
21:15
в самом общем виде:
http://screencast.com/t/hYdqvVLjLV2L
53 andrewks
 
18.07.12
21:17
(52) а чё это у тебя за консоль?
54 Живой Ископаемый
 
18.07.12
21:17
2(51) всем плевать. серьезно
55 Живой Ископаемый
 
18.07.12
21:18
56 andrewks
 
18.07.12
21:19
(55) ч0рт, жизнь прожита зря. пойду, заценю
57 Живой Ископаемый
 
18.07.12
21:20
2(56) добавляю в каждую базу в которой возможна работа с толстыми формами. просто развязывает руки.
58 Ткачев
 
19.07.12
10:08
Куда ставить среднее за месяц в этот запрос ?
   Запрос = Новый Запрос("
   |ВЫБРАТЬ
   |    ИздержкиОбороты.СуммаУпрОборот КАК СуммаЗП,
   |    ИздержкиОбороты.Период,
   |    ИздержкиОбороты.Организация
   |ПОМЕСТИТЬ Зарплата
   |ИЗ
   |    РегистрНакопления.Издержки.Обороты(
   |            &НачДата,
   |            &КонДата,
   |            День,
   |            Статья = &Статья1
   |                ИЛИ Статья = &Статья2) КАК ИздержкиОбороты
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ПродажиОбороты.Период КАК Период,
   |    ПродажиОбороты.ВсегоУпрОборот КАК Выручка,
   |    ПродажиОбороты.ВсегоУпрОборот - ЕСТЬNULL(ПродажиОбороты.СтоимостьУпрОборот, 0) - ЕСТЬNULL(Зарплата.СуммаЗП, 0) КАК Прибыль
   |ИЗ
   |    РегистрНакопления.Продажи.Обороты(
   |            &НачДата,
   |            &КонДата,
   |            День,
   |            " + ?(ЕстьСклад, "Склад = &Склад", "") + "
   |                И НЕ Номенклатура = &Баланс) КАК ПродажиОбороты
   |        ЛЕВОЕ СОЕДИНЕНИЕ Зарплата КАК Зарплата
   |        ПО (ДЕНЬ(ПродажиОбороты.Период) = ДЕНЬ(Зарплата.Период))
   |            И ПродажиОбороты.Склад.Организация = Зарплата.Организация
   |
   |УПОРЯДОЧИТЬ ПО
   |    Период");
59 Fragster
 
гуру
19.07.12
10:38
гыгы, а если Продаж в какой-то день не было, а издержки были?
60 Fragster
 
гуру
19.07.12
10:39
продажи (включая вычисленное среднее) -> ВТ, а ВТ уже соединяй/объединяй
61 Fragster
 
гуру
19.07.12
10:54
кстати, а в чем прикол соединять по полю День? начальные и конечные даты всегда в пределах месяца? Да и при этом все равно из виртуальных таблиц даты начала дня при такой периодичности возвращаются и сразу по ним соединять без всяких извращений с День()
62 Ткачев
 
23.07.12
13:56
Как то так получилось:
   Для Аа = 1 по 12 Цикл
       КолВоДнейМесяца = Число(Формат(КонецМесяца(Дата(ГодОтчета, Аа, 01)), "ДФ=dd"));
       СредВыручка  = СуммаИтогов["В" + Аа] / КолВоДнейМесяца;
       СредПрибыль  = СуммаИтогов["П" + Аа] / КолВоДнейМесяца;
       ОбластьМесяца.Параметры.СредВыручка = СредВыручка;
       ОбластьМесяца.Параметры.СредПрибыль = СредПрибыль;
       Таб.Присоединить(ОбластьМесяца);
       СредСумма["В" + Аа] = СредВыручка;
       СредСумма["П" + Аа] = СредПрибыль;
   КонецЦикла;
63 izekia
 
23.07.12
14:53
Ура