Имя: Пароль:
1C
1С v8
1c web service Soap Fault - вызвать исключение
0 pylyptiy
 
27.04.22
13:11
Каким образом можно вызвать свое самописное исключение в методе вебсервиса, и пометить метод так что он может его выбрасывать, чтобы в итоге в wsdl получить соответствующий блок для данного метода? к примеру как здесь:

    <wsdl:operation name="changeMassageStatusNotification">
      <soap:operation soapAction=""/>
      <wsdl:input name="changeMassageStatusNotificationRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="changeMassageStatusNotificationResponse">
        <soap:body use="literal"/>
      </wsdl:output>
      <wsdl:fault name="changeMassageStatusNotificationFault">
        <soap:fault name="changeMassageStatusNotificationFault" use="literal"/>
      </wsdl:fault>
    </wsdl:operation>

т.е. для метода хотим видеть блок <wsdl:fault> для нормальной обработки ошибок клиентским кодом. Необходимо именно свое самописное, т.к. нужны свои поля для доп информации, а простой вызов вызватьИсключение - бросает стандартное исключение как если бы это произошло в рантайме, а также в message не перетирает стэктрейс системы 1с, а добавляет к нему текст ошибки который ему дали в констукторе, что крайне не подходит для клиента. Плюс такой вызов не генерирует в wsdl блок <wsdl:fault> (видимо где то нужно отдельно помечать что метод может выбросить такое то исключение) что приводит к тому что клиент не знает что его может ждать при вызове этого метода, и приходится обобщенно оборачивать в обработку любого исключения.
1 ДНН
 
27.04.22
13:30
(0) вроде никак. Если только не сделать Web-servise через http-service и вручную формировать XML
2 pylyptiy
 
27.04.22
13:35
(1) А как тогда принято в инфраструктуре 1с писать подобные вещи? клиентский код является java-приложением, коим разработчиком я и являюсь. Какие типовые решения пишутся для ответов об ошибках в 1с ws? Это же полный мрак в модель бизнес-нагрузки пихать какие то error поля и заполнять их в случае необходимости. Какие могут быть другие решения?
3 dreizehn
 
27.04.22
15:16
(0) > свое самописное исключение
В 1С нет своих самописных исключений

(0) > крайне не подходит для клиента
Проблемы клиента.

(1) > Это же полный мрак
Тебя заставили заниматься 1С кнутом или пряником?

Как ты в своей жабе различешь прикладные ошибки "нет достаточного количества на складе" от ошибок приложения "деление на ноль"?
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс