|   |   | 
| 
 | Итоги в СКД . Вопрос | ☑ | ||
|---|---|---|---|---|
| 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) удачи! Здесь так далеко не всем помогают ) Зависит от помогающих, но большей частью от самого ТС.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |