Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Помогите с примерами по работе с Индексированной таблицей

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

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

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

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

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

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

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

        _СЗмин=СоздатьОбъект("СписокЗначений");
        _СЗмин.Установить("Точка",ЗначениеОтбораДиаграммы);
        _СЗмин.Установить("Дата",НачДата);
        
        _СЗмакс=СоздатьОбъект("СписокЗначений");
        _СЗмакс.Установить("Точка",ЗначениеОтбораДиаграммы);
        _СЗмакс.Установить("Дата",КонДата);
        
        тмпДиаграмма.ДобавитьИндекс("ТочкаДата","Точка,Дата");
        тмпДиаграмма.УстановитьФильтр(_СЗмин,_СЗмакс,"ТочкаДата");
        тмпДиаграмма.Свернуть(,"наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня","ТочкаДата");
   Volodja
 
22 - 08.04.21 - 11:41
_СЗмин=СоздатьОбъект("СписокЗначений");
        _СЗмин.Установить("Точка",ЗначениеОтбораДиаграммы);
        _СЗмин.Установить("Дата",НачДата);
        
        _СЗмакс=СоздатьОбъект("СписокЗначений");
        _СЗмакс.Установить("Точка",ЗначениеОтбораДиаграммы);
        _СЗмакс.Установить("Дата",КонДата);
        
        тмпДиаграмма.ДобавитьИндекс("ТочкаДата","Точка,Дата");
        тмпДиаграмма.УстановитьФильтр(_СЗмин,_СЗмакс,"ТочкаДата");
        _тз=СоздатьОбъект("ТаблицаЗначений");
        тмпДиаграмма.Выгрузить(_тз);
        _тз.ВыбратьСтроку();
Так фильтр тоже не учелся при выгрузке
   Volodja
 
23 - 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
Но проще, группировать - там имеешь всё стразу
   Volodja
 
28 - 08.04.21 - 11:56
(27)
Так взлетело:
        тмпДиаграмма.ДобавитьИндекс("Точка","Точка");
        тмпДиаграмма.УстановитьФильтр(ЗначениеОтбораДиаграммы,ЗначениеОтбораДиаграммы,"Точка");
        _тз=СоздатьОбъект("ТаблицаЗначений");
        тмпДиаграмма.Выгрузить(_тз,"Точка");
        тмпДиаграмма=_тз;//подменяем ссылку

        тмпДиаграмма.Свернуть("Дата","наРукиЗалог,наРукиПереЗалог,Возвращено,Процент,Пеня");
Пришлось выгрузить
   Ёпрст
 
29 - 08.04.21 - 12:09
(28) а че ты группировать не хочешь ? Для каждой точки выгружать потом - накладно
   Volodja
 
30 - 08.04.21 - 12:12
(29) сойдет через выгрузить. По времени не критично. Менее секунды
 
 Рекламное место пустует
   Ёпрст
 
31 - 08.04.21 - 12:28
(30) не..это не наш метод :)
   victuan1
 
32 - 08.04.21 - 17:23
(0) а вообще задача какая стоит?
Сделать выбор типа диаграммы Диаграммы ?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.