|
УПП Сериализация отчета на СКД. Расшифровка | ☑ | ||
---|---|---|---|---|
0
breezee
22.01.21
✎
18:54
|
Добрый вечер. Управление производственным предприятием, редакция 1.3 (1.3.36.1). Платформа 1С:Предприятие 8.3 (8.3.13.1513)
Я пытаюсь выполнить отчеты из одной базы в другой базы. С отчетом на построителе у меня вышло. Если кому интересно - вот тема с рабочим кодом УПП как сериализовать универсальный отчет Есть отчеты на СКД. Я переделал отчет на СКД, чтобы он выполнялся в другой базе, но при расшифровке возникает ошибка. В модуле "ТиповыеОтчеты" я поменял код //было: //МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, ОтчетОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки); //стало: ДанныеВыполнения = мойМодуль.ОбработатьСКДПоВебСервису(Схема, ОтчетОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки); МакетКомпоновки = ДанныеВыполнения.ТабдДок; ДанныеРасшифровки = ДанныеВыполнения.ДанныеРасшифровки; Схема = ДанныеВыполнения.Схема_Новая; Вот функция общего модуля в которой идет запрос по веб-сервису функция ОбработатьСКДПоВебСервису(Схема, НастройкиКомпановщика, ДанныеРасшифровки) Экспорт //1. Сериализуем параметры для выполнения макета СтруктураПараметров = Новый Структура("Схема, НастройкиКомпановщика, ДанныеРасшифровки", Схема, НастройкиКомпановщика, ДанныеРасшифровки); СтруктураПараметров_Сериал = ОбщегоНазначения.ЗначениеВСтрокуXML(Новый ХранилищеЗначения(СтруктураПараметров)); ////2. Подключимся к отчтености и выполним построитель ПустьВебСервисаОтчетности = МОЙ_ПУТЬ_СЕРВИСА; ПутьВебСервисаОбмена = ПустьВебСервисаОтчетности; ИмяПользователяОбмена = ИМЯЮЗЕРА; ПарольПользователяОбмена = ПАРОЛЬЮЗЕРА; Попытка ОпределениеWS = Новый WSОпределения(ПутьВебСервисаОбмена, ИмяПользователяОбмена, ПарольПользователяОбмена); Исключение Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; Сервис = ОпределениеWS.Сервисы.Получить(0); ИмяСервиса = Сервис.Имя; ТочкаПодключения = Сервис.ТочкиПодключения.Получить(0).Имя; КлиентWS = Новый WSПрокси(ОпределениеWS, Сервис.URIПространстваИмен, ИмяСервиса, ТочкаПодключения); КлиентWS.Пользователь = ИмяПользователяОбмена; КлиентWS.Пароль = ПарольПользователяОбмена; ТабДокСериализованный = КлиентWS.ВыполнитьСКД(СтруктураПараметров_Сериал); ТабдДок = ОбщегоНазначения.ЗначениеИзСтрокиXML(ТабДокСериализованный); ТабдДок = ТабдДок.Получить(); Возврат ТабдДок; КонецФункции А вот функция веб-сервиса, которая выполняет отчет по веб-сервису: Функция ВыполнитьСКД(СтруктураПараметровЗапроса) КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; СтруктураПараметров_Десериал = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтруктураПараметровЗапроса).Получить(); Схема_Новая = СтруктураПараметров_Десериал.Схема; НастройкиКомпановщика_Новая = СтруктураПараметров_Десериал.НастройкиКомпановщика; ДанныеРасшифровки_Новая = СтруктураПараметров_Десериал.ДанныеРасшифровки; МакетКомпановки = КомпоновщикМакета.Выполнить(Схема_Новая, НастройкиКомпановщика_Новая, ДанныеРасшифровки_Новая); ДанныеВыполнения = Новый Структура("ТабдДок, ДанныеРасшифровки, Схема_Новая", МакетКомпановки, ДанныеРасшифровки_Новая, Схема_Новая); МакетКомпановки_Сериал = ОбщегоНазначения.ЗначениеВСтрокуXML(Новый ХранилищеЗначения(ДанныеВыполнения)); Возврат МакетКомпановки_Сериал; КонецФункции А вот ошибка, которая возникает, когда я нажимаю на поле для его расшифровке в отчете, который выполнился: {ОбщийМодуль.ТиповыеОтчеты.Модуль(975)}: Поле объекта не обнаружено (Поле) ДотупноеПоле = ПолучитьДоступноеПоле(Новый ПолеКомпоновкиДанных(МассивПолейРасшифровкиСРесурсами[0].Поле), ОтчетОбъект.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора); Сама ошибка меня ясна - МассивПолейРасшифровкиСРесурсами[0] содержит свойства Свойство Значение Тип МассивПолейРасшифровкиСРесурсами[0] ЭлементОтбораКомпоновкиДанных ЭлементОтбораКомпоновкиДанных ВидСравнения Равно ВидСравненияКомпоновкиДанных ИдентификаторПользовательскойНастройки "" Строка Использование Истина Булево ЛевоеЗначение Подразделение ПолеКомпоновкиДанных ПравоеЗначение МОЕ_ПОДРАЗДЕЛЕНИЕ СправочникСсылка.Подразделения Представление "" Строка ПредставлениеПользовательскойНастройки "" Строка Применение Обычное ТипПримененияОтбораКомпоновкиДанных РежимОтображения Быстрый доступ РежимОтображенияЭлементаНастройкиКомпоновкиДанных Родитель Неопределено А свойства "ПОЛЕ" нет. А вот откуда это свойство "поле" должно быть - я не понимаю. Как работает СКД тоже не сильно понимаю (не совсем 0, но особенностей не знаю). Может, пожалуйста, у кого-то будет идея? Не понимаю как сделать так, чтобы расшифровка работала |
|||
1
breezee
22.01.21
✎
18:57
|
Отвечаю на вопрос который может возникнуть - "плодю" темы, потому что первая тема была про отчет на построителе, эта тема про отчет на СКД. Считаю что это разные темы.
|
|||
2
breezee
22.01.21
✎
22:20
|
up
|
|||
3
hhhh
23.01.21
✎
13:42
|
МассивПолейРасшифровкиСРесурсами[0] - поле не того типа, что тут думать. Или может вообще неопределено. Вставьте туда проверку на неопределено. А лучше отладчиком глянуть тип этого поля.
|
|||
4
breezee
25.01.21
✎
18:29
|
Разобрался как побороть 1 отчет
Надо дописать ДанныеРасшифровки.Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки; Но ломается другой отчет. Почему это происходит я не разобрался. Как починить я не разобрался. Если у кого есть пример буду безмерно благодарен. Задача оказалась сложнее чем я думал( |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |