Имя: Пароль:
1C
 
передать макет комопоновки СКД через web-сервис
0 kittystark
 
25.05.18
18:28
ХЭЛП !!!
в первой базе полностью подготавливаю макет компоновки со всеми нужными отборами и параметрами

МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(...);


от этого макета во вторую базу через веб-сервис передаю строку полученную из

СериализаторXDTO.ЗаписатьXML(ЗаписьXML, МакетКомпоновкиДанных, "dataComposition", "http://v8.1c.ru/8.1/data-composition-system/composition-template";)

вроде нормальный XML, в котором отборы и параметры завязаны на GUIDы элементов справочников

во второй базе при попытке десериализовать

ЧтениеXML = новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(СтрокаXMLМакетаКомпоновки);
макетКомпоновки = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); //1-я попытка

или

макетКомпоновки = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, "dataComposition"); //2-я попытка

или

макетКомпоновки = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, "http://v8.1c.ru/8.1/data-composition-system/composition-template";); //3-я попытка



валятся ошибки:
в 1-м случае
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data-composition-system/composition-template}dataComposition    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data-composition-system/composition-template}dataSource    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType

во 2-м и 3-ем случае Несоответствие типов (параметр номер '2')

что делать господа ?
1 Сияющий в темноте
 
25.05.18
18:35
А базы одинаковые?
2 craxx
 
25.05.18
18:38
(0) подозреваю расхождения метаданных баз
3 PiotrLoginov
 
25.05.18
18:40
Имя типа XDTO: DataCompositionTemplate.
4 kittystark
 
26.05.18
07:57
(2),(3) базы по метаданным одинаковые, завязаны через хранилище конфигурации
всякие там контрагенты/договоры, номенклатура/ед.изм и прочие - актуальны тоже, т.к. функционируют обмены
5 kittystark
 
26.05.18
07:58
блин пост выше к (1),(2)
6 kittystark
 
26.05.18
08:06
(3) по ходу лыжи с утра плохо смазал, помоги плиз

при отправке из первой базы строки

СериализаторXDTO.ЗаписатьXML(ЗаписьXML, МакетКомпоновкиДанных, "DataCompositionTemplate");


вызов во второй базе

макетКомпоновки = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);


приводит к ошибке

Ошибка преобразования данных XDTO:
НачалоСвойства: DataCompositionTemplate    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data-composition-system/composition-template}dataSource    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType


ЧЯДНТ ?
7 Cyberhawk
 
26.05.18
10:04
Запрос в СКД по метаданным не сходится
8 kittystark
 
26.05.18
10:52
решено! работает так:

сереализуем

СериализаторXDTO.ЗаписатьXML(ЗаписьXML, МакетКомпоновкиДанных, "DataCompositionTemplate");


десериализуем

макетКомпоновки = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, Тип("МакетКомпоновкиДанных"));


всем спасибо
9 PiotrLoginov
 
27.05.18
17:19
(8) и тебе благодарствуем за выложенное решение
10 Новиков
 
27.05.18
21:53
Хорошо копаешь. А интересно, чем вызвана вообще сама постановка задачи такая? Почему нельзя передать только параметры в приемнике, и там уже отработать всё?
11 craxx
 
28.05.18
04:42
(10) Не факт что это проще
12 kittystark
 
28.05.18
09:06
(11) +1
(10) постановка задачи: собрать отчет на СКД из нескольких БД 1С
повторюсь: метаданные одинаковы, НСИ синхронизируется - тем самым снимается мильён проблем

уже давно был реализован подход по передаче текста запроса, параметров и отборов СКД (как параметров запроса) и вот с этим подходом действительно не проще

во первых ради быстродействия обмена было отмечено минимальное количество пространств имен - отсюда возникает ограничение по типам передаваемых данных

во вторых теряется универсальность отборов шаг влево/вправо - замучаешься модифицировать текст передаваемого запроса

с передачей макета компоновки все проще - пользователь на форме настроил отчет, получили макет компоновки в XML, отдали в другую БД, получили в ответ ТЗ
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn