Имя: Пароль:
1C
1С v8
Общие итоги для вычисляемых полей в СКД
,
0 sonGodv
 
06.05.15
12:04
Коллеги, помогите пожалуйста решит задачу с общими итогами в СКД
Сделал в отчете вычисляемые поля, поля считаются нормально, а вот общие итоги по ним никак.
Какие-то средние значения выходят
Пробовал разные способы, может какой-то не довел до конца.
1 zenik
 
06.05.15
12:23
мало информации...
2 1976vas
 
06.05.15
12:27
(0) А в ресурсы их засунул?
3 sonGodv
 
06.05.15
12:41
(2) Поле рассчитывается так
ПФРОборот*(Начислено/ Вычислить("Сумма(Начислено)", "Группировка","Группировка"))
В ресурсе указываю Сумма(ПФР)

Здесь картинки как-то цепляются или нет?
4 1976vas
 
06.05.15
12:50
(3) На любой фотохостинг заливаешь картинку и сюда ссылку. Покажи настройки отчета.
5 sonGodv
 
06.05.15
13:31
6 1976vas
 
06.05.15
13:56
(5) Никогда не сталкивался, интересная функция, а пробовал Общие итоги вместо группировка?
7 ЧеловекДуши
 
06.05.15
14:23
(0) Общих итогов может быть несколько по одному и тому же полю. Поиграйся галочкой в ресурсах "Рассчитать По..."

В одном случае ставишь "Все поля, кроме Итогов"
В другом, только Итог
8 sonGodv
 
06.05.15
14:43
(7) Да вроде пробовал
9 1976vas
 
06.05.15
15:51
(8) Попробуй ПФРОборот*(Начислено/ Вычислить("Сумма(Начислено)", "ОбщийИтог")) и рассчитывать по - Сотрудник.
10 sonGodv
 
07.05.15
08:54
(9) К сожалению не помогло
Если добавить в ресурсы, то получается по сотруднику итог не корректный - 10939
Если добавить в вычисляемые поля и затем в ресурсах рассчитать по сотруднику, то общий итог 94 121,22 распределяется на все строки
11 1976vas
 
07.05.15
09:00
(10) Блин, вряд ли кто в реале сталкивался с этой функцией, вчера просмотрел и видео Гилева и интернет прошарил, ничего внятного. Только пробовать различные комбинации, все равно должно получиться.
12 Kvant1C
 
07.05.15
09:04
(5) ПФРОборот и все остальное - что это? Откуда берется?
13 sonGodv
 
07.05.15
09:21
(12) Вот из этого запроса
ВЫБРАТЬ
    БУОсновныеНачисления.СубконтоКтНУ2,
    БУОсновныеНачисления.ВидРасчета,
    БУОсновныеНачисления.Результат,
    БУОсновныеНачисления.СчетДтНУ,
    БУОсновныеНачисления.СубконтоДтНУ1,
    БУОсновныеНачисления.СчетКтНУ,
    БУОсновныеНачисления.Сотрудник.Физлицо КАК Сотрудник
ПОМЕСТИТЬ ВТ_Начисления
ИЗ
    РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
ГДЕ
    БУОсновныеНачисления.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    БУДополнительныеНачисления.СубконтоКтНУ2,
    БУДополнительныеНачисления.ВидРасчета,
    БУДополнительныеНачисления.Результат,
    БУДополнительныеНачисления.СчетДтНУ,
    БУДополнительныеНачисления.СубконтоДтНУ1,
    БУДополнительныеНачисления.СчетКтНУ,
    БУДополнительныеНачисления.Сотрудник.Физлицо
ИЗ
    РегистрРасчета.БУДополнительныеНачисления КАК БУДополнительныеНачисления
ГДЕ
    БУДополнительныеНачисления.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СтраховыеВзносыИсчисленныеОбороты.ФССОборот КАК ФССОборот,
    СтраховыеВзносыИсчисленныеОбороты.ФФОМСОборот КАК ФФОМСОборот,
    СтраховыеВзносыИсчисленныеОбороты.ФССНесчастныеСлучаиОборот КАК ФССНесчастныеСлучаиОборот,
    СтраховыеВзносыИсчисленныеОбороты.ПФРПоСуммарномуТарифуОборот КАК ПФРПоСуммарномуТарифуОборот,
    СтраховыеВзносыИсчисленныеОбороты.ФизЛицо КАК Сотрудник,
    ВТ_Начисления.ВидРасчета,
    ВТ_Начисления.Результат,
    ВТ_Начисления.СубконтоДтНУ1,
    ВТ_Начисления.СубконтоКтНУ2,
    ВТ_Начисления.СчетДтНУ,
    ВТ_Начисления.СчетКтНУ,
    СтраховыеВзносыИсчисленныеОбороты.Регистратор,
    СтраховыеВзносыИсчисленныеОбороты.ПериодСекунда,
    СтраховыеВзносыИсчисленныеОбороты.ПериодДень
ИЗ
    РегистрНакопления.СтраховыеВзносыИсчисленные.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК СтраховыеВзносыИсчисленныеОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Начисления КАК ВТ_Начисления
        ПО СтраховыеВзносыИсчисленныеОбороты.ФизЛицо = ВТ_Начисления.Сотрудник
14 sonGodv
 
07.05.15
09:29
(11) Да, конечно. Поэтому и пробую разные варианты. Изучал типовые ошибки при расчете итогов. ПО книге Хрусталевой и на ИТС.
Пока не получилось
15 Kvant1C
 
07.05.15
09:32
(13) Ну и где у тебя ПФРОборот ?
16 sonGodv
 
07.05.15
09:37
(15) ПФРПоСуммарномуТарифуОборот в компоновке указываю Путь и автозаголовок как ПФРОброт
17 Kvant1C
 
07.05.15
09:40
(16) Ну а сам то запрос правильные данные возвращает?
18 1976vas
 
07.05.15
09:42
(17) Там все правильно, кроме общих итогов по вычисляемым полям.
19 sonGodv
 
07.05.15
09:43
(17) Да, но в запросе ничего не вычисляется. Смысл как-раз в том, чтобы посчитать сколько взносов падает на каждый вид выплаты
20 Kvant1C
 
07.05.15
09:44
(19) Начислено откуда берется?
21 sonGodv
 
07.05.15
09:46
(20) Из двух регистров расчета БУОсновныеНачисления.Результат и БУДополнительныеНачисления.Результат
22 sonGodv
 
07.05.15
09:47
Затем они объединяются в виртуальную таблицу - ВТ_Начисления.Результат
23 sonGodv
 
07.05.15
09:49
Я пробовал сделать два набора данных в компоновке. Результат такой-же
24 Kvant1C
 
07.05.15
09:54
А теперь открой секрет, что такое "Группировка" в Вычислить("Сумма(Начислено)", "Группировка","Группировка") ?
25 sonGodv
 
07.05.15
10:10
(24) Вычислить сумму Начислено по полю - Группировка в моем примере это Сотрудник
и выполнить это в пределах группировки.
Посмотри скрин там видно как это работает
Сам отчет - https://cloud.mail.ru/public/3kuHzGrSLPzG/2015-05-04_141321.png
26 Kvant1C
 
07.05.15
10:20
(25) Функция Вычислить предназначена для вычисления выражения в контексте некоторой группировки.

Синтаксис:

Вычислить(Выражение, Группировка, ТипРасчета)

Параметры:

Выражение. Тип Строка. Содержит вычисляемое выражение;
Группировка. Тип Строка. Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем. Например:
Сумма(Продажи.СуммаОборот) / Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")

В данном примере в результате получится отношение суммы по полю "Продажи.СуммаОборот" записи группировки к сумме того же поля во всей компоновке.

ТипРасчета. Тип Строка. В случае если данный параметр имеет значение "ОбщийИтог", выражение будет вычисляться для всех записей группировки. В случае если значение параметра "Группировка", значения будут вычисляться для текущей групповой записи группировки.


Где у тебя Группировка с именем "Группировка"?
27 1976vas
 
07.05.15
10:23
(26) Это стандартный параметр 1с, как ОбщийИтог
28 Kvant1C
 
07.05.15
10:26
(27) >>Группировка. Тип Строка. Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.

Ну и где твой стандартный параметр?
29 1976vas
 
07.05.15
10:28
(28) В справке нет, есть в гугле, но нашел только для ВычислитьВыражение() - их на самом деле около десятка.
30 1976vas
 
07.05.15
10:30
·        ОбщийИтог — выражение будет вычисляться для всех записей группировки.

·        Иерархия — выражение будет вычисляться для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется.

·        Группировка — выражение будет вычисляться для текущей групповой записи группировки.

·        ГруппировкаНеРесурса — при вычисление функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки.
31 1976vas
 
07.05.15
10:31
(29) Ну, чуть меньше )
32 ИС-2
 
naïve
07.05.15
10:33
если в ресурсе указать сумма(ПФРОборот*(Начислено/ Вычислить("Сумма(Начислено)", "Группировка","Группировка")) )
33 1976vas
 
07.05.15
10:33
а вообще вру, это для третьего параметра, про второй этого не сказано.
34 sonGodv
 
07.05.15
15:31
(28) Я указывал, вместо второго параметра "Группировка", "Сотрудник", предварительно установил имя для группировки в настройках, результат тот же.
Вычислить("Сумма(Начислено)", ,"Группировка") = если так, результат не меняется
Вычислить("Сумма(Начислено)", "Группировка",) = результат равен Сумма(Начислено)
35 Kvant1C
 
07.05.15
15:40
(34) А если так Вычислить("Сумма(Начислено)","","Группировка")
36 sonGodv
 
07.05.15
16:12
Тогда
{Форма.Форма.Форма(409)}: Ошибка при вызове метода контекста (Следующий)
        ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Выражение не может быть вычислено "Сумма(НаборДанных1.Начислено),  "
37 DCKiller
 
08.05.15
07:54
Засунь вычисление этой хрени в текст запроса и не парься.
38 1976vas
 
08.05.15
07:59
(37) А нет же итогов в запросе в СКД?
39 DCKiller
 
08.05.15
08:01
(38) Я говорю, вот это всё - https://cloud.mail.ru/public/33Y9yF4JbNsw/2015-05-04_141455.png - пусть вычисляется в запросе.
40 1976vas
 
08.05.15
08:09
(39) Хорошо, спасибо, может ТС поможет.
41 sonGodv
 
08.05.15
08:22
(39) Да, думаю попробовать считать в запросе
42 ЧеловекДуши
 
08.05.15
08:26
(41) Выложи свой отчет. Дай народу посмотреть, что ты там не можешь.
Сдается мне, что ты вообще все делаешь не так :)
43 ЧеловекДуши
 
08.05.15
08:26
Можешь на яндекс диск или Майл Диск
44 wildwilduser
 
08.05.15
08:36
в ресурсах новая строка с ПФП
попробуй Расчитывать по поставить только ОбщийИтог
в Выражении
Сумма(ВычислитьВыражениеСГруппировкойМассив("Сумма(ПФР)",Сотрудник))
идея посчитать в массив суммы по группам Сотрудник потом этот массив сложить.
45 sonGodv
 
08.05.15
09:04
46 sonGodv
 
08.05.15
09:06
(44) Попробовал, так Сумма(ВычислитьВыражениеСГруппировкойМассив("Сумма(ПФР)","Сотрудник"))
Результат такой же получил
47 wildwilduser
 
08.05.15
09:31
(46)
в отдельную колонку результат от этого
ВычислитьВыражениеСГруппировкойМассив("Сумма(ПФР)",Сотрудник)
вывести, что получается?
48 sonGodv
 
08.05.15
09:43
(47) Как? В вычисляемых полях у нас нет Сумма(ПФР)
49 sonGodv
 
08.05.15
09:46
У меня вроде получается один способ.
В общий итог по полю ПФР подставить Сумма(ПФРОборот)
Ведь в результате Сумма(ПФР)=Сумма(ПФРОборот)