Имя: Пароль:
1C
1C 7.7
v7: Помогите с примерами по работе с Индексированной таблицей
,
0 Volodja
 
08.04.21
10:27
Запутался при использовании методов:
тмпДиаграмма - Индексированная таблица
тмпДиаграмма.ДобавитьИндекс("Точка","Точка");
тмпДиаграмма.УстановитьФильтр(ЗначениеОтбораДиаграммы,ЗначениеОтбораДиаграммы,"Точка");
тмпДиаграмма.Свернуть("Дата","наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня","Точка");

У меня программа ушла в космос на Свернуть()
Нужно чтобы на выходе получилась свернутая таблица по дате для заданной точки
1 Ёпрст
 
08.04.21
10:52
2 Ёпрст
 
08.04.21
10:53
ИмяСуществующегоИндекса - тип: Стрка, Число. Если указано имя индекса, то КолонкиСвёртки игнорируются, а свёртка осуществляется по указанному индексу. В свёртке учавствуют только те строки, которые входят в фильтр.
3 Volodja
 
08.04.21
10:56
(2) А куда тогда Дата денется или что с ней будет? Мне нужно чтобы по дате колонки свернулись для заданной точки (ЗначениеОтбораДиаграммы)
4 Ёпрст
 
08.04.21
10:56
ну и вот это
наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня"," - всё числовые колонки, надеюсь ?
5 Volodja
 
08.04.21
10:57
(4) Да
6 Volodja
 
08.04.21
10:58
(1) *.als есть у меня.
Примеров нет.
7 Ёпрст
 
08.04.21
10:59
8 Volodja
 
08.04.21
11:03
Блин. Я думал, раз наложил фильтр, то и таблица видит только то, что мне нужно.
А в ней как-то заморочено. Проще запросом выбрать
9 Volodja
 
08.04.21
11:07
(3) сделал так:
тмпДиаграмма.Свернуть("","наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня","Точка");
тоже самое. В космосе.
10 Ёпрст
 
08.04.21
11:11
(9)
тмпДиаграмма.Свернуть("Дата","наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня");
11 Volodja
 
08.04.21
11:12
(10) пробовал. Тогда фильтр вообще не учитывается, как будто и не устанавливал
12 Volodja
 
08.04.21
11:15
(10) Виноват
тмпДиаграмма.ДобавитьИндекс("Точка","Точка");
тмпДиаграмма.УстановитьФильтр(ЗначениеОтбораДиаграммы,ЗначениеОтбораДиаграммы,"Точка");
тмпДиаграмма.Свернуть("Дата","наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня");
Тоже висит
13 Ёпрст
 
08.04.21
11:19
(11) короче, самое простое, это Группировать.. и имеешь свернутую как надо табличку со всеми показателями, потом уже на неё или фильтр, или найти строку по индексу.

Ну или ИтогПоУзлу использовать после поиска строки
14 Volodja
 
08.04.21
11:21
(10) снова виноват, не сохранил обработку
тмпДиаграмма.ДобавитьИндекс("Точка","Точка");
тмпДиаграмма.УстановитьФильтр(ЗначениеОтбораДиаграммы,ЗначениеОтбораДиаграммы,"Точка");
тмпДиаграмма.Свернуть("Дата","наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня");

Не висит,Но фильтр не накладывает
15 Volodja
 
08.04.21
11:22
Может 1С++ старый?
у меня 3.2.4.0 rc1
16 Volodja
 
08.04.21
11:23
от 18.03.2012
17 Ёпрст
 
08.04.21
11:25
Ну и е5сли хочешь свернутььб, то

<КолонкиСумм> из таблицы не удаляются. Свёртка возможна и по существующему индексу - при этом не теряется время на построение временного индекса, и возможна выборочная свёртка по текущему фильтру индекса.

Тебе нужно
ДобавитьИндекс("Вася","Точка,Дата");
УстановитьЗначениеФильтра...
Свернуть(,"твои числовые","Вася")
18 Volodja
 
08.04.21
11:26
(17) Ок. Попробую. Тоже предполагаю, что в индексе и фильтре дата нужна
19 Ёпрст
 
08.04.21
11:30
Или
Индекс по точке, ставишь фильтр и выгружаешь по этому фильтру в другую тз, и там сворачивыаешь.

Но проще - группировать
20 Ёпрст
 
08.04.21
11:30
и потом поиск в сгруппированной тз
21 Volodja
 
08.04.21
11:35
(20) так тоже висит:

        _СЗмин=СоздатьОбъект("СписокЗначений");
        _СЗмин.Установить("Точка",ЗначениеОтбораДиаграммы);
        _СЗмин.Установить("Дата",НачДата);
        
        _СЗмакс=СоздатьОбъект("СписокЗначений");
        _СЗмакс.Установить("Точка",ЗначениеОтбораДиаграммы);
        _СЗмакс.Установить("Дата",КонДата);
        
        тмпДиаграмма.ДобавитьИндекс("ТочкаДата","Точка,Дата");
        тмпДиаграмма.УстановитьФильтр(_СЗмин,_СЗмакс,"ТочкаДата");
        тмпДиаграмма.Свернуть(,"наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня","ТочкаДата");
22 Volodja
 
08.04.21
11:41
_СЗмин=СоздатьОбъект("СписокЗначений");
        _СЗмин.Установить("Точка",ЗначениеОтбораДиаграммы);
        _СЗмин.Установить("Дата",НачДата);
        
        _СЗмакс=СоздатьОбъект("СписокЗначений");
        _СЗмакс.Установить("Точка",ЗначениеОтбораДиаграммы);
        _СЗмакс.Установить("Дата",КонДата);
        
        тмпДиаграмма.ДобавитьИндекс("ТочкаДата","Точка,Дата");
        тмпДиаграмма.УстановитьФильтр(_СЗмин,_СЗмакс,"ТочкаДата");
        _тз=СоздатьОбъект("ТаблицаЗначений");
        тмпДиаграмма.Выгрузить(_тз);
        _тз.ВыбратьСтроку();
Так фильтр тоже не учелся при выгрузке
23 Volodja
 
08.04.21
11:43
Так сработало
тмпДиаграмма.Выгрузить(_тз,"ТочкаДата");
24 Ёпрст
 
08.04.21
11:46
(23) тут дату можешь не использовать в фильтре
25 Ёпрст
 
08.04.21
11:46
просто на точку.
26 Ёпрст
 
08.04.21
11:46
делай фильтр.
27 Ёпрст
 
08.04.21
11:46
Но проще, группировать - там имеешь всё стразу
28 Volodja
 
08.04.21
11:56
(27)
Так взлетело:
        тмпДиаграмма.ДобавитьИндекс("Точка","Точка");
        тмпДиаграмма.УстановитьФильтр(ЗначениеОтбораДиаграммы,ЗначениеОтбораДиаграммы,"Точка");
        _тз=СоздатьОбъект("ТаблицаЗначений");
        тмпДиаграмма.Выгрузить(_тз,"Точка");
        тмпДиаграмма=_тз; //подменяем ссылку
        тмпДиаграмма.Свернуть("Дата","наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня");
Пришлось выгрузить
29 Ёпрст
 
08.04.21
12:09
(28) а че ты группировать не хочешь ? Для каждой точки выгружать потом - накладно
30 Volodja
 
08.04.21
12:12
(29) сойдет через выгрузить. По времени не критично. Менее секунды
31 Ёпрст
 
08.04.21
12:28
(30) не..это не наш метод :)
32 victuan1
 
08.04.21
17:23
(0) а вообще задача какая стоит?
Сделать выбор типа диаграммы Диаграммы ?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший