Имя: Пароль:
1C
1C 7.7
v7: Актуальность(1) снова
0 Медведик
 
13.12.12
11:31
Имеем процедуру, вызываемую из обработки проведения документа с передачей контекста:

Рег    = СоздатьОбъект("Регистры");
Если Конт.ИтогиАктуальны() = 0 Тогда
  Рег.ЗатратыНаПродукцию.ВременныйРасчет(1);
  Рег.Актуальность(1);
  Рег.РассчитатьРегистрыНа(Конт.ТекущийДокумент());
КонецЕсли;
Реги     = Рег.ЗатратыНаПродукцию;
ТО    = СоздатьОбъект("ТаблицаЗначений");

// Какие-то движения по регистру
Конт.Регистр.ЗатратыНаПродукцию.ДвижениеПриходВыполнить();

Реги.УстановитьЗначениеФильтра(ххх, ххх, 1);
Реги.ВыгрузитьИтоги(ТО, 1, 1);

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

Ткните носом, где косяк.

З.Ы. Пробовал делать расчет временных итогов "По", рассчитывал итоги системной командой, а не Рег.Рассчитать... - ничего не помогло.
1 Ёпрст
 
13.12.12
11:32
(0)
Рег.Актуальность(1);
устанавливать наадо за пределами условия на актуальность итогов
2 Медведик
 
13.12.12
11:39
(1)Сделал так:
Рег    = СоздатьОбъект("Регистры");
Рег.Актуальность(1);
Если Конт.ИтогиАктуальны() = 0 Тогда
Не помогло ((
3 viktor_vv
 
13.12.12
11:41
Может тут проблема еще

Реги.УстановитьЗначениеФильтра(ххх, ххх, 1);

Уверен, что есть по значениям фильтра данные?
4 Медведик
 
13.12.12
11:43
(2) Если выставить Актуальность(1) после расчета - тоже эффекта нет.
(3) Да, отчетом проверяю + глазами смотрю движения, сформированные документом. И да, фильтр накладывается после совершения этих движений.
5 viktor_vv
 
13.12.12
11:43
И че у тебя там в иксах этих.
6 Медведик
 
13.12.12
11:45
(5) накладываются три фильтра на измерения регистра.
ххх1 - имя измерения, ххх2 - значение фильтра, ага.
7 viktor_vv
 
13.12.12
11:47
(6) Да понятно, я про конкретные значения, может у тебя значение фильтра группа справочника, и с вариантом фильтра 1 оно понятно ничего не даст.
Вот и справшиваю.
8 Медведик
 
13.12.12
11:48
(7) Нет, там все ровно. Два фильтра - элементы (не группы) справочника, третий - числовое значение (0/1).
9 Ёпрст
 
13.12.12
11:52
(4) фильтр убери, для начала
10 Медведик
 
13.12.12
12:01
(9) Не совсем понял... Фильтр накладывается после проведения расчета, для выгрузки итогов по необходимой аналитике.

Без фильтра я получу опупенную таблицу, из которой придется перебором отыскивать нужные строки.
11 viktor_vv
 
13.12.12
12:02
(10) Так ты убери все фильтры, проверь, а потом поочереди добавляй фильтры, поймешь на каком тупит.
12 Ёпрст
 
13.12.12
12:03
(10) да блин, без фильтра выгрузи итоги и посмотри, что там есть, просто ТЗ.ВыбратьСтроку().
потом думай.
13 Медведик
 
13.12.12
12:03
(9) Провел эксперимент - без фильтров в таблицу попадают итоги НА момент начала проведения документа. Т.е. уже сделанные движения - не попадают независимо от фильтра.
14 Медведик
 
13.12.12
12:03
(11),(12) Не, коллеги, дело не в фильтре, к сожалению ((
15 Ёпрст
 
13.12.12
12:07
(13) попадают
16 Ёпрст
 
13.12.12
12:07
приведи весь код
17 Медведик
 
13.12.12
12:08
Проверка тэга
<CODE>gdfgfdf
</CODE>
18 Медведик
 
13.12.12
12:11
Коллеги, как корректно код под кат убрать?
19 viktor_vv
 
13.12.12
12:11
(13) А это заменил на ПО ?

Рег.РассчитатьРегистрыНа(Конт.ТекущийДокумент());
20 Медведик
 
13.12.12
12:12
(19) Пробовал и "На", и "По" - разницы нет ((
21 Ёпрст
 
13.12.12
12:14
(19) не надо этого делать
22 Ёпрст
 
13.12.12
12:14
больше кода.
23 Медведик
 
13.12.12
12:17
За результаты тестов приношу извинения, остались фильтры с другой ветки. Если ВСЕ фильтры убрать, то движения документа в итогах появляются.

Помогите понять, что не так может быть с кодом

Реги.УстановитьЗначениеФильтра("Продукция", тПрод, 1);
Реги.УстановитьЗначениеФильтра("ГП", 0, 1);
Реги.УстановитьЗначениеФильтра("Подразделение", тПодр, 1);

, где тПрод и тПодр - элементы справочников, по которым итоги есть!
24 viktor_vv
 
13.12.12
12:19
(23) Ну так убирай поочереди. Начни с "ГП".
25 Ёпрст
 
13.12.12
12:19
(23) в ГП точно числовой реквизит ?
И зачем такое нелепое измерение ?
26 viktor_vv
 
13.12.12
12:21
И это, а "ГП" это случаем не реквизит ?
27 Медведик
 
13.12.12
12:25
(24),(25) Костыль вместо булевого значения. Если по нему фильтр убираю, эффекта нет.

Мысль.
У меня цикл с наложением разных значений фильтра на одно измерение.

После выполнения

Реги.УстановитьЗначениеФильтра("Продукция", тПрод1, 1);
Реги.УстановитьЗначениеФильтра("Продукция", тПрод2, 1);

будут ли корректно отбираться итоги по тПрод2?
28 Ёпрст
 
13.12.12
12:36
(27) будут, в твоём случае, будет последний наложеный фильтр
29 Медведик
 
13.12.12
12:37
Поборол проблему.

После наложения фильтра по измерению и выгрузки итогов, принудительно снимаю наложенный фильтр - профит.

Если накладываю новый фильтр по тому же измерению без снятия предыдущего - они, видимо, накладываются по принципу "И", и я получаю "пустые итоги".
30 Медведик
 
13.12.12
12:39
(28) Нет, в (29) описал неочевидный рецепт победы. Нюанс клюшек ((

Вам,  Ёпрст4, и viktor_vv - спасибо большое!
31 Медведик
 
13.12.12
12:49
Иллюстрирую проблему для потомков )), т.к. сам я в поиске ее описание не нашел:
1) наложили фильтр по измерению "Номенклатура" со значением Х1, выгрузили итоги - все отлично;
2) НЕ сняли фильтр по измерению "Номенклатура";
3) наложили фильтр по измерению "Номенклатура" со значением Х2, выгрузили итоги - ПУСТО!