Имя: Пароль:
1C
1С v8
Работа с данными отчета
,
0 mr_Ale
 
05.03.13
12:16
Доброго всем дня. Прошу помощь в решении такой ситуации: отчет выводит данные - СКД, все как положено, Необходимо из выведенной инф-ии выбрать нужные строки ссылочного типа. В чем проблема: отчет выводит информацию в табличный документ, а там тип "строка". Пробовал через расшифровку- с одной записью получается, а вот если несколько нужно выбрать(например, колонку) то мой способ не подходит. Таким кодом достаю данные одного поля:


ИндексРасшифровки = Число(Элемент.ТекущаяОбласть.Расшифровка);    
ЭлементРасшифровкиДанных = ДанныеРасшифровки.Элементы[ИндексРасшифровки];
   ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0];
   
   Если ТипЗнч(ЭлементРасшифровкиДанныхПоля.Значение) = Тип("Нужный мне документ") Тогда
       
       СтандартнаяОбработка = Ложь;
       
       СписокДействий = Новый СписокЗначений;
       ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
       
       ОбработкаНажатияНужноеМнеДействие = Новый Действие("НужноеМнеДействие");
       
       СписокДействий.Добавить(ОбработкаНажатияНужноеМнеДействие, "Нужное Мне Действие");
       
Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка,ВыполненноеДействие , , СписокДействий);
       Если ВыполненноеДействие = ОбработкаНажатияНужноеМнеДействие Тогда
           ВотМояСсылка= ЭлементРасшифровкиДанныхПоля.Значение;

Как сделать для всей колонки, по которой нажимают???
1 palpetrovich
 
05.03.13
12:25
имхо, "Как сделать для всей колонки" - ставит в тупик всех присутсвующих ;)
2 mr_Ale
 
05.03.13
12:28
(1) =(
3 mr_Ale
 
05.03.13
12:29
Пытался сделать так:
           СписокДокументов = Новый Массив();            
           КоличествоКолонок = ЭлементыФормы.Результат.ШиринаТаблицы;              
           РасшифровкаПервогоЗначения = ИндексРасшифровки;
           РасшифровкаПоследнегоЗначения = ДанныеРасшифровки.Элементы.Количество();
           Пока РасшифровкаПервогоЗначения>=0 Цикл
               РасшифровкаПервогоЗначения = РасшифровкаПервогоЗначения-КоличествоКолонок;    
           КонецЦикла;
           РасшифровкаПервогоЗначения = РасшифровкаПервогоЗначения+КоличествоКолонок;
           Пока РасшифровкаПервогоЗначения<РасшифровкаПоследнегоЗначения Цикл                            
               ЭлементРасшифровкиДанных = ДанныеРасшифровки.Элементы[РасшифровкаПервогоЗначения];
               ЭлементРасшифровкиДанныхПоля = ЭлементРасшифровкиДанных.ПолучитьПоля()[0];
               СписокДокументов.Добавить(ЭлементРасшифровкиДанныхПоля.Значение);
               РасшифровкаПервогоЗначения = РасшифровкаПервогоЗначения+КоличествоКолонок;
           КонецЦикла;


Но расшифровка криво считает при разном наборе колонок...
4 palpetrovich
 
05.03.13
12:29
(2) не, ну правда, я к примеру  не понял ...картинку выложи что хочешь, что-ли
5 palpetrovich
 
05.03.13
12:31
+4 а то, мне лично кажется, что ты хочешь что-бы при "нажатии " на колонку у тебя открылись все стотыщдокуменов этой колонки :)
6 Галахад
 
гуру
05.03.13
12:34
По идее, делать расшифровку спискомзначений.
1 элемент - ИмяКолонки
2 элемент - Ссылка
7 mr_Ale
 
05.03.13
13:00
(5) Чтобы при нажатии все документы в колонке которые записались в массив.
8 mr_Ale
 
05.03.13
13:01
(6) Подробнее можно, пожалуйста.
9 palpetrovich
 
05.03.13
13:06
(7) ну дык, напрашивается цикл по строкам имхо
10 mr_Ale
 
05.03.13
13:08
То есть если 10 колонок и 100 строк, то необходимо брать 1000 полей и каждое просматривать? Больше никаких вариантов?
11 palpetrovich
 
05.03.13
13:41
(10) gjxrve-то мне кажется что задача надумана или ты не то  решаешь что действилеьно надо ...или не в том месте, к примеру - может надо на этапе формирования создать масиив (спиок, тз...)
12 palpetrovich
 
05.03.13
13:41
* gjxrve-то = почекму-то
13 mr_Ale
 
05.03.13
13:44
Изначально задача сложнее. остался последний этап, но тут то и попался камушек...
14 Classic
 
05.03.13
13:45
(13)
Ну реально непонятно, что ты хочешь сделать.
15 mr_Ale
 
05.03.13
13:48
Упрощу-есть отчет, сделанный на СКД. На обычной форме. На форму прикрепляю кнопку. Нужно нажимая на кнопку получить все ссылки на документХХХ , который выводится в отчете. Так понятнее?=)
16 palpetrovich
 
05.03.13
13:49
(15) все ссылки на ОДИН объект?
17 mr_Ale
 
05.03.13
13:51
Да.
18 palpetrovich
 
05.03.13
13:53
(17) ну дык, из СП-же:
СписокСсылок = НОВЫЙ Массив;
СписокСсылок.Добавить(ЭлементРасшифровкиДанныхПоля.Значение);
ТабСсылок = НайтиПоСсылкам(СписокСсылок);
...
19 mr_Ale
 
05.03.13
13:55
Тю блин-написал коряво. просто получить ссылки из отчета. колонки, допустим, регистратор.
20 mr_Ale
 
05.03.13
13:56
Пример, есть колонка регистратор- из нее нужно достать все ссылки и поместить их в массив..
21 mr_Ale
 
05.03.13
13:57
Снова непонятно?(((
22 Classic
 
05.03.13
14:22
(21)
При обходе СКД анализируй текущший Макет. Как правило он называется Макет2 для первой группировки, Макет3 - для второй и т.д. При совпадении макета - пихай в свой список
23 Classic
 
05.03.13
14:23
Заполняй при выводе отчета
24 mr_Ale
 
05.03.13
14:29
Да, спасибо. Именно так и начал делать.