Имя: Пароль:
1C
1С v8
Итоги в СКД . Вопрос
,
0 sergeytorop
 
26.11.13
14:40
Мучаюсь с СКД. Точнее пишу отчет. Вся проблема в том что не подсчитать правильно сумму оплат по документу , то есть
  Поставщик         Сумма         Оплата
ООО "Рога"         10000  
     Документ №1    3000           6000
         Материал№1   1000         3000
         Материал№2   2000         3000  
     Документ №2    7000           7000
         Материал№1   7000         7000

СуммаОплаты это реквизит шапки дока ,поэтому он попадет в каждую строку
и при суммировании выдает суммы пропорционально количеству строк дока,
в Скд я делитант может кто объяснить неучу куда копать..
1 vicof
 
26.11.13
14:42
Значит или запрос менять, или агрегирующую функцию
2 vicof
 
26.11.13
14:44
и это, правильно "дилетант"
3 spu79
 
26.11.13
14:48
а причем здесь СКД? Это запросом нормально считается. я временные таблицы в таких схемах использую, а так ... на вкус и цвет...
4 sergeytorop
 
26.11.13
14:48
Отчет на скд написан
5 Новиков
 
26.11.13
14:56
Попробуй ресурс СуммаОплаты рассчитать в итогах по группировке документа с какой-нибудь агрегирующей функцией, типа Минимум или Максимум.
6 Новиков
 
26.11.13
14:57
но общие итоги правильно все равно не получишь таким макаром.
7 samozvanec
 
26.11.13
14:57
+(5) или СРЕДНЕЕ
8 vicof
 
26.11.13
14:59
(6) +1. Поэтому на помощь приходит ВычислитьВыражениеСГруппировкойМассив()
9 Necessitudo
 
26.11.13
14:59
(О) Чтобы не было задублений в итогах, тебе нужны два набора данных. В одном шапка документа с ссылкой на документ, во втором - ТЧ документов с ссылкой на документ. Связываешь два набора по ссылке и СКД не будет дублировать итоги по документу. Проверено.
10 Classic
 
26.11.13
15:03
(0)
Сумму оплаты по материалам разбивать надо?
если надо, то переписывай запрос
если не надо, то (9)
11 spu79
 
26.11.13
15:08
(4) - да на чем угодно, но считается это в запросе, с учетом (10).
12 sergeytorop
 
26.11.13
15:11
разбивать не надо по материалам, нужны только итоги по документу и по поставщикам, делал с функцией Максимум(СуммаОплаты) , но по документу нормуль а по поставщику нет.
13 sergeytorop
 
26.11.13
15:16
попробую два набора
14 Necessitudo
 
26.11.13
15:18
(13) Два набора или функция ВычислитьВыражениеСГруппировкойМассив().
15 Aprobator
 
26.11.13
15:20
два набора в топку - однозначно. Открываем справку в конфигураторе и там находим описание выражений и функций СКД. Только именно справку, а не СП.
16 Aprobator
 
26.11.13
15:21
я ресурсами себе вообще нумерацию делал по типу 1 1.1 1.2 и т.д..
17 dj_serega
 
26.11.13
15:21
имхо, для этого случая лучше "ВычислитьВыражение". А поле в нужном месте выводить через "Ресурсы".
18 Necessitudo
 
26.11.13
15:22
(15) Новички обычно вешаются от конструкций, которые предполагает написание выражений. Два набора проще гораздо. Та и оптимальнее - ведь запрос он же наверняка писал к ТЧ документа, а реквизиты шапки получал через точку от ссылки. Сколько вложенных запросов получается?)
19 Aprobator
 
26.11.13
15:23
(17) упс, а почему оплату не вывести не как ресурс?
20 Aprobator
 
26.11.13
15:24
(19) можно тупо сказать СКД, что это реквизит документа. В Данных в Пути к Данным прописываешь как Документ.Оплата и все дела.
21 dj_serega
 
26.11.13
15:25
(19) я про оплату и говорю.
Её вывод в нужное поле через колонку "Ресурсы" "Расчитывать по...".
22 Aprobator
 
26.11.13
15:26
(21) он сейчас ее и сделал ресурсом. Но поскольку СуммаОплаты и так реквизит документа - зачем?
23 Aprobator
 
26.11.13
15:27
если только это для итогов ему надо.
24 dj_serega
 
26.11.13
15:31
(23) если я правильно понял, то ему так и нужно.
25 Aprobator
 
26.11.13
15:32
(24) больше похоже что ему тупо нужна общая сумма оплаты.
26 sergeytorop
 
26.11.13
15:33
нужна общая ,по поставщикам , и по документу
27 dj_serega
 
26.11.13
15:35
(26) У тебя есть отдельные данные по документам?
28 sergeytorop
 
26.11.13
15:38
в смысле??
29 dj_serega
 
26.11.13
15:41
(28) Вот сдесь http://infostart.ru/public/86764/ можешь почитать про ВЫЧИСЛИТЬВЫРАЖЕНИЕ().
С его помощью можно вывести ресурсы по группировкам. Тоесть по каждой группировке будет расчитан ресурс отдельно.
30 Aprobator
 
26.11.13
15:46
(29) порвало. Реально кто то скопипастил справку и добавил картинок.
31 Necessitudo
 
26.11.13
15:51
(30) Там в комментариях один чувак пишет - "мол тут нифига не сказано про ВычислитьВыражениеСГруппировкойМассив()!" - и дает ссылку на книжку, которая является сканом учебника Хрусталевой. Круг замкнулся)
32 sergeytorop
 
26.11.13
15:53
пробую Вычислитьвыражение ,пока неполучается..
33 dj_serega
 
26.11.13
15:57
(32) У меня вот так работает, правда с вызовом общего модуля:
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОбщийМодуль.ФункцияОбщегоМодуля(""Физлицо"", Период, ФизЛицо, &СписокКонтрагентов, &СписокФизлиц)","Физлицо").
Это для группировки "Физлицо".
Аналогично только с другими параметрами для "Контрагенты".
34 Necessitudo
 
26.11.13
16:05
(32) Тебе нужна ВычислитьВыражениеСГруппировкойМассив, говорили же.
35 sergeytorop
 
26.11.13
16:09
на вкладке ресурсы вставил функцию  ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОплаты)","Документ"))   результат
14 870,66; 3 454,44; 1 741,8; 11 952,42; 6 967,24

опять же все суммы удвоеные
36 sergeytorop
 
26.11.13
16:12
изменил  на ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаОплаты)","Документ"))   результат ок!! вопрос как теперь это в одночисло перевести

7 435,33; 3 454,44; 1 741,8; 5 976,21; 3 483,62
37 Necessitudo
 
26.11.13
16:12
(35) Максимум поставь.
38 Necessitudo
 
26.11.13
16:12
Одновременно)
39 sergeytorop
 
26.11.13
16:14
короче итоги тоже нормально ,только как этот массив обьединить теперь Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаОплаты)","Документ")) ) не прокатило
40 Aprobator
 
26.11.13
16:24
(39) Поставь в ресурсах рассчитывать По Общие Итоги. для этой формулы. А для той, что ты в (36) прописал - по всем остальным полям. В ресурсы одно и тоже поле можно добавлять несколько раз. Формулы расчета могут быть разные, главное чтобы поля расчета не пересекались.
41 Aprobator
 
26.11.13
16:25
+(40) а вообще - ты монстр. Я с этой гадостью куда дольше разбирался, а тут практически на ходу. Молодец.
42 Necessitudo
 
26.11.13
16:26
И учти, что если пишешь расчет итогов для вышестоящей группировки и ничего не пишешь для нижестоящей, то в ней рассчитывается все также как и в вышестоящей.
43 Necessitudo
 
26.11.13
16:26
(41) Потому что ему все сказали) Нам-то никто не говорил - вот и мучались)
44 sergeytorop
 
26.11.13
16:29
поставил по поставщику и по общим итогам все выводиться только в массиве ,пока ищу как его в число преобразовать..
45 Aprobator
 
26.11.13
16:30
как преобразовать ты написал в (39)
46 Aprobator
 
26.11.13
16:30
Только там для общего итога прокатит.
47 Aprobator
 
26.11.13
16:32
впрочем вру, там должно прокатить для всего, что выше документа находится.
48 sergeytorop
 
26.11.13
16:32
не катить, выводит массив((
49 Necessitudo
 
26.11.13
16:34
(48) Рассчитывай ресурс для уровня "Документ" -  там поставь функцию "Максимум("СуммаОплаты"). Дальше для уровня "Поставщик" пиши вот это - Сумма(ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОплаты)","Документ")) )
50 sergeytorop
 
26.11.13
16:35
так и зделал, не катит
51 sergeytorop
 
26.11.13
16:36
есть
52 Necessitudo
 
26.11.13
16:36
А Среднее? Максимум? Вообще никакие агрегатные функции для массива не отрабатывают?
53 sergeytorop
 
26.11.13
16:37
просто первый раз наверно не правильно написал
54 Aprobator
 
26.11.13
16:37
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаОплаты)","Документ")) ) - так массив выводит? Не ВЕРЮ!
55 sergeytorop
 
26.11.13
16:37
не поставил скобу наверно,
56 Necessitudo
 
26.11.13
16:38
Наконец на мисте есть тема, в которой обсосано использование функции ВычислитьВыражениеСГруппировкойМассив())
57 Aprobator
 
26.11.13
16:38
(в (54)  последняя скобка - лишняя
58 sergeytorop
 
26.11.13
16:38
выводит выводит, спасибо. Всем спасибо!! Дай вам Бог))))
59 Aprobator
 
26.11.13
16:39
(58) удачи! Здесь так далеко не всем помогают ) Зависит от помогающих, но большей частью от самого ТС.