AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.06.2023, 18:45   #1  
jeky is offline
jeky
:o)
Аватар для jeky
 
130 / 64 (3) ++++
Регистрация: 22.05.2008
? web-сервис Документооборот 2.0
Коллеги, добрый день
ax2009 5.0.1500.6491

Помогите, пожалуйста, c web-сервисами в аксапте знакомлюсь впервые.

Используем коробочный сервис для создания документа в 1С.
При этом строковые поля передаются в документ (на стороне 1С) нормально, но числа и даты - нет.
Т.е. в коде на стороне аксапты я задаю значения через методы set, если тут же смотрю через get, то значения есть и они выводятся.
Если после сборки объекта (документа) формирую из него xml при помощи AifUtil::serializeClrObject() метод взят здесь на форуме, то теги с проблемными значениями просто не формируются(их_нет\отсутствуют).

На стороне 1С соответствующие переменные видят просто пустыми (незаполненными)
Примеров взаимодействия с данным сервисом в доступных приложениях нет.
Цитаты из xsd:
сумма
<xs:element name="sum" type="xs:decimal" minOccurs="0"/>
дата
<xs:element name="regDate" type="xs:dateTime" minOccurs="0"/>

входные параметры в аксапте соответственно:
сумма
set_sum(Decimal value)
дата
set_regDate(DateTime value)

в декларации
X++:
DocOb2.DMInternalDocument           intDoc;
где DocOb2 - узел References в AOT

для задания значений было использовано:
сумма
X++:
intDoc.set_sum(new System.Decimal(99));
дата
1.
X++:
intDoc.set_regDate(systemdateget());
2.
X++:
        //через System.
        SystemDTime = System.DateTime::SpecifyKind(DatetimeUtil::getSystemDateTime(), System.DateTimeKind::Local);
        intDoc.set_regDate(SystemDTime); 
        info(System.Convert::ToString(SystemDTime));
3.
X++:
        //через UTC
        utcDateTime                         myDTime;
        System.DateTime                     myDTime1; 
        ;
        myDTime  = datetimeutil::getSystemDateTime();
        myDTime1 = Global::utcDateTime2SystemDateTime(myDTime);
        intDoc.set_regDate(new System.DateTime(myDTime1));
        info(System.Convert::ToString(myDTime1));

при этом дата, передаваемая след образом, - передаётся без использования каких либо изысков просто через systemdateget()
<xs:element name="propertySimpleValue" nillable="true" minOccurs="0"/>
входные параметры в аксапте
set_propertySimpleValue(Object value);
задание значения:
X++:
addPropDatePaymentContract.set_propertySimpleValue(systemdateget());
со слов коллег nillable="true" мы не можем использовать т.к. sum и regDate обязательные, а nillable="true" может быть использовано только для необязательных свойств\атрибутов

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

X++:
        DocOb2.DMError           error;
        ;
        createRequest = new DocOb2.DMCreateRequest();
        createRequest.set_object(intDoc);
        //createResponce = servClient.execute(createRequest);
        error = servClient.execute(createRequest);
получаем ошибку из error
по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
Преобразование значения к типу Число не может быть выполнено

подскажите, пожалуйста, как сие преодолеть?
проблема в синтаксисе?
проблема в настройках сервера?
проблема в настройках сервиса?

небольшой доп. вопрос
результат servClient.execute(createRequest); я могу забрать или в error или в createResponce, во время отладки я могу менять объекты, но это не приемлемо для рабочего кода. подскажите как написать код чтобы при успешной обработке запроса выдать соответствующее сообщение об успехе, а при возникновении ошибки получить доступ к get_subject и get_description которые реализованы в error?

X++:
        DocOb2.DMError           error;
        DocOb2.DMCreateResponce  createResponce;
        ;
        //createResponce = servClient.execute(createRequest);
        error = servClient.execute(createRequest); 
        if (error)
        {
            //error = createResponce.get_object();
            info (error.get_subject());
            info (error.get_description());
        }
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов.

Последний раз редактировалось jeky; 04.06.2023 в 19:46. Причина: редактирование текста
Теги
1c, web, web service, web сервис, документооборот 2.0, интеграция с 1с

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2012 R3 WMDP, Разрешить ввод "<" в поля web-формы (ошибка "A potentially dangerous Request.Form value was detected from the client") RSrd DAX: Программирование 2 27.02.2020 15:19
emeadaxsupport: How to update AX 2012 Enterprise Portal in a multi-server web farm Blog bot DAX Blogs 0 09.11.2015 13:11
Inside Dynamics AX 4.0: The Web Framework Blog bot DAX Blogs 0 25.10.2007 03:04
Pokluda: Outbound web service (AIF) Blog bot DAX Blogs 0 28.10.2006 17:43
Axapta Web Dployment Client и разные сервис паки dreshkov_imported DAX: Администрирование 1 29.09.2004 13:02

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:35.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.