Имя: Пароль:
1C
1С v8
V8: Отчет с СКД + тонкий клиент упр. приложения. Ошибка передачи расшифровки.
,
0 DUDE
 
17.08.15
00:04
Доброй ночи, коллеги.

Есть такой вопрос по управляемому приложению и тонкому клиенту: на стороне сервера формируется таб.док с расшифровкой типа ДанныеРасшифровкиКомпоновкиДанных, при возврате с сервера на клиент возникает ошибка сериализации. Не могу сообразить, как поправить, хотя уверен, что должно работать (справка вроде говорит, что тип должен сериализоваться, однако "Доступность: Сервер, толстый клиент, внешнее соединение.").

Возможно, как-то нужно "оборачивать" эту переменную, так как тип недоступен на форме. Пробовал кидать данные через ПоместитьВоВременноеХранилище() и временно чистить принудительно переменную, но после ее очистки отчет просто так уже не генерит событие расшифровки, а с передачей во временное хранилище как-то тоже не срослось.

Прошу ткнуть носом, где туплю. :( Видимо, сказывает нехватка опыта в сфере тонкого клиента и скд.


Вводные данные:

1. Код отчета формирования отчета:

Функция СформироватьТабличныйДокумент(Результат)

    Если ТипОшибки = "" Тогда
        Сообщить("Не выбран тип ошибки!");    
        Возврат Ложь;
    КонецЕсли;
    
    Результат.Очистить();
    
    обОбъект = РеквизитФормыВЗначение("Отчет");
    
    Если ТипОшибки = "ЕстьНетОрдераИлиРеализации" Тогда
        СхемаКомпоновкиДанных     = обОбъект.ПолучитьМакет("Макет_ЕстьНетОрдераИлиРеализации");
        ИмяСхемыКомпоновки         = "Макет_ЕстьНетОрдераИлиРеализации";
    ИначеЕсли ТипОшибки = "РОрдерНеСоответЗаказу" Тогда
        СхемаКомпоновкиДанных     = обОбъект.ПолучитьМакет("Макет_РОрдерНеСоответЗаказу");
        ИмяСхемыКомпоновки         = "Макет_РОрдерНеСоответЗаказу";
    ИначеЕсли ТипОшибки = "РОрдерНеСоответРеализации" Тогда
        СхемаКомпоновкиДанных     = обОбъект.ПолучитьМакет("Макет_РОрдерНеСоответРеализации");
        ИмяСхемыКомпоновки         = "Макет_РОрдерНеСоответРеализации";
    ИначеЕсли ТипОшибки = "ЕстьНетОрдераИлиНакладная" Тогда
        СхемаКомпоновкиДанных     = обОбъект.ПолучитьМакет("Макет_ЕстьНетОрдераИлиНакладная");
        ИмяСхемыКомпоновки         = "Макет_ЕстьНетОрдераИлиНакладная";
    КонецЕсли;
    
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Основной.Настройки);
    
    элТолькоПроведенные = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТолькоПроведенные");
    элТолькоПроведенные.Значение = ВключатьТолькоПроведенныеДокументы;
    элТолькоПроведенные.Использование = Истина;
    
    Если ТипОшибки = "РОрдерНеСоответЗаказу" Тогда
        элВыполнен = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Выполнен");
        элВыполнен.Значение = Справочники.СостоянияЗаказовПокупателей.НайтиПоНаименованию("Выполнен", Истина);
        элВыполнен.Использование = Истина;
    КонецЕсли;    
    
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    // Подготовимся к исполнению, сформировав макет компоновки данных
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    
    // Выполним компоновку данных
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ,ДанныеРасшифровки);
    
    // Создадим и инициализируем процессор вывода результата
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Возврат Истина;

КонецФункции // СформироватьТабличныйДокумент()


Соответственно, при выходе из процедуры ругань на переменную ДанныеРасшифровки.

2. Переменная ДанныеРасшифровки объявлена как реквизит формы с типом "Произвольный".

3. В отчете нет основной схемы компоновки данных тк используется неск. схем с разными настройками.


PS: Пока клиент работает в 1С в режиме "толстый клиент".
PPS: Если где-то в поиске упустил, то прошу "понять и простить". Вроде бы нужного ответа пока не нашел.
1 DUDE
 
17.08.15
23:03
Вот что значит - невовремя создать тему :)