|
Передача ДеревоЗначений через COM соединение. | ☑ | ||
---|---|---|---|---|
0
morik44
17.09.15
✎
16:18
|
Добрый день. Столкнулся с проблемой: подключаюсь из Базы1 к Базе2(бп3.0) по COM обе базы клиент-серверные. Спотыкается на ДеревоЗначений -
ПараметрыОтчета = БазаБП.NewObject("Структура"); ДеревоНастроек = БазаБП.NewObject("ДеревоЗначений"); ДеревоНастроек.Колонки.Добавить("Наименование"); ДеревоНастроек.Колонки.Добавить("Код"); ДеревоНастроек.Колонки.Добавить("ВключатьВОтчет"); ДеревоНастроек.Колонки.Добавить("Существенность"); ДеревоНастроек.Колонки.Добавить("ИмяОбластиДопСтроки"); ДеревоНастроек.Колонки.Добавить("ТипСостава"); ДеревоНастроек.Колонки.Добавить("МаксимальноеКоличество"); //ИзвлечьИсходнуюСтруктуруНастроек(МакетНастроекПоУмолчанию, СтруктураОтчета.Баланс.ИмяСекцииНастройкиСоставаПоказателей, ДеревоНастроек); ИзвлечьИсходнуюСтруктуруНастроек(МакетНастроекПоУмолчанию, СтруктураОтчета.Баланс.ИмяСекцииНастройкиСоставаПоказателей, ДеревоНастроекБаланс); ДеревоФормы = ДанныеФормыВЗначение(ДеревоНастроекБаланс, Тип("ДеревоЗначений")); Для каждого стр из ДеревоФормы.Строки Цикл НовСтрока = ДеревоНастроек.Rows.Add(); ЗаполнитьЗначенияСвойств(НовСтрока,стр); КонецЦикла; //ПараметрыОтчета.Вставить("СоставДополнительныхСтрокБаланс", ДанныеФормыВЗначение(ДеревоНастроекБаланс, Тип("COMОбъДеревоЗначенийект"))); ПараметрыОтчета.Вставить("СоставДополнительныхСтрокБаланс", ДеревоНастроек); БазаБП.РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчет("РегламентированныйОтчетБухОтчетность", "ФормаОтчета2011Кв4", ПараметрыОтчета, Контейнер); //- тут вылетает ошибка. БазаБП.ЗаполнениеБухгалтерскойОтчетностиВызовСервера.ЗаполнитьОтчетБухОтчетностьФормаОтчета2011Кв4(ПараметрыОтчета, Контейнер); по причине: Произошла исключительная ситуация (1C:Enterprise 8.3.6.2152): Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ЗаполнитьОтчетБухОтчетностьФормаОтчета2011Кв4 () Причём на файловых базах всё работает без заморочек. Может кто сталкивался или вкурсе в чём может быть косяк? |
|||
1
Serginio1
17.09.15
✎
16:22
|
Сериализуй есериализуй через СериализаторXDTO
|
|||
2
morik44
17.09.15
✎
16:31
|
(1) Что сериализовать? В БП 2 параметра у метода ЗаполнитьОтчетБухОтчетностьФормаОтчета2011Кв4 () вот в первом ПараметрыОтчета - это стурктура, надо передать ключ "СоставДополнительныхСтрокБаланс" с типом ДеревоЗначений, повторяю - в файловых версиях баз всё работает.
|
|||
3
Serginio1
17.09.15
✎
16:47
|
(2) В файловых работает, потому, что там нет сервера и данные не сериализуются.
|
|||
4
morik44
17.09.15
✎
16:50
|
(3) мне это надо реализовать без дописания БП
|
|||
5
Serginio1
17.09.15
✎
16:55
|
Можешь через внешний отчет передавай в него данные, а он будет выполняться на сервере
|
|||
6
Serginio1
17.09.15
✎
17:08
|
Например
ДляВнешнегоСоединения= Сервер.ВнешниеОбработки.Создать(ПутьКОбработке); Объект=ДляВнешнегоСоединения.ВычислитьВыражение("Документы.ЗаказПоставщику.СоздатьДокумент()"); |
|||
7
morik44
21.09.15
✎
15:15
|
(6) Сделал по вашему совету, сериализовал дерево и сделал внешнюю обработку, в функцию этой обрабокти передал что нужно:
ДеревоДляПереноса = ДанныеФормыВЗначение(ДеревоНастроекБаланс, Тип("ДеревоЗначений")); ИмяВремФайла = ПолучитьИмяВременногоФайла("xml"); НовыйСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO); НоваяЗаписьXML = Новый ЗаписьXML; НоваяЗаписьXML.ОткрытьФайл(ИмяВремФайла); НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML,ДеревоДляПереноса,НазначениеТипаXML.Явное); НоваяЗаписьXML.Закрыть(); АдресПараметров = БазаБП.ПоместитьВоВременноеХранилище(ПараметрыОтчета); ДляВнешнегоСоединения = БазаБП.ВнешниеОбработки.Создать(ИмяВременногоФайла,Истина); Контейнер = ДляВнешнегоСоединения.ВыполнитьРегламент(ИмяВремФайла,АдресПараметров,Контейнер); Код из модуля обработки: Функция ВыполнитьРегламент(ЗаписьXML,АдресПараметров,Контейнер) Экспорт ПараметрыОтчета = ПолучитьИзВременногоХранилища(АдресПараметров); ЗаписьЖурналаРегистрации("ТестПуть",УровеньЖурналаРегистрации.Информация,,,ЗаписьXML); ЧтениеXML = Новый ЧтениеXML; НовСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO); ЧтениеXML.ОткрытьФайл(ЗаписьXML); ДеревоНастроек=НовСериализаторXDTO.ПрочитатьXML(ЧтениеXML); ЗаписьЖурналаРегистрации("ТестДерево",УровеньЖурналаРегистрации.Информация,,,ДеревоНастроек); ПараметрыОтчета.Вставить("СоставДополнительныхСтрокБаланс", ДеревоНастроек); РегламентированнаяОтчетностьПереопределяемый.ЗаполнитьОтчет("РегламентированныйОтчетБухОтчетность", "ФормаОтчета2011Кв4", ПараметрыОтчета, Контейнер); Возврат Контейнер; КонецФункции Ошибка всё равно также: {ОбщийМодуль.РегламентированнаяОтчетностьПереопределяемый.Модуль(4717)}: Ошибка при вызове метода контекста (ЗаполнитьОтчетБухОтчетностьФормаОтчета2011Кв4) Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ЗаполнитьОтчетБухОтчетностьФормаОтчета2011Кв4 (). |
|||
8
morik44
21.09.15
✎
15:34
|
Может кто подскажет как всё таки разрешить данную проблему?)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |