Имя: Пароль:
1C
1С v8
Программный вывод СКД в ПТД
0 Лалалалилалалала
 
02.07.12
15:25
Помогите, плиз..
Есть отчётик скдшный в конфе
Я создаю его экземляр, задаю параметры, и нужно вывести его в поле табличного документа
Вот как вывести? Нужно, вроде, исполнить, и потом вывести....
Простите за нехватку знаний..
1 Пеппи
 
02.07.12
15:28
Нажми букву Я справа от темы. Эх молодежь. )
2 Лалалалилалалала
 
02.07.12
15:36
(1) спасибо
но вот другая незадача
Вообще есть обработчик при активизации строки, откуда вызывается серверная процедура (как известно, разработчики платформы рекомендуют избегать вызова серверных процедура из этого обработчика, ибо глюков там немерено)
эта серверная процедура создаёт СКД и выводит его в ПТД

при исполнении участка

ПроцессорВывода.УстановитьДокумент(Результат)

где Результат это ПолеФормы вида ПолеТабличногоДокумента
происходит повторный вызов серверной процедуры
в результате стек уходит в небо и 1ска рвёт отношения с пользователем
обычно такое бывает, когда в серверной процедуре какая-то ошибка
например, неправильный запрос
3 Trance_1C
 
02.07.12
15:40
(2) лучше сначала вывести в пустую таблицу значений, а затем загрузить на форму.
4 Лалалалилалалала
 
02.07.12
15:40
а, всё понятно, надо связывать не с полем формы, а с реквизитом формы

   СхемаКомпоновкиДанных = Документы.ЗаказПокупателя.ПолучитьМакет("ПодчиненныеДокументы");
   СхемаКомпоновкиДанных.Параметры.Заказ.Значение = Элементы.Список.ТекущаяСтрока;

   //Из схемы возьмем настройки по умолчанию
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   
   //Помещаем в переменную данные о расшифровке данных
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   
   //Формируем макет, с помощью компоновщика макета
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   //Передаем в макет компоновки схему, настройки и данные расшифровки
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
   
   //Выполним компоновку с помощью процессора компоновки
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
   
   //Выводим результат в табличный документ
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ТабДок);
   
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
5 Лалалалилалалала
 
02.07.12
15:43
вау, теперь другая жесть
при двойном щелчке на ячейках этого ПТД вместо ожидаемой расшифровки выходит мини-окно с двумерным индексом ячейки в документе
тупость какая-то
по ходу, надо завязывать с этим и ориентироваться на обычную таблицу значений
6 Лалалалилалалала
 
02.07.12
16:23
&НаКлиенте
Процедура ТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресДанныеРасшифровки);
   ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД));
   ЭлементыРасшифровкиДанных = ДанныеРасшифровки.Элементы[Расшифровка];
   ЭлементыРасшифровкиДанныхПоля = ЭлементыРасшифровкиДанных.ПолучитьПоля()[0];
   ОбработкаРасшифровки.ОткрытьЗначение(ЭлементыРасшифровкиДанных.Идентификатор, Новый ПолеКомпоновкиДанных(ЭлементыРасшифровкиДанныхПоля.Поле));
КонецПроцедуры

АдресДанныеРасшифровки и АдресСКД - реквизиты формы
это жесть