|
Расшифровка СКД Управляемые Формы | ☑ | ||
---|---|---|---|---|
0
newbling
01.06.15
✎
09:18
|
Доброго времени суток.
Такая проблема. Программно формирую вывод отчёта с использованием СКД и не получается добавить расшифровку. Код: &НаКлиенте Процедура СформироватьНовый(Команда) СформироватьСервер(); КонецПроцедуры &НаСервере Процедура СформироватьСервер() ТабДок.Очистить(); ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ИнтересныеСобытияТЗ",ДанныеФормыВЗначение(ИнтересныеСобытияТЗ, Тип("ТаблицаЗначений"))); ВнешниеНаборыДанных.Вставить("ЗаказТоваров",ДанныеФормыВЗначение(ЗаказТоваров, Тип("ТаблицаЗначений"))); Объект = РеквизитФормыВЗначение("Отчет"); СхемаКомпоновкиДанных = Объект.ПОлучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = Объект.КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); // после выполнения ДанныеРасшифровки почему-то имеют тип Строка ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки); // естественно, ругается на несоответствие типов в данных расшифровки ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры |
|||
1
LordCMEPTb
01.06.15
✎
09:25
|
В управляемых формах нет отображения данных расшифровки. Может быть в этой строке должен храниться адрес временного хранилища, где эти данные живут.
К слову спросить, а почему не использовать стандартную процедуру "ПриКомпоновкеРезультата" объекта? |
|||
2
Defender aka LINN
01.06.15
✎
09:25
|
ПриКомпоновкеРезультата
|
|||
3
newbling
01.06.15
✎
09:41
|
хм, а как мне туда внешние наборы данных передать, они ж на форме живут.
|
|||
4
LordCMEPTb
01.06.15
✎
09:48
|
А сделать таблицы табличными частями и использовать их в модуле объекта не получится?
|
|||
5
newbling
01.06.15
✎
09:49
|
надо попробовать
|
|||
6
Defender aka LINN
01.06.15
✎
09:57
|
(3) они ж на форме живут
Угу. И передаешь ты их на клиенте, да? |
|||
7
newbling
01.06.15
✎
10:07
|
(6) Я их уже сделал табличными частями как посоветовал LordCMEPTb. Вроде как передаются. Теперь осталось как-то подсунуть документ результат который мне нужен - ТабДок.
|
|||
8
samozvanec
01.06.15
✎
10:12
|
я обычно кладу все во временное хранилище, где надо - получаю. в чем загвоздка?
|
|||
9
newbling
01.06.15
✎
10:17
|
Есть поле табличного документа на форме - ТабДок. Хочу в него вывести результат. Если пытаюсь вывести просто в ДокументРезультат, то ничего не выводится.
На данный момент вот такое состояние кода: СтандартнаяОбработка = Ложь; ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ИнтересныеСобытияТЗ",ИнтересныеСобытияТЗ); ВнешниеНаборыДанных.Вставить("ЗаказТоваров",ЗаказТоваров); СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); //ТабДок? ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
10
newbling
01.06.15
✎
10:21
|
это всё при компоновке результата.
Да, временное хранилище - хорошая идея для таблиц. |
|||
11
samozvanec
01.06.15
✎
10:23
|
(9) делаю похожим образом. после
мСхемаАдресВХ = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных , УникальныйИдентификатор); мРасшифровкаАдресВХ = ПоместитьВоВременноеХранилище(ДанныеРасшифровки , УникальныйИдентификатор); мВнешниеНаборыДанныхАдресВХ = ПоместитьВоВременноеХранилище(ВнешниеНаборыДанных , УникальныйИдентификатор); в обработке расшифровки Перем ВыполненноеДействие; Если НЕ ЗначениеЗаполнено(мРасшифровкаАдресВХ) Тогда Возврат; КонецЕсли; СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(мСхемаАдресВХ); ДанныеРасшифровки = ПолучитьИзВременногоХранилища(мРасшифровкаАдресВХ); ВнешниеНаборыДанных = ПолучитьИзВременногоХранилища(мВнешниеНаборыДанныхАдресВХ); СтандартнаяОбработка = Ложь; ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); ДоступныеДействия = Новый Массив; ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); ДополнительныеПунктыМеню = Новый СписокЗначений; ДополнительныеПунктыМеню.Добавить("Регистратор", "Расшифровка по регистратору"); Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия, ДополнительныеПунктыМеню); Если НЕ Настройки = Неопределено Тогда Иначе Если ВыполненноеДействие = "Регистратор" Тогда Настройки = ОбработкаРасшифровки.Расшифровать(Расшифровка, Новый ПолеКомпоновкиДанных("Регистратор")); ПараметрыОткрытия = Новый Структура("Схема, Настройки, Заголовок, ВнешниеНаборыДанных", СхемаКомпоновкиДанных, Настройки, "Расшифровка", ВнешниеНаборыДанных); ОткрытьФорму("ОбщаяФорма.ФормаПросмотраРасшифровкиОтчетовСКД", ПараметрыОткрытия, ЭтаФорма, ЭтаФорма); КонецЕсли; КонецЕсли; |
|||
12
newbling
01.06.15
✎
10:36
|
(11) я запутался. Т.е. это НЕ через процедуру модуля объекта ПриКомпоновкеРезультата, а просто на форме как у меня было в (0) ?
Просто, на данный момент в (9) вроде как расшифровка передаётся, но я не могу вывести результат, видимо потому что не могу задать ДокументРезультат который мне нужно. А нужно мне табличное поле на форме - ТабДок. |
|||
13
LordCMEPTb
01.06.15
✎
11:02
|
(11) А установлен признак, что ТабДок - это документ, в который нужно выводить данные?
В частности интересует свойство формы "РезультатОтчета" |
|||
14
LordCMEPTb
01.06.15
✎
11:04
|
Ну а если табличное поле какое-то другое (не назначенное по умолчанию), то можно вызывать метод "СкомпоноватьРезультат", в котором определять собственный табличный документ.
|
|||
15
samozvanec
01.06.15
✎
11:29
|
(12) нет. я передаю необходимые данные в общую форму, там вывожу в табдок. точно так же можешь вывести и в свой табдок на форме отчета. ты же при формировании заполняешь и настройки, и схему, и внешние наборы. этого достаточно для вывода в любой табдок. я использую общую форму, потому что она универсальная, там своя обработка расшифровки, примитивная.
(14) это вообще обработка у меня, нет такого метода там. я не пользуюсь стандартными фишками, если знаю, что большую их часть мне придется прописывать вручную, и, соответственно, обходить. |
|||
16
newbling
01.06.15
✎
11:33
|
(13) Вот в чём дело-то было! Спасибо большое! Ещё раз =)
|
|||
17
samozvanec
01.06.15
✎
11:36
|
(15) извиняюсь, конечно, за велосипед) но местами без них никак
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |