04.06.2023, 18:45 | #1 |
:o)
|
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; для задания значений было использовано: сумма X++: intDoc.set_sum(new System.Decimal(99)); 1. X++: intDoc.set_regDate(systemdateget()); X++: //через System.
SystemDTime = System.DateTime::SpecifyKind(DatetimeUtil::getSystemDateTime(), System.DateTimeKind::Local);
intDoc.set_regDate(SystemDTime);
info(System.Convert::ToString(SystemDTime)); 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()); после отправки собранного документа через DMCreateReques X++: DocOb2.DMError error; ; createRequest = new DocOb2.DMCreateRequest(); createRequest.set_object(intDoc); //createResponce = servClient.execute(createRequest); error = servClient.execute(createRequest); по причине: Ошибка при выполнении обработчика - 'ПриЗаписи' по причине: Преобразование значения к типу Число не может быть выполнено подскажите, пожалуйста, как сие преодолеть? проблема в синтаксисе? проблема в настройках сервера? проблема в настройках сервиса? небольшой доп. вопрос результат 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с |
|
|