![]() |
![]() |
![]() |
|
Вопрос про XDTO | ☑ | ||
---|---|---|---|---|
0
Alex_MA
09.08.11
✎
09:27
|
Всем доброго дня!
Создал пакет XDTO. http://gyazo.com/2438451f22e588b3f779d7eb374efe8f.png Создал обработку выгрузки XDTO. Обработка имеет реквизит "Документ" - ссылка на документ "ЗаявкаНаРасходованиеДенежныхСредств" Вот код: Процедура КнопкаВыполнитьНажатие(Кнопка) //Создать сериализатор XDTO для глобальной фабрики ТекСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO); //Создать объект записи XML и открыть файл ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл("D:\RequestDocXDTO.xml"); //Получить выгружаемый документ ДокументОбъект = Документ.ПолучитьОбъект(); //Получаем используемые типы значений XTDO НомерТип = ФабрикаXDTO.Тип("http://localhost/xdto/request", "Номер"); НаименованиеТип = ФабрикаXDTO.Тип("http://localhost/xdto/request", "Наименование"); //Получаем используемые типы объектов XDTO ЗаявкаНаРасходованиеСредствТип = ФабрикаXDTO.Тип("http://localhost/xdto/request", "ЗаявкаНаРасходованиеДенежныхСредств"); ВалютаТип = ФабрикаXDTO.Тип("http://localhost/xdto/request", "Валюта"); СоставЗаявкиТип = ФабрикаXDTO.Тип("http://localhost/xdto/request", "СоставЗаявки"); //Создаем объект XDTO вылюта ВалютаXDTO = ФабрикаXDTO.Создать(ВалютаТип); //Получаем данные по валюте ВалютаXDTO.Наименование = ДокументОбъект.ВалютаДокумента.Наименование; ВалютаXDTO.Курс = МодульВалютногоУчета.ПолучитьКурсВалюты(Документ.ВалютаДокумента, ТекущаяДата()); //Создаем объект XDTO ЗаявкаНаРасходованиеСредств ЗаявкаНаРасходованиеСредстаXDTO = ФабрикаXDTO.Создать(ЗаявкаНаРасходованиеСредствТип); //Получаем данные по документу ЗаявкаНаРасходованиеСредстаXDTO.Дата = ДокументОбъект.Дата; ЗаявкаНаРасходованиеСредстаXDTO.Номер = ФабрикаXDTO.Создать(НомерТип); ЗаявкаНаРасходованиеСредстаXDTO.ВалютаДокумента = ВалютаXDTO; Для Каждого СтрокаПлатежа Из ДокументОбъект.РасшифровкаПлатежа Цикл //Получаем данные по платежу СоставЗаявкиXDTO = ФабрикаXDTO.Создать(СоставЗаявкиТип); СоставЗаявкиXDTO.ДоговорКонтрагента = ФабрикаXDTO.Создать( ФабрикаXDTO.Создать("http://localhost/xdto/request", "UUID"), СтрокаПлатежа.ДоговорКонтрагента.УникальныйИдентификатор()); СоставЗаявкиXDTO.СтатьяДвиженияДенежныхСредств = ФабрикаXDTO.Создать( ФабрикаXDTO.Создать("http://localhost/xdto/request", "UUID"), СтрокаПлатежа.СтатьяДвиженияДенежныхСредств.УникальныйИдентификатор()); СоставЗаявкиXDTO.СуммаПлатежа = СтрокаПлатежа.СуммаПлатежа; //Добавляем новое значение в состав ЗаявкаНаРасходованиеСредстаXDTO.РасшифровкаПлатежа.Добавить(СоставЗаявкиXDTO); КонецЦикла; ТекСериализаторXDTO.Фабрика.ЗаписатьXML(ЗаписьXML, ЗаявкаНаРасходованиеСредстаXDTO); ЗаписьXML.Закрыть(); КонецПроцедуры При выгрузке возникает ошибка такого содержания: {Форма.Форма.Форма(27)}: Ошибка при установке значения атрибута контекста (Наименование) ВалютаXDTO.Наименование = ДокументОбъект.ВалютаДокумента.Наименование; по причине: по причине: Несоответствие типов XDTO по причине: Ошибка проверки данных XDTO: Значение: 'руб' не соответствует простому типу: {http://localhost/xdto/request}Наименование Несоответствие фасету MinLength = '100' Как ее исправить ? |
|||
1
Alex_MA
09.08.11
✎
09:28
|
ой, разобрался, пардон
|
|||
2
Alex_MA
09.08.11
✎
09:37
|
Подскажите, почему не создается UUID
СоставЗаявкиXDTO.ДоговорКонтрагента = ФабрикаXDTO.Создать( ФабрикаXDTO.Создать("http://v8.1c.ru/8.1/data/core", "UUID"), СтрокаПлатежа.ДоговорКонтрагента.УникальныйИдентификатор()); Ошибка: {Форма.Форма.Форма(45)}: Ошибка при вызове метода контекста (Создать) СтрокаПлатежа.ДоговорКонтрагента.УникальныйИдентификатор()); |
|||
3
Адинэснег
09.08.11
✎
09:40
|
в строку его попробуй
|
|||
4
Alex_MA
09.08.11
✎
09:42
|
(3)в строку можно. А суть ошибки в чем ?
В том, что пространство имен "http://v8.1c.ru/8.1/data/core" недоступно ? |
|||
5
Широкий
09.08.11
✎
09:43
|
А так?
СоставЗаявкиXDTO.ДоговорКонтрагента = ФабрикаXDTO.Создать( ФабрикаXDTO.Создать("http://v8.1c.ru/8.1/data/core", "UUID"),XMLСтрока(СтрокаПлатежа.ДоговорКонтрагента)); |
|||
6
Alex_MA
09.08.11
✎
09:46
|
(5)не помогло
|
|||
7
Alex_MA
09.08.11
✎
09:48
|
(5)по причине:
Несоответствие типов (параметр номер '1') |
|||
8
Alex_MA
09.08.11
✎
09:48
|
(5)в табло
ФабрикаXDTO.Создать("http://v8.1c.ru/8.1/data/core", "UUID") = Неопределено |
|||
9
Alex_MA
09.08.11
✎
10:11
|
В СП ФабрикаXDTO.Создать() не написано про возврат "Неопределено"
|
|||
10
Широкий
09.08.11
✎
10:42
|
СоставЗаявкиXDTO.ДоговорКонтрагента = ФабрикаXDTO.Создать(
ФабрикаXDTO.Создать("http://v8.1c.ru/8.1/data/core", "UUID"), СтрокаПлатежа.ДоговорКонтрагента.УникальныйИдентификатор()); |
|||
11
Широкий
09.08.11
✎
10:43
|
Тьфу...
СоставЗаявкиXDTO.ДоговорКонтрагента = ФабрикаXDTO.Создать( ФабрикаXDTO.Создать(<Пространство имен твоего пакета>, "UUID"),СтрокаПлатежа.ДоговорКонтрагента.УникальныйИдентификатор()); |
|||
12
Широкий
09.08.11
✎
10:48
|
Погоди .. у тебя есть объект "Состав заявки". У него свойство "Договор контрагента"
Судя по коду объект "СоставЗаявкиXDTO" ты уже создал.. Разве так не работает? СоставЗаявкиXDTO.ДоговорКонтрагента=СтрокаПлатежа.ДоговорКонтрагента.УникальныйИдентификатор(); |
|||
13
Alex_MA
09.08.11
✎
11:09
|
(12)так работает, просто интересует почему не работает
ФабрикаXDTO.Создать("http://v8.1c.ru/8.1/data/core", "UUID") |
|||
14
Alex_MA
09.08.11
✎
11:12
|
Для Каждого СтрокаПлатежа Из ДокументОбъект.РасшифровкаПлатежа Цикл
//Получаем данные по платежу СоставЗаявкиXDTO = ФабрикаXDTO.Создать(СоставЗаявкиТип); СоставЗаявкиXDTO.ДоговорКонтрагента = СтрокаПлатежа.ДоговорКонтрагента.УникальныйИдентификатор(); СоставЗаявкиXDTO.СтатьяДвиженияДенежныхСредств = СтрокаПлатежа.СтатьяДвиженияДенежныхСредств.УникальныйИдентификатор(); СоставЗаявкиXDTO.СуммаПлатежа = СтрокаПлатежа.СуммаПлатежа; КонецЦикла; //Добавляем новое значение в состав ЗаявкаНаРасходованиеСредстаXDTO.РасшифровкаПлатежа = СоставЗаявкиXDTO; Отработало, в результате создался файл xml <ЗаявкаНаРасходованиеДенежныхСредств xmlns="http://xdto/request" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Дата>2008-11-06T10:48:09</Дата> <Номер>00000000027</Номер> <ВалютаДокумента> <Наименование>руб</Наименование> <Курс>1</Курс> </ВалютаДокумента> <РасшифровкаПлатежа> <ДоговорКонтрагента>0b2d29b1-a6a1-11dd-b1b2-0050450097d9</ДоговорКонтрагента> <СтатьяДвиженияДенежныхСредств>00000000-0000-0000-0000-000000000000</СтатьяДвиженияДенежныхСредств> <СуммаПлатежа>5730</СуммаПлатежа> </РасшифровкаПлатежа> </ЗаявкаНаРасходованиеДенежныхСредств> |
|||
15
Широкий
09.08.11
✎
11:13
|
Тип=ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "UUID");
А так? |
|||
16
Alex_MA
09.08.11
✎
11:15
|
(15)так тоже нет, см (8)
|
|||
17
Широкий
09.08.11
✎
11:15
|
(16) Посмотри еще раз
|
|||
18
Alex_MA
09.08.11
✎
11:16
|
(15)у себя посмотри, у тебя нормально ? может с "проксей" нашей что не так ?
|
|||
19
Широкий
09.08.11
✎
11:17
|
(18) Внимательно посмотри на (15) и на (8)
|
|||
20
Alex_MA
09.08.11
✎
11:18
|
(17) Ура! Заработало :)
|
|||
21
Alex_MA
09.08.11
✎
11:19
|
(19)не могу разницы найти, но твой вариант работает, что такое ?
|
|||
22
Alex_MA
09.08.11
✎
11:21
|
опа, заметил
|
|||
23
Широкий
09.08.11
✎
11:21
|
(21) Ну и балда
Объект=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "UUID")); Объект=Новый УникальныйИдентификатор; |
|||
24
Alex_MA
09.08.11
✎
11:21
|
ФабрикаXDTO.Создать("http://v8.1c.ru/8.1/data/core", "UUID")
ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "UUID"); разные конечно вещи :) |
|||
25
Alex_MA
09.08.11
✎
11:26
|
а дальше поднял Appach 2.2, создал web сервис
http://gyazo.com/9b8d0317dc3f013034ed1afcd1c3efab.png Жму на Администрирование -> "Публикация на web сервере..." http://gyazo.com/290eda424d99c1e02595a71f93faec6f.png, web сервис не публикуется. Создается только один файлик "default.vrd" с такой структурой: <?xml version="1.0" encoding="UTF-8"?> <point xmlns="http://v8.1c.ru/8.2/virtual-resource-system" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" base="/websrv" ib="Srvr="apsrv_b";Ref="tstma2";"> <ws> <point name="WebСервис_Консолидации" alias="ws_Cons.1cws" enable="false"/> <point name="Files" alias="files.1cws" enable="false"/> <point name="WebСервис_ВводЗявокДДС" alias="request.wsdl"/> </ws> </point> а wsdl файла не получилось |
|||
26
Alex_MA
09.08.11
✎
12:11
|
апну?
|
|||
27
Alex_MA
09.08.11
✎
12:14
|
ведь при публикации должен wsdl файл создаться
|
|||
28
Alex_MA
09.08.11
✎
16:07
|
если web сервер настроен корректно, должен создаться файл wsdl или cws ?
|
|||
29
Alex_MA
10.08.11
✎
08:08
|
Тонкий клиент публикуется, а web сервисы нет
|
|||
30
Alex_MA
10.08.11
✎
08:30
|
Вообщем опубликовал (или нет) web сервис
http://gyazo.com/cee916bcfa5bba7de9dc47ceda990e25.png в результате создался файл "default.vrd" файл по пути "C:\Program Files\Apache Group\Apache2\htdocs\" Содержание: <?xml version="1.0" encoding="UTF-8"?> <point xmlns="http://v8.1c.ru/8.2/virtual-resource-system" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" base="/tstma2" ib="Srvr="apsrv_b";Ref="tstma2";"> <ws> <point name="WebСервис_Консолидации" alias="ws_Cons.1cws"/> <point name="Files" alias="files.1cws"/> <point name="vscВводЗявокНаРасходованиеДенежныхСредств" alias="request.wsdl"/> </ws> </point> Зашел в конфигуратор, добавляю WS-Ссылку: http://gyazo.com/e01aac4457f480946d847a773f7e5d7e.png А дальше: http://gyazo.com/08ba5609e9f23a40ddc5f173afa9f158.png Что за имя пользователя и пароль ? Куда это программа "ломанулась" ? |
|||
31
Alex_MA
10.08.11
✎
08:35
|
или в браузере по этому пути "http://localhost/tstma2/ws/request.wsdl"
"http://gyazo.com/95340d9a1ed14a4e761733ad8987fbcf.png" |
|||
32
Alex_MA
10.08.11
✎
08:46
|
Авторизовался, ввел имя пользователя 1С:
http://gyazo.com/860cfa28e7f147af687c396476b7ea24 жму в браузере на ссылку: http://gyazo.com/447cd457168e629e932bcb7c4380f0cd.png |
|||
33
Alex_MA
10.08.11
✎
10:04
|
подниму
|
|||
34
Alex_MA
10.08.11
✎
11:10
|
все, господа, разобрался.
вообщем опубликовал, правда пока в папку по умолчанию аппача: 1.Ставишь последний аппач 2.В 1С публикуешь свои web сервисы и web клиента в папку "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs" (Конфигурационный файл аппача на эту папке настроен) В дальнейшем я конечно хочу разграничить логически папки, например: C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\webcl_ws\pub - Здесь будет опубликован web клиент и web сервисы C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\xdto\ - Пространство имен для xdto 3.Дальше заходим в браузер "http://localhost" и браузер автоматом перенаправляет на web клиента http://localhost/Public/ru_RU/ http://gyazo.com/43db88687347c8c541db70b1e176f797 Дальше в этой же адресной строке дописываешь http://localhost/Public/ru_RU/ws/files.1cws?wsdl - и Все ОК, где files - имя файла, при публикации из 1С. Если браузер не заматерился сильно, тогда все Ок. http://gyazo.com/78202ee4efc183895550a22f60ac788b.png - Ничего не отображается по адресу, но если в Crome выбрать пункт контекстного меню "Просмотр кода страницы", то мы увидим web сервис - Значит все ОК Вот последний скрин: http://gyazo.com/67ac82460d7e74e12b09d11c29117876.png Не знаю, понятно объяснил или нет :) Дальше буду глубже ковырять конф. файл аппача |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |