Имя: Пароль:
1C
1С v8
Итоги по иерархии
,
0 Kleopatra2803
 
12.02.15
09:06
Добрый день!
Передаю в скд в набор данных объект таблицу значений вида номенклатура - период - расход. в скд на закладке вычисляемые поля рассчитываю поле дефицит. при выводе данные считаются правильно...
но! мне нужно номенклатуру выводить в иерархии. Для этого в группировке задаю номенклатура(иерархия). В результате итоги по иерархии считаются неправильно.
Думаю, что можно сделать через ресурсы с использованием вычислитьвыражение, но пока не получается. Помогите, пожалуйста, разобраться

Скриншот:
https://yadi.sk/i/Xt3mOUdBecrQE
1 rabbidX
 
12.02.15
09:11
Попробуйте через рассчитывать по .. Номенклатура Иерархия в ресурсах.
2 Kleopatra2803
 
12.02.15
09:12
(1) пыталась - не помогает
3 Kleopatra2803
 
12.02.15
09:15
Возможно проблема в том, что в скд я передаю таблицу значений с периодом, а когда достаются группировки - я так думаю, что он наверное считает этот период пустым. потом в скд информация у меня выводится по периодам
4 Kleopatra2803
 
12.02.15
09:31
не могу до конца разобраться, как работают вычисляемые поля. чувствую, что через них надо делать, но не получается верное количество. вообще непонятно, как количество для группировок считается.
5 Alexaha
 
12.02.15
09:58
(4) не уверен но может быть это поможет
если у тебя ресурс - вычисляемое поле, то попробуй через "рассчитать по", но! используй не агрегатную функцию а подредактированную формулу самого  вычиляемого поля
например (упрощенно) формула вп А/Б
тогда в рассчитать по будет Сумма(А) / Сумма(Б)
6 Kleopatra2803
 
12.02.15
12:39
(5) так, как вы предложили - не помогло. Решила попробовать работать с таблицей "извращенным" способом.

Заметила, что для колонки расход - расход нарастающий по группировкам номенклатуры считается правильно. остальные поля вычисляемые. Поэтому возникло предположение, что если колонки вычисляемые я передам, как уже готовые, то в группировках сумма тоже будет считаться верно.

Для этого результат, полученный в скд, я выгрузила в таблицу значений (соответственно группировок там быть не должно, а могут быть только детальные записи). Потом хочу эту таблицу значений передать в новую схему компоновки данных.

Заметила, что когда ту же самую таблицу вывожу без группировок, только по детальным записям, то нарастающий итог перестает считаться, хотя с группировками все хорошо считается.

Есть вообще возможность рассчитать нарастающий итог через ВычислитьВыражение не по группировкам, а по детальным записям? Или ВычислитьВыражение работает только для группировок?

Сейчас код для нарастающего расхода такой:
ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая")
7 Alexaha
 
12.02.15
12:42
(6) можно формулу вычисляемого поля?
8 Kleopatra2803
 
12.02.15
12:44
(7) ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая")
9 Kleopatra2803
 
12.02.15
12:51
(7) хотя вообще-то правильно, что он не считает нарастающий итог. я же указала там считать по периоду. Он по идее должен считать по номенклатуре и по периоду наверно. В общем я запуталась окончательно)
10 Alexaha
 
12.02.15
13:01
(9) а порядок группировок как заголовке темы?
11 Kleopatra2803
 
12.02.15
13:05
(10) Таблица:
Строки Материал - Материал.Артикул - Остаток - ЦенаЗакупа
Колонки: Период
Остальные поля в ресурсах
12 Kleopatra2803
 
12.02.15
13:06
(10) а если тот вариант попробовать, который вы предлагали с суммами, как мое вычисляемое поле просуммировать, если оно имеет такой вид:

Выбор Когда Расход > ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая")  - Остаток - ВычислитьВыражение("Сумма(Заказано)","Период","Группировка","Первая","Текущая") Тогда ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая")  - Остаток - ВычислитьВыражение("Сумма(Заказано)","Период","Группировка","Первая","Текущая") Иначе Расход Конец
13 Kleopatra2803
 
12.02.15
13:08
я пыталась там суммы ставить после "тогда", а внутрь вычисляемые выражения засовывать. и еще последнее поле Расход в сумму
14 Kleopatra2803
 
12.02.15
13:10
в общем вот так:
Выбор Когда Расход > ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая")  - Остаток - ВычислитьВыражение("Сумма(Заказано)","Период","Группировка","Первая","Текущая") Тогда Сумма(ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая"))  - Сумма(Остаток) - Сумма(ВычислитьВыражение("Сумма(Заказано)","Период","Группировка","Первая","Текущая")) Иначе Сумма(Расход) Конец
15 Kleopatra2803
 
12.02.15
13:10
может я что-то не так делаю
16 Kleopatra2803
 
12.02.15
13:12
(11) а нет, я наврала там
Таблица:
Строки Материал(иерархия) - Материал.Артикул - Остаток - ЦенаЗакупа
Колонки: Период
Остальные поля в ресурсах
17 Alexaha
 
12.02.15
13:15
(13) сделал простейший вариант, группировки Номенкатура (иерархия) - период
внутри иерархии итог нормально, в самих группах итог получается как итог предыдущей группы + нарастающий итог текущей
т.е примерно так (период не указываю):
Номенклатура    количество   нараст итог
Группа1            20            20
   товар1          15            15
   товар2           5            20
группа2            15            35
   товар3          10            10
   товар4           5            15
18 Kleopatra2803
 
12.02.15
13:23
(17) проблема в том, что для колонки расход, которая у меня задана на входе, в группировках все хорошо считается, и для колонки расход нарастающий тоже все правильно. количество в группах едет на колонке дефицит, которая рассчитывается с помощью вычисляемого выражения.

для сравнения:

расход нарастающий:

ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая")

дефицит:

Выбор Когда Расход > ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая")  - Остаток - ВычислитьВыражение("Сумма(Заказано)","Период","Группировка","Первая","Текущая") Тогда ВычислитьВыражение("Сумма(Расход)","Период","Группировка","Первая","Текущая")  - Остаток - Заказано Иначе Расход Конец

боюсь, что проблема и правда в том, что программа не может рассчитать сумму для такого большого вычисляемого поля
19 Alexaha
 
12.02.15
13:32
(18) я правильно понимаю формулу дефицита?
расход - НИ расход - Остаток - НИ заказ
20 Kleopatra2803
 
12.02.15
13:45
(19) не совсем. Пока без заказано посчитаем. У них пока 0 заказы

НИРасход - Остаток, а если расход < НИРасход - Остаток, то расход
21 Kleopatra2803
 
12.02.15
14:08
(19) а можешь по тим вьюеру посмотреть? может так, что-нибудь заметишь?
22 Kleopatra2803
 
12.02.15
14:32
Помогите, пожалуйста. Может еще какие-нибудь идеи есть. а то второй день сижу с отчетом, а проблема только в группировках
23 Kleopatra2803
 
12.02.15
14:35
на текущий момент добавила дефицит в вычисляемое поле(пустое). в ресурсах считаю сумму через вычислитьвыражение и делаю рассчитывать по материалам. по материалам рассчитывает правильно, в группировках номенклатуры пусто. если добавляю рассчитывать по материалам и по материалам иерархии, то по материалам считает правильно, а в группировке суммы неверные.
24 Alexaha
 
12.02.15
14:37
(22) у меня есть подозрение, что проблема во вложенности вычисления НИ, т.е при вычислении дефицита для отдельновзятой строки используется НИ, и сам дефицит мы хотим получить как НИ

может попробовать сделать два прохода?
1. вычилить Деф для каждой строки, выгрузить в ТЗ
2. обработать ТЗ, получив НИ деф

еще можно попробовать использовать ТипРасчета - Иерархия
25 Kleopatra2803
 
12.02.15
14:41
(24) "еще можно попробовать использовать ТипРасчета - Иерархия"

это где такое можно найти?
26 Alexaha
 
12.02.15
14:44
(25) ТипРасчета. Тип Строка.

Если параметр имеет значение "Иерархия", то выражение нужно вычислять для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется. Компоновщик макета при генерации выражения для поля "% в группе иерархии" генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления "Иерархия".
27 Alexaha
 
12.02.15
14:44
во строенной справке есть полное описание функции ВычислитьВыражение
28 Alexaha
 
12.02.15
14:59
(25) попробуй эту формулу
вставлять ее на закладке ресурсы
на закладке вычисляемые поля только наименование

Выбор Когда Сумма(Расход) < ВычислитьВыражение("Сумма(Расход)", , , "Первая", "Текущая") - Сумма(Остаток)
    Тогда ВычислитьВыражение("Сумма(Расход)", , , "Первая", "Текущая")
Иначе
    ВычислитьВыражение("Сумма(Расход)", , , "Первая", "Текущая")  - Сумма(Остаток)
Конец
29 Kleopatra2803
 
12.02.15
15:00
(26) это как-то так? Сумма(ВычислитьВыражение("Сумма(Расход)","Период","Иерархия","Первая","Текущая"))  - Сумма(Остаток)

а как параметр передать, не совсем понимаю
30 Kleopatra2803
 
12.02.15
15:03
(28) рассчитывать по номенклатуре и номенклатуре.иерархии? или вообще это поле не заполнять?
31 Alexaha
 
12.02.15
15:04
(30) вот как написал так и попробуй, у меня что то похожее на истину получилось (ну в моем понимании) :)
32 Alexaha
 
12.02.15
15:06
по номелкатуре у меня одна группировка с типом иерархии Иерархия
33 Kleopatra2803
 
12.02.15
15:07
(31) в вычисляемых полях дефицит пусто или номенклатура?
34 Kleopatra2803
 
12.02.15
15:12
(31) я справшиваю, потому что у меня не получается. очень близко результат, но не тот
35 Alexaha
 
12.02.15
15:20
(33)  тлько путь к данным и заголовок, выражение пустое
36 Alexaha
 
12.02.15
16:49
ап
37 Kleopatra2803
 
12.02.15
16:58
(36) все, я сделала, но по-другому. домой приду, напишу, как
38 Kleopatra2803
 
12.02.15
18:39
(36) В общем ничего не получилось с ресурсами. Числа очень близко получались, но не те все равно. Сделала все, как ты сказал.
В результате не нашла более лучшего варианта, как сформировать нарастающие итоги заранее в таблице значений (т.е. бегала в цикле по таблице, которая задана на входе до передачи ее в скд и добавляла к ней дополнительные колонки, которые как раз и заполняла в цикле). затем передала готовую таблицу значений в скд и вывела результаты.

Спасибо тебе огромное за помощь!
39 Alexaha
 
13.02.15
09:20
(38) понятно, не стала пробовать с двумя схемами СКД?
благодарить не за что, в сухом остатке я ничем не помог :)
40 Kleopatra2803
 
17.02.15
10:24
(39) С двумя схемами СКД не получилось бы, потому что накопительный итог через ВычислитьВыражение() считается только внутри группировок. У меня была настройка таблица, а ее нельзя выгрузить в таблицу и загрузить снова в СКД. Только детальные записи или примитивные группировки можно. А если поставит в настройки только группировку без таблицы, то накопительный итог считается по номенклатуре, а мне нужно, чтоб считался по периоду
41 Alexaha
 
17.02.15
10:30
(40) а может тебе поможет ВычислитьВыражениеСГруппировкойМассив?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.