|   |   | 
| 
 | v7: Выполнение рачетов в запросе. | ☑ | ||
|---|---|---|---|---|
| 0
    
        exec11 15.04.21✎ 13:21 | 
        Сейчас у меня отчет выглядит не по человечески. Сначало идет детализация, потом итоговая строка для групп. В ней суммирование, оно делается в коде ручками.
 Хочется привести к человеческому виду. То есть на оборот. Строка с сумирование по группе. Посути текущая стоимость товара в группе. Потом детализация. И так. Есть регистр по партиям товаров. Он участвует в запрос. Код не привожу, там много лишнего. Вопрос пока узкий. Нужно. Получить стоимость группы товаров по текущей (прайсовой) цене. Сделать это надо в запросе. В коде сейчас я это делаю так: |Функция КонКол=КонОст(ЗапОстаток); СуммОбщий = СуммОбщий + Запрос.ЗапНоменклатура.Цена.Получить(РабочаяДата()) * Запрос.КонКол Была смелая мысль в запрос добавить: |Функция СумДок=Сумма(ЗапНоменклатура.Цена.Получить(РабочаяДата()) * КонКол); но она провлилась. Не нравится КонКол, хотя он стоит чуть выше в запросе. Может что почитать по функция подскажите.. в интернете пока что то не находится интересное .. | |||
| 1
    
        Builder 15.04.21✎ 13:35 | 
        Получить() в запросе не надо, он возьмет значение на последнюю дату периода в запросе.
 Ну и вот как то так работало вроде: |Функция СумДок=Сумма(ЗапНоменклатура.Цена * Запрос.КонКол ); | |||
| 2
    
        Mikeware 15.04.21✎ 13:38 | 
        для реализации таких "смелых мыслей" лучше использовать прямые запросы.     | |||
| 3
    
        Builder 15.04.21✎ 13:40 | 
        + к(1) Еще при такой записи был прикол с округлением.     | |||
| 4
    
        2S 15.04.21✎ 13:45 | 
        А свою функцию чего не описать?     | |||
| 5
    
        GreyK 15.04.21✎ 13:46 | 
        Можно и так:
 //_____________________________________________________________________________ Функция ПолучитьКолКуплено(Товар,ТекущийДокумент) Перем ТСтрока; Себестоимость=0; Если ТаблДвижений.НайтиЗначение(Товар,ТСтрока,"Товар")=1 Тогда Расходы=ТаблДвижений.ПолучитьЗначение(ТСтрока,"Расходы"); ТСтрока=0; Если Расходы.НайтиЗначение(ТекущийДокумент,ТСтрока,"Документ")=1 Тогда Себестоимость=Расходы.ПолучитьЗначение(ТСтрока,"СуммаКуплено"); Расходы.УстановитьЗначение(ТСтрока,"СуммаКуплено",0); КолКуплено=Расходы.ПолучитьЗначение(ТСтрока,"КолКуплено"); Расходы.УстановитьЗначение(ТСтрока,"КолКуплено",0); Возврат КолКуплено; КонецЕсли; КонецЕсли; Возврат 0; КонецФункции //ПолучитьКолКуплено //_____________________________________________________________________________ Функция ПолучитьСебестоимость() Возврат Себестоимость; КонецФункции //ПолучитьСебестоимость ..... |Функция КолКуплено = Сумма(Количество-Количество+ПолучитьКолКуплено(Товар,ТекущийДокумент)); |Функция СуммаКуплено = Сумма(Сумма-Сумма+ПолучитьСебестоимость());"; | |||
| 6
    
        DimVad 15.04.21✎ 13:46 | 
        "Строка с сумирование по группе. Посути текущая стоимость товара в группе. Потом детализация. "
 Ну если суммирование делается в коде ручками то можно сделать в коде расчеты (первый проход), вывести заголовок а потом - расшифровку (второй проход). Можно данные из запроса брать в таблицу значений тогда всё будет легко с группировками. Ну а можно всё это "рукапашество" попробовать заменить на отчёт на СКД, там разные интересные функции есть... | |||
| 7
    
        DimVad 15.04.21✎ 13:47 | 
        Тьфу, не посмотрел что это про клюшки. Простите пожалуйста...     | |||
| 8
    
        Builder 15.04.21✎ 13:48 | 
        (6) СКД на клюшках - это сильно :) 
 Такие отчеты проще делать на ИндексированнойТаблице | |||
| 9
    
        Mikeware 15.04.21✎ 13:49 | 
        (7) первая часть как раз легко реализуется и на клюшках тоже.  
 А индексированнаяТаблица заменить СКД во многих случаях. | |||
| 10
    
        Mikeware 15.04.21✎ 13:50 | 
        (8) ну пытался же кто-то сделать нечто подобное...
 году в 2007-2008. | |||
| 11
    
        DimVad 15.04.21✎ 13:52 | 
        (9) Да, в первой части я имел в виду таблицу с индексами (это в терминах снеговика). Выгрузил все данные из запроса, добавил нужные индексы, и поехало - вот такие группы, вот отбор по группам...     | |||
| 12
    
        Mikeware 15.04.21✎ 13:55 | 
        (11) с индексированнойТаблицей  примерно так же - Сгруппировать, выражения группировки ему, и выражения суммирования - на выходе получаешь по сути дерево готовое, его и выводишь - хоть рекурсивно, хоть вручную. для ускорения можно и индексов накинуть     | |||
| 13
    
        exec11 15.04.21✎ 14:12 | 
        (1) Ошибка:
 |Функция КонКол=КонОст(ЗапОстаток); |Функция СумДок=Сумма(ЗапНоменклатура.Цена * КонКол); КОНКОЛ<<?>> Переменная не определена (КОНКОЛ) Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {Отчет.ПоГруппам1.Форма.Модуль(36)}: Функция СумДок=Сумма(ЗапНоменклатура.Цена * КонКол <<?>> ); Запрос[12] : Ошибка в выражении 'КонКол' | |||
| 14
    
        Builder 15.04.21✎ 14:31 | 
        (13) Даже скопипастить сложно? Или посмотреть внимательно что в (1) написано.
 * Запрос.КонКол | |||
| 15
    
        Злопчинский 15.04.21✎ 14:56 | 
        "Строка с сумирование по группе. По сути текущая стоимость товара в группе. Потом детализация."
 навоз-вопрос, все делается штатно, например таким извратом типа как в (6) - выводишь строку-группу, итог = пусто. запоминаешь адрес. - выводишь детализацию. считаешь итог. - закончилась детализация - получаешь ячейку отчета по замомненному адресу - в свойство Текст пишешь итог | |||
| 16
    
        Mikeware 15.04.21✎ 14:59 | 
        (15) но ведь приятно, когда ИТЗ сделает это вместо тебя, не правда ли?     | |||
| 17
    
        Злопчинский 15.04.21✎ 15:09 | 
        (16) а то!
 одно бесит! плюсик как модификатор сортировки - похерили в ИТЗ, только "-" оставили... неудобно иногда | |||
| 18
    
        Злопчинский 15.04.21✎ 15:10 | 
        (16) если бы еще ИТЗ так работала когда поменял в Тзпотомок колонку числовую суммировочную - на родительском уровне - оно само скорректировалось в итоговом значении...
 а то приходится извращаться... | |||
| 19
    
        Cthulhu 15.04.21✎ 15:11 | 
        (16): если ради только этого добавлять 1спп - то неправда.     | |||
| 20
    
        Злопчинский 15.04.21✎ 15:12 | 
        (19) ну, можно еще выполняемым модулем генерить исключения вменяемо     | |||
| 21
    
        Cthulhu 15.04.21✎ 15:14 | 
        (20): а еще можно собаку завести...     | |||
| 22
    
        exec11 15.04.21✎ 15:17 | 
        (13) Моя не внимательность. Каюсь. Все получилось.
 Теперь для расчета в в процентах от общий стоимости по группам, нужно все просумировать. Добавляем еще одну строку : |Функция КонКол=КонОст(ЗапОстаток); |Функция СумДок=Сумма(ЗапНоменклатура.Цена * Запрос.КонКол); |Функция СумОбщая=Сумма(Запрос.СумДок); Вроде логичо. Но не получилось. СумДок и СумОбщая оказались равными. Накопления не происходит. Почему ? (15) - закончилась детализация - получаешь ячейку отчета по замомненному адресу - в свойство Текст пишешь итог Интересненько, это как ? По сути то что надо. А можно как то по подробней ? Или где почитать ?? | |||
| 23
    
        Mikeware 15.04.21✎ 15:23 | 
        (19) 1спп и формекс уже давно входят в джентльменский набор  джентльменов-клюшечников.
 (21) зачем тебе заводная собака? | |||
| 24
    
        Mikeware 15.04.21✎ 15:23 | 
        (22) Область(запомненыйАдрес).Текст=формат(Итог)     | |||
| 25
    
        Злопчинский 15.04.21✎ 15:35 | 
        (22) "Вроде логичо. Но не получилось. СумДок и СумОбщая оказались равными. Накопления не происходит. Почему ?"
 потому что это сущности одного уровня иерархии. паралельно считаются, друг от друга ника кне зависятю | |||
| 26
    
        exec11 15.04.21✎ 16:31 | 
        (25) Как накопить в запросе сумму всех СумДок ?  Ни как ?
 (24) Спасибо, буду изучать ! | |||
| 27
    
        ADirks 16.04.21✎ 06:47 | 
        (26) можешь ещё тут поизучать https://infostart.ru/public/15510/     | |||
| 28
    
        Злопчинский 16.04.21✎ 09:36 | 
        (26) Группировкой в запросе, ясен пень.
 Сделай искуственную группировку, на самом верхнем уровне, на этой группировке будет сумма всех сумм | |||
| 29
    
        Arbuz 16.04.21✎ 16:27 | 
        (16) Ещё приятнее когда это делают оконные функции SQL     | |||
| 30
    
        Злопчинский 16.04.21✎ 21:22 | 
        (29) отсыпьте мне...     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |