Имя: Пароль:
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С кнутом или пряником?

Как ты в своей жабе различешь прикладные ошибки "нет достаточного количества на складе" от ошибок приложения "деление на ноль"?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший