1с wsопределения ошибка 500

Выдает ошибку в справочнике Контрагенты кнопка заполнить по ИНН

Я

  

sidalexsandr

14.03.17 — 11:19

УПП 1.3. При нажатии в справочнике контрагенты кнопки заполнить ИНН выдает ошибку:{ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198)}: Ошибка при вызове конструктора (WSОпределения)

    WSОпределения = Новый(Тип(«WSОпределения»), Параметры);

по причине:

При создании описания сервиса произошла ошибка. URL сервиса: https://api.orgregister.1c.ru/orgregister/v2?wsdl

Код ответа сервера: 500

Вопрос: как исправить ошибку?

  

DrShad

1 — 14.03.17 — 11:22

вопрос в другом — как на стороне 1С ты можешь влиять на сторонние сервера?

  

sidalexsandr

2 — 14.03.17 — 11:25

(1) Не знаю

  

Тролебузин

3 — 14.03.17 — 11:25

С 1 января 2017 года планируется отключение старого источника данных. Чтобы сервис «1С:Контрагент» продолжил работу, необходимо либо перейти на релиз конфигурации, в которой используется версия БСП 2.3.2.51 и выше, либо самостоятельно настроить подключение к новому источнику данных, перейдя в конфигурации на интерфейс https://api.orgregister.1c.ru/orgregister/v7?wsdl

  

Тролебузин

4 — 14.03.17 — 11:26

В УПП интерфейс должен был автоматически обновиться в версии 1.3.78

  

sidalexsandr

5 — 14.03.17 — 12:40

(4) Автоматически не обновился. Поясни что делать с xml файлом из (3) ?

  

Лефмихалыч

6 — 14.03.17 — 12:49

500 — это internal server error

проблема не на твоей стороне

  

sidalexsandr

7 — 14.03.17 — 12:51

(6) Почему не у меня. internal переводится как внутренний.

Что делать?

  

Лефмихалыч

8 — 14.03.17 — 12:51

Бывают, конечно, шутники, которые возвращают 500, когда входные параметры некорректные или их недостаточно, но, во-первых, 1С вроде этим не болеет, а, во-вторых, тут 500 вываливается при создании wsопределения, то есть до всяких там параметров. Логин-пароль, разве что неправильные…

  

Лефмихалыч

9 — 14.03.17 — 12:51

(7) потому, что внутренности, в которых ошибка, не твои, а — копании 1С

  

Лефмихалыч

10 — 14.03.17 — 12:52

а, это ты, sidalexsandr, не заметил. Извини, я не могу тебе помочь — я на твоем языке не умею говорить

  

sidalexsandr

11 — 14.03.17 — 12:55

(10) Ты противоречишь (3), потому и спросил?

  

Лефмихалыч

12 — 14.03.17 — 12:58

(11) ну, вот это то, о чем я говорил. С точки зрения русского языка и стандартной аристотелевской логики, там нет ни каких противоречий. Просто у тебя и язык какой-то свой, и логика квантовая, по этому тебе говоришь одно, а понимаешь ты что-то совершенно другое, иногда — диаметрально противоположное.

  

Тролебузин

13 — 14.03.17 — 13:09

(12) без флуда в тематической ветке, плизики.

(5) проверил на актуальной УПП — все работает. Значит что-то не договариваешь

  

Lama12

14 — 14.03.17 — 13:15

(7) код ошибки 500. Причем тут 1С? Если при переходе на страницу Яндекса получаешь 500 ошибку ты монитор меняешь или мышку? Может весь компьютер?

  

Лефмихалыч

16 — 14.03.17 — 13:16

(13) >без флуда в тематической ветке, плизики.

View post on imgur.com

  

Лефмихалыч

17 — 14.03.17 — 13:18

(14) у других сервис работает. Значит проблема все-таки на стороне клиента.

Я подозреваю автора в том, что он логин-пароль неправильно указал. Или, что еще вероятнее, — не знает, что без подписки на ИТС этот велосипед не работает, и, соответственно, вообще не вводил ни логина, на пароля.

  

Тролебузин

18 — 14.03.17 — 13:24

(17) за всех не надо говорить.

У меня на старых конфах сервис тоже отвалися

И если открыть https://api.orgregister.1c.ru/orgregister/v2?wsdl

<soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>;

<soap:Body>

<soap:Fault>

<faultcode>soap:Server</faultcode>

<faultstring>503 — Service Unavailable</faultstring>

</soap:Fault>

</soap:Body>

</soap:Envelope>

  

Лефмихалыч

19 — 14.03.17 — 13:26

разница между 500 и 503 существенная

  

sidalexsandr

20 — 14.03.17 — 13:41

(13) Какая версия УПП?

  

Тролебузин

21 — 14.03.17 — 14:25

(20) АКТУАЛЬНАЯ, а это значит 1.3.88.1

  

inkvizitr

22 — 14.03.17 — 14:43

база серверная? если да, то уверенны, что служба сервера 1с работает под пользователем виндовс у которого есть полноценный доступ к интернету

  

sidalexsandr

23 — 14.03.17 — 15:32

У меня Управление производственным предприятием, редакция 1.3 (1.3.73.1)

Вопрос: Что исправлять?

  

sidalexsandr

24 — 14.03.17 — 15:50

(9) Понял (раньше не видел этого сообщения).

  

Тролебузин

25 — 14.03.17 — 16:21

(23) обновись до (4)

  

sidalexsandr

26 — 14.03.17 — 16:53

(25) У меня база УПП изменённая её изменяли программисты до меня, что мне делать?

  

h-sp

27 — 14.03.17 — 17:12

(26) тогда забей, сами внесут контрагентов

  

sidalexsandr

28 — 14.03.17 — 17:15

Вот ответ:

поменялись адрес сервиса, имя и имя точки подключения.

Функция АдресСервиса()

    Возврат «https://api.orgregister.1c.ru/orgregister/v7?wsdl»;;

КонецФункции

…Показать

Прокси = ОбщегоНазначения.WSПрокси(

                АдресСервиса(),                             // АдресWSDL

                ПространствоИмен(),                         // URIПространстваИмен

                «RequisitesWebServiceEndpointImpl7Service», // ИмяСервиса

                «RequisitesWebServiceEndpointImpl7Port»,    // ИмяТочкиПодключения

                ПараметрыАутентификации.Логин,              // ИмяПользователя

                ПараметрыАутентификации.Пароль,             // Пароль

                60);

  

sidalexsandr

29 — 14.03.17 — 17:15

Ветку можно закрывать.

  

HardBall

30 — 14.03.17 — 17:44

(28) Ты подсмотрел в новой версии!!!

Как проницательно.

  

Тролебузин

31 — 15.03.17 — 01:12

(28) я тебе об этом еще в (3) написал

Мы описывали как настраивать веб-публикацию на IIS в инструкции.

Но после настройки веб-публикации при подключении к базе может возникать ошибка “Ошибка HTTP 500.0 — Internal Server Error”.

Если модуль был установлен с 32-битного клиента, то требуется это указать в пуле приложений. Для этого мы делаем следующую настройку:

  • Заходим в Панель управления → Администрирование → Диспетчер служб IIS.
  • Выбираем Пулы приложения которые задействованы в веб-публикации, в нашем случае DefaultAppPool.
  • Нажимаем ПКМ Дополнительные параметры.
  • В строке Разрешены 32-разрядные приложения мы указываем True как на Рисунке 1.
  • Нажимаем ОК.

главная страница

Рисунок 1 — Дополнительные параметры пула приложений

Если не сработало, есть следующие возможные решения:

  1. Убедитесь, что разрешения NTFS для файла web.config верны и обеспечивают доступ к учетной записи компьютера веб-сервера. Заходим в директорию, где размещена публикация (по умолчанию — C:inetpubwwwrootИМЯ_БАЗЫ). Нажимаем ПКМ на web.config → Свойства → Безопасность. Убедитесь в том, что у группы IIS_USERS есть права на чтение, выполнение, запись и изменение файла. Если нет — нажмите кнопку Изменить, в появившемся окне Добавить → Дополнительно и найдите в списке IIS_USERS. Добавьте эту группу и назначьте соответствующие права.
  2. Проверьте журналы событий, чтобы посмотреть, была ли зафиксирована какая-либо дополнительная информация. Открываем Выполнить (ПКМ на кнопку меню пуск или сочетанием клавиш Win+R), вводим “eventvwr.msc”, нажимаем Enter. Возможно, журнал даст подсказку какой компонент может сбоить.
  3. Переустановите компонент IIS на сервере. В диспетчере серверов удалите роль Веб-сервера IIS, перезагрузите сервер, а затем установите заново через оснастку Добавить роли и компоненты.
  4. Установите компонент расширения .NET, если запрос сопоставлен управляемому обработчику.

В Windows Server 2012 и младше: заходим в Диспетчер серверов → Добавить роли и компоненты → Роли сервера → Веб-сервер (IIS) → Веб-сервер → Разработка приложений → Расширяемость .NET. Далее идём далее по указаниям системы.

После применения настроек, мы можем подключаться к настроенной веб-публикации без ошибок.

Нужна готовая настройка веб-доступа к 1С? Попробуйте наш сервер 1С в аренду, в услугу включены все настройки и обслуживание.

Добрый день.
Пытаюсь разобраться с WEB-сервисами. Разобрал пример из ИНЕТА. Опубликовал локально на WEB-сервере. Но при обращении к нему из обработки, сервер выдает ошибку:

{ВнешняяОбработка.WEB_Service.Форма.Форма.Форма(11)}: Ошибка при вызове конструктора (WSОпределения)
    Определение = Новый WSОпределения(«http://localhost/request/ws/request.1cws?wsdl»,»Admin»,»123″);
по причине:
При создании описания сервиса произошла ошибка. URL сервиса: http://localhost/request/ws/request.1cws?wsdl
Код ответа сервера: 301

   Публиковал и на IIS и на Apache 2.4
Результата один  «Код ответа сервера: 301» (получаемый в ответ от сервера в ситуации, когда запрошенный ресурс был на постоянной основе перемещён в новое место). Совершенно ни о чем мне не говорит.
Сервис прекрасно читается в браузере напрямую — «http://localhost/request/ws/request.1cws?wsdl»
Он даже загружается в «WS-ссылки» конфигуратора.
Но работать не хочет из Обработки, которая к нему обращается.
Пример брал здесь: https://infostart.ru/public/327963/
Подскажите, как с этим бороться.

Нашел неточность. Имя сервиса «Request» (С большой буквы)
Теперь строка в определении выглядит так — «http://localhost/Request/ws/request.1cws?wsdl»
Но теперь ошибка 400 (что-то там с синтаксисом)

Разобрался.
Надо было делать так «http://127.0.0.1/Request/ws/request.1cws?wsdl»
«localhost» не катит

Ошибка 405 и 500 в HTTP сервисе 1С. Поиск и устранение.

Добрый день, хотел поделиться с вами результатом преодоления этих ошибок при работе с http сервисами 1С. С данной ошибкой мне пришлось столкнуться при переписывании мобильного приложения с web сервисов на http. Ошибка возникала при отправке http сервису POST запроса.

Ошибка 405

При работе с некорректным HTTP сервисом из мобильного приложения возвращалась ошибка 405, которая указывает на конкретную проблему. «405 Method Not Allowed — указанный клиентом метод нельзя применить к текущему ресурсу.» Долго не мог разобраться с данной ошибкой, так как в сервисе запрос был разрешен и шаблоны были настроены корректно.

При работе с некорректным HTTP сервисом из внешних программ возвращалась ошибка 500, которая ни о чем конкретном не говорит. «500 Internal Server Error — любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса».

Ошибка 500

Ошибка 405

Вроде HTTP сервис один, а при использовании запросов к нему из разных программ возвращались разные ошибки.

Расследование ошибок 405 и 500 в HTTP сервисе 1С

Времени на выяснение причин ушло очень много. За несколько дней до этой задачи мною были проведены десятки экспериментов по сборке и настройке web сервера apache 2.4 x64 SSL для работы с 1С. Все настройки в основном были связаны с кросс доменными запросами из web приложения на javascript. Столкнувшись с ошибками 405 и 500 на другом проекте я сразу полез в дебри конфигурации apache. После полного удаления apache поставил IIS и на нем вышла такая же ошибка. Поднял на виртуальной машине чистую систему, попробовал apache и iss, но ошибка так и проявлялась. Потом я вспомнил, что одна функция мобильного приложения уже давно использует http сервис и там все прекрасно работает. Создал http сервис с базовыми настройками и все заработало.

Ошибка 405

Как только я переносил код из web сервиса в функции http сервиса, сразу появлялись ошибки. Самое интересное, что отладка не срабатывала, т.е. POST запрос в пустую функцию приходил и отрабатывал, а в функцию с кодом нет.

Ошибка 405

На многих форумах ошибку 405 описывают как ошибку доступа, либо не корректную настройку http сервиса.

Итог разбора ошибок 405 и 500 в HTTP сервисе 1С.

В итоге все оказалось довольно просто. Функция, которая вызывалась внутри функции http сервиса 1с не могла быть вызвана из данного модуля. Странно, что при сохранении конфигурации никакой ошибки на вызов отсутствующей функции не было. Возможно это глюк версии платформы и будет доработан. При использовании web сервисов, даже если код внутри функции был не корректный, отладка работала. В http сервисе сразу идет возврат с ошибками 405 или 500.

P.S. В последней версии платформы ошибка 405 перестала выходить.

Обновление 12.01.2019

В процессе работы часто приходится сталкиваться с ошибками 405 и 500 в HTTP сервисах. Но проблема в 99% случаев в коде сервиса. Возможно это не явно, код вас может уводить глубоко в другие модули, но решение надо искать именно там.

Сейчас у меня такие ошибки начинают и в рабочих проектах. Стоит только внести небольшое изменение которое вызывает исключительную ситуацию, как вы получите ошибку 500. Мобильный клиент ведет себя еще более странно и отловить реальную ошибку очень тяжело, особенно когда переделывает чужие формы под мобильный клиент.

В данный момент я начинаю с того, что отключаю вызов всех функций и процедур начиная со входа в обработчики HTTP сервиса и смотрю как проходят запросы. Если все хорошо, то я начинаю включать код небольшими кусочками и проверять работу сервиса. Данный метод не самый быстрый, но дает 100% результат.

Если у вас остались вопросы, то вы можете задать мне их в социальных сетях или оставить комментарий ниже.

Обновлено 14.10.2020

1СДобрый день! Уважаемые читатели и гости популярного компьютерного блога pyatilistnik.org. В прошлый раз мы с вами решили ошибку » db query error please try later», и восстановили работу сайта на платформе 1С Битрикс. Сегодня я хочу поделиться небольшой заметкой, как выйти из ситуации, когда не работает кнопка «Заполнить по ИНН» в Справочнике Контрагенты при создании нового. Выдается ошибка «ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198): Ошибка при вызове конструктора (WSОпределения) WSОпределения = Новый(Тип(«WSОпределения»). Давайте разбираться в чем собственно дело.

Причины ошибок с модулем 198-504

Вся проблема связана с неправильным и устаревшим сертификатом, это бывает если вы давно не обновляли свою версию 1С, а в этот момент как раз истек срок сертификата, который участвует в подключении к внешним сервисам, например, npchk.nalog.ru или api.orgregister.1c.ru.

Вот так вот выглядит более полный текст ошибки:

Не работает кнопка «Заполнить по ИНН» в Справочнике Контрагенты при создании нового.

Выдает ошибку:

{ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198)}: Ошибка при вызове конструктора (WSОпределения)

WSОпределения = Новый(Тип(«WSОпределения»), Параметры);

по причине:

При вызове веб-сервиса произошла ошибка. При создании описания сервиса произошла ошибка. URL сервиса: https://api.orgregister.1c.ru/orgregister/v7?wsdl

по причине:

Ошибка работы с Интернет: Удаленный узел не прошел проверку

ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198)

Комментарий: {ОбщийМодуль. ОбщегоНазначения. Модуль (5303)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения (ИмяФайлаWSDL, ИмяПользователя, Пароль, ИнтернетПрокси, Таймаут);
по причине:
Ошибка импорта схемы
по причине:
Ошибка при выполнении файловой операции ‘_ttp://npchk.nalog.ru:80/FNSNDSCAWS_2?xsd=1’
по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504).

10060 — Ошибка соединения с сервером

HOST — npchk.nalog.ru[81.177.31.8]; PORT — 80
Connection timed outTraffic Inspector HTTP/FTP/Proxy server (3.0.2.912)

по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504)

Как решить проблему

В случае клиент-серверной версии необходимо добавить сертификат Digicert как на сервере, так и на всех клиентах. Добавлять стоит способом, описанным в пункту 1 или 3. Перегружать сервер после обновления cacert.pem не нужно.

  • Самым быстрым методом? будет замена сертификата cacert.pem, который располагается в папке с вашим клиентом. Скачать cacert.pem можно о официального сайта по ссылке:

https://its.1c.ru/db/files/1CITS/EXE/cacert/cacert.zip

Загрузка cacert.pem

В итоге у вас будет архив с сертификатом cacert.pem, распакуйте его. Далее, откройте вашего клиента, где вы получаете ошибку при вызове конструктора WSОпределения. И перейдите по пути:

C:Program Files (x86)1cv88.3.11.3034bin это в случае с версией 8.3.11.3034

Ошибка при вызове конструктора-02

Если вы теряетесь в своих версиях, то попробуйте произвести поиск по cacert.pem в папке C:Program Files (x86) и посмотрите, где у вас нужно подменить, этот файл. Меняете его на свежий и радуетесь жизни.

Ошибка при вызове конструктора-03

  • Второй метод, заключается в использовании обработки в 1С. Скачайте файл обработка.epf

https://its.1c.ru/db/files/1CITS/EXE/digicert_epf/digicert_epf.zip

ОБЯЗАТЕЛЬНО запустите его от имени администратора, иначе можете получить ошибку:

Ошибка записи сертификата. Возможно:
— Файл cacert.pem занят. Освободите файл от редактирования и запустите обработку заново.
— Закройте 1С: Предприятие и запустите с правами администратора операционной системы

  • Ну и третий метод, это редактирование текущего файла cacert.pem. Откройте его текстовым редактором и в самом конце файла вставьте содержимое файла digicert.pem, который можно скачать тут:

https://its.1c.ru/db/files/1CITS/EXE/digicert/digicert.zip

Ошибка при вызове конструктора-04

Мы описывали как настраивать веб-публикацию на IIS в инструкции.

Но после настройки веб-публикации при подключении к базе может возникать ошибка “Ошибка HTTP 500.0 — Internal Server Error”.

Если модуль был установлен с 32-битного клиента, то требуется это указать в пуле приложений. Для этого мы делаем следующую настройку:

  • Заходим в Панель управления → Администрирование → Диспетчер служб IIS.
  • Выбираем Пулы приложения которые задействованы в веб-публикации, в нашем случае DefaultAppPool.
  • Нажимаем ПКМ Дополнительные параметры.
  • В строке Разрешены 32-разрядные приложения мы указываем True как на Рисунке 1.
  • Нажимаем ОК.

главная страница

Рисунок 1 — Дополнительные параметры пула приложений

Если не сработало, есть следующие возможные решения:

  1. Убедитесь, что разрешения NTFS для файла web.config верны и обеспечивают доступ к учетной записи компьютера веб-сервера. Заходим в директорию, где размещена публикация (по умолчанию — C:inetpubwwwrootИМЯ_БАЗЫ). Нажимаем ПКМ на web.config → Свойства → Безопасность. Убедитесь в том, что у группы IIS_USERS есть права на чтение, выполнение, запись и изменение файла. Если нет — нажмите кнопку Изменить, в появившемся окне Добавить → Дополнительно и найдите в списке IIS_USERS. Добавьте эту группу и назначьте соответствующие права.
  2. Проверьте журналы событий, чтобы посмотреть, была ли зафиксирована какая-либо дополнительная информация. Открываем Выполнить (ПКМ на кнопку меню пуск или сочетанием клавиш Win+R), вводим “eventvwr.msc”, нажимаем Enter. Возможно, журнал даст подсказку какой компонент может сбоить.
  3. Переустановите компонент IIS на сервере. В диспетчере серверов удалите роль Веб-сервера IIS, перезагрузите сервер, а затем установите заново через оснастку Добавить роли и компоненты.
  4. Установите компонент расширения .NET, если запрос сопоставлен управляемому обработчику.

В Windows Server 2012 и младше: заходим в Диспетчер серверов → Добавить роли и компоненты → Роли сервера → Веб-сервер (IIS) → Веб-сервер → Разработка приложений → Расширяемость .NET. Далее идём далее по указаниям системы.

После применения настроек, мы можем подключаться к настроенной веб-публикации без ошибок.

Нужна готовая настройка веб-доступа к 1С? Попробуйте наш сервер 1С в аренду, в услугу включены все настройки и обслуживание.

Не получается опубликовать веб-сервис

Я
   Vir_Rus

21.08.19 — 14:32

Добрый день!

Не получается опубликовать веб сервис. Точнее обратиться к нему через браузер — пишет ошибка 404 (страница не найдена).

Самописная конфигурация, платформа 1С 8.3. Веб сервер Апаче 2.2. База 1с находится на одном сервере, сервер 1с на другом, сервер апаче на третьем.

При публикации веб сервиса через: Администрирование — Публикация на веб-сервисе… — создается в каталоге файл default.vrd.

Пытаюсь в браузере (с сервера апаче) перейти по адресу «http://localhost/Имя_указанное_при_публикации/ws/имя_сервиса?wsdl»; — выдает ошибку 404.

Не понимаю уже в какую сторону копать. Перерыл весь интернет, из подобных проблем — описано только в одной теме (http://www.bizkit.ru/2013/05/24/1722/). Но она не помогла…

Есть у кого какие идеи, в каком направлении искать?

Спасибо

   Vir_Rus

1 — 21.08.19 — 14:45

Есть в браузере зайти просто в локалхост, он видит только этот единственный файл, его можно посмотреть — содержание ниже:

<?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=»/Obmen»

        ib=»Srvr=&quot;10.194.11.201&quot;;Ref=&quot;gdctest2&quot;;»>

    <ws publishExtensionsByDefault=»true»>

        <point name=»Obmen»

                alias=»ws1.1cws»

                enable=»true»

                reuseSessions=»autouse»

                sessionMaxAge=»20″

                poolSize=»10″

                poolTimeout=»5″/>

    </ws>

    <standardOdata enable=»true»

            reuseSessions=»autouse»

            sessionMaxAge=»20″

            poolSize=»10″

            poolTimeout=»5″/>

</point>

   НЕА123

2 — 21.08.19 — 14:50

ХЗ.

м.б. конфигуратор при публикации был запущен не под администратором

   Vir_Rus

3 — 21.08.19 — 14:57

Если я не ошибаюсь, то не получится опубликовать не из под админа…

Дело не в этом.

Может нужны какие-то дополнительные манипуляции с апачем?

   Жан Пердежон

4 — 21.08.19 — 15:23

(3) ну так почитал бы гайды сначала, с IIS тоже манипуляции могут потребоваться

   Vir_Rus

5 — 22.08.19 — 12:41

Всем привет!

Была проблема в сервере. Установил Апаче на свой ПК и с него все развернул и запустил. Заработало сразу.

Но при попытке выполнить процедуру веб сервиса вываливается ошибка:»{ОбщаяФорма.ФормаОбмена.Форма(26)}: Ошибка при вызове метода контекста (Приветствие): При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса:  {Obmen}:Hello:Приветствие(): При вызове веб-сервиса произошла ошибка. Ошибка HTTP:  HTTP Status 500 — Внутренняя ошибка сервера.

1C:Enterprise 8 application error:Ошибка при разборе дескриптора виртуальных ресурсовby reason: Файл не обнаружен ‘C:wwwdefault.vrd’. 2(0x00000002): Не удается найти указанный файл.»

Почему в ошибке указан файл в папке C:www? я его ни где не прописывал…

Решил изменить в конфиге апача директорию документов как раз на www, чтобы 1с создала там нужный файл.

Ошибка не пропала. Пробовал и сервер из под админа запускать, права на папку есть у всех (в том числе и у админа, от которого пробовал запускать сервер).

   Vir_Rus

6 — 22.08.19 — 12:46

В базе веб сервиса в процедуре следующий код:

Функция Приветствие(Параметр1)

    Возврат Неопределено;

КонецФункции

В другой базе добавил ws-ссылку на веб сервис.

Пытаюсь подключиться:

    Соединение = WSСсылки.WSСсылка1.СоздатьWSПрокси(«Obmen»,»Hello»,»HelloSoap»);

    Соединение.Пользователь = «****»;

    Соединение.Пароль = «****»;

    Попытка

        Ответ = Соединение.Приветствие(«132»);

        Сообщить(Ответ);

    Исключение

        Сообщить(ОписаниеОшибки());

    КонецПопытки;

в результате ошибка.

Пробовал и динамически создавать подключение:

УРЛ = «http://localhost:80/Hello/ws/ws2.1cws?wsdl»;;

    Пространство = «Obmen»;

    ИмяСервиса = «Hello»;

    ИмяТочкиПодключения = «HelloSoap»;

    
    Попытка

        Определение = новый WSОпределения(УРЛ,,,,20);

        Соединение = Новый WSПрокси(Определение,Пространство,ИмяСервиса,ИмяТочкиПодключения,,150);

    Исключение

        Сообщить(ОписаниеОшибки());

        Возврат;

    КонецПопытки;

Получаю следующую ошибку:

{ОбщаяФорма.ФормаОбмена.Форма(15)}: Ошибка при вызове конструктора (WSОпределения): При создании описания сервиса произошла ошибка. URL сервиса: http://localhost:80/Hello/ws/ws2.1cws?wsdl

Код ответа сервера: 500

   ptiz

7 — 22.08.19 — 13:06

(5) «я его ни где не прописывал» — ищи в файле настроек апача httpd.conf

   Vir_Rus

8 — 22.08.19 — 13:17

(7) в том то и дело — там даже намека нет на эту папку, точнее не было.

Так как я потом сам поменял, чтобы доументы там хранились, но это не помогло.

Сам файл лежит в указанном пути, но ошибка не исчезает.

   DrWatson

9 — 22.08.19 — 13:18

(5) А разве это сообщение не значит, что с настройками всё хорошо, веб-сервис вызывается. Но 1С не нравится твоя функция Приветствие(). Может стоит убрать у неё параметр?

   Vir_Rus

10 — 22.08.19 — 13:28

(9) Убирал, результат тот же

   ptiz

11 — 22.08.19 — 13:49

(8) Покажи, что у тебя в файле httpd.conf в блоке после:

# 1c publication

   Vir_Rus

12 — 22.08.19 — 13:53

На всякий случай все после 1с publication выложу:

# 1c publication

Alias «/Hello» «C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/»

<Directory «C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/»>

    AllowOverride All

    Options None

    Order allow,deny

    Allow from all

    SetHandler 1c-application

    ManagedApplicationDescriptor «C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/default.vrd»

</Directory>

#

# DefaultType: the default MIME type the server will use for a document

# if it cannot otherwise determine one, such as from filename extensions.

# If your server contains mostly text or HTML documents, «text/plain» is

# a good value.  If most of your content is binary, such as applications

# or images, you may want to use «application/octet-stream» instead to

# keep browsers from trying to display binary files as though they are

# text.

#

DefaultType text/plain

<IfModule mime_module>

    #

    # TypesConfig points to the file containing the list of mappings from

    # filename extension to MIME-type.

    #

    TypesConfig conf/mime.types

    #

    # AddType allows you to add to or override the MIME configuration

    # file specified in TypesConfig for specific file types.

    #

    #AddType application/x-gzip .tgz

    #

    # AddEncoding allows you to have certain browsers uncompress

    # information on the fly. Note: Not all browsers support this.

    #

    #AddEncoding x-compress .Z

    #AddEncoding x-gzip .gz .tgz

    #

    # If the AddEncoding directives above are commented-out, then you

    # probably should define those extensions to indicate media types:

    #

    AddType application/x-compress .Z

    AddType application/x-gzip .gz .tgz

    #

    # AddHandler allows you to map certain file extensions to «handlers»:

    # actions unrelated to filetype. These can be either built into the server

    # or added with the Action directive (see below)

    #

    # To use CGI scripts outside of ScriptAliased directories:

    # (You will also need to add «ExecCGI» to the «Options» directive.)

    #

    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):

    #AddHandler type-map var

    #

    # Filters allow you to process content before it is sent to the client.

    #

    # To parse .shtml files for server-side includes (SSI):

    # (You will also need to add «Includes» to the «Options» directive.)

    #

    #AddType text/html .shtml

    #AddOutputFilter INCLUDES .shtml

</IfModule>

#

# The mod_mime_magic module allows the server to use various hints from the

# contents of the file itself to determine its type.  The MIMEMagicFile

# directive tells the module where the hint definitions are located.

#

#MIMEMagicFile conf/magic

#

# Customizable error responses come in three flavors:

# 1) plain text 2) local redirects 3) external redirects

#

# Some examples:

#ErrorDocument 500 «The server made a boo boo.»

#ErrorDocument 404 /missing.html

#ErrorDocument 404 «/cgi-bin/missing_handler.pl»

#ErrorDocument 402 http://localhost/subscription_info.html

#

#

# MaxRanges: Maximum number of Ranges in a request before

# returning the entire resource, or one of the special

# values ‘default’, ‘none’ or ‘unlimited’.

# Default setting is to accept 200 Ranges.

#MaxRanges unlimited

#

# EnableMMAP and EnableSendfile: On systems that support it,

# memory-mapping or the sendfile syscall is used to deliver

# files.  This usually improves server performance, but must

# be turned off when serving from networked-mounted

# filesystems or if support for these functions is otherwise

# broken on your system.

#

#EnableMMAP off

#EnableSendfile off

# Supplemental configuration

#

# The configuration files in the conf/extra/ directory can be

# included to add extra features or to modify the default configuration of

# the server, or you may simply copy their contents here and change as

# necessary.

# Server-pool management (MPM specific)

#Include conf/extra/httpd-mpm.conf

# Multi-language error messages

#Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings

#Include conf/extra/httpd-autoindex.conf

# Language settings

#Include conf/extra/httpd-languages.conf

# User home directories

#Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration

#Include conf/extra/httpd-info.conf

# Virtual hosts

#Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual

#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)

#Include conf/extra/httpd-dav.conf

# Various default settings

#Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections

#Include conf/extra/httpd-ssl.conf

#

# Note: The following must must be present to support

#       starting without SSL on platforms with no /dev/random equivalent

#       but a statically compiled-in mod_ssl.

#

<IfModule ssl_module>

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>

   ptiz

13 — 22.08.19 — 13:59

(12) Теперь проверь — всё ли правильно написано в этом файле: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/default.vrd

   Vir_Rus

14 — 22.08.19 — 14:06

Извиняюсь, не знаю как тут прикреплять файлы/изображения. Выложу весь текст файла.

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<definitions xmlns=»http://schemas.xmlsoap.org/wsdl/»; xmlns:soap12bind=»http://schemas.xmlsoap.org/wsdl/soap12/»; xmlns:soapbind=»http://schemas.xmlsoap.org/wsdl/soap/»; xmlns:tns=»Obmen» xmlns:wsp=»http://schemas.xmlsoap.org/ws/2004/09/policy»; xmlns:wsu=»http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd»; xmlns:xsd=»http://www.w3.org/2001/XMLSchema»; xmlns:xsd1=»Obmen» name=»Hello» targetNamespace=»Obmen»>

<types>

<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»; xmlns:xs1=»Obmen» targetNamespace=»Obmen» elementFormDefault=»qualified»>

<xs:element name=»Приветствие»>

<xs:complexType>

<xs:sequence/>

</xs:complexType>

</xs:element>

<xs:element name=»ПриветствиеResponse»>

<xs:complexType>

<xs:sequence>

<xs:element name=»return» type=»xs:all» nillable=»true»/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

</types>

<message name=»ПриветствиеRequestMessage»>

<part name=»parameters» element=»tns:Приветствие»/>

</message>

<message name=»ПриветствиеResponseMessage»>

<part name=»parameters» element=»tns:ПриветствиеResponse»/>

</message>

<portType name=»HelloPortType»>

<operation name=»Приветствие»>

<input message=»tns:ПриветствиеRequestMessage»/>

<output message=»tns:ПриветствиеResponseMessage»/>

</operation>

</portType>

<binding name=»HelloSoapBinding» type=»tns:HelloPortType»>

<soapbind:binding style=»document» transport=»http://schemas.xmlsoap.org/soap/http»/>;

<operation name=»Приветствие»>

<soapbind:operation style=»document» soapAction=»Obmen#Hello:Приветствие»/>

<input>

<soapbind:body use=»literal»/>

</input>

<output>

<soapbind:body use=»literal»/>

</output>

</operation>

</binding>

<binding name=»HelloSoap12Binding» type=»tns:HelloPortType»>

<soap12bind:binding style=»document» transport=»http://schemas.xmlsoap.org/soap/http»/>;

<operation name=»Приветствие»>

<soap12bind:operation style=»document» soapAction=»Obmen#Hello:Приветствие»/>

<input>

<soap12bind:body use=»literal»/>

</input>

<output>

<soap12bind:body use=»literal»/>

</output>

</operation>

</binding>

<service name=»Hello»>

<port name=»HelloSoap» binding=»tns:HelloSoapBinding»>

<documentation>

<wsi:Claim xmlns:wsi=»http://ws-i.org/schemas/conformanceClaim/»; conformsTo=»http://ws-i.org/profiles/basic/1.1″/>;

</documentation>

<soapbind:address location=»http://localhost/Hello/ws/Hello»/>;

</port>

<port name=»HelloSoap12″ binding=»tns:HelloSoap12Binding»>

<soap12bind:address location=»http://localhost/Hello/ws/Hello»/>;

</port>

</service>

</definitions>

   ptiz

15 — 22.08.19 — 14:16

(14) Это ответ веб-сервиса, значит — работает.

   Йохохо

16 — 22.08.19 — 14:18

(15) это копипаст из блокнота)

   ptiz

17 — 22.08.19 — 14:19

(14) У тебя «Имя файла публикации» заполнено в свойстве веб-сервиса?

   ptiz

18 — 22.08.19 — 14:20

(14) И покажи содержимое файла default.vrd

   Vir_Rus

19 — 22.08.19 — 15:02

(17) заполнено (18)

<?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=»/Hello»

        ib=»Srvr=&quot;sd-s-vm02&quot;;Ref=&quot;gdctest2&quot;;»>

    <httpServices publishByDefault=»false»/>

    <standardOdata enable=»true»

            reuseSessions=»autouse»

            sessionMaxAge=»20″

            poolSize=»10″

            poolTimeout=»5″/>

    <ws>

        <point name=»Obmen»

                alias=»ws1.1cws»

                enable=»true»

                reuseSessions=»autouse»

                sessionMaxAge=»20″

                poolSize=»10″

                poolTimeout=»5″/>

        <point name=»Hello»

                alias=»ws2.1cws»

                enable=»true»

                reuseSessions=»autouse»

                sessionMaxAge=»20″

                poolSize=»10″

                poolTimeout=»5″/>

    </ws>

</point>

   ptiz

20 — 22.08.19 — 15:22

   Йохохо

21 — 22.08.19 — 15:27

ib=»Srvr=&quot;sd-s-vm02&quot;

попробуйте по айпи

   Йохохо

22 — 22.08.19 — 15:29

ib=»Srvr=&quot;sd-s-vm02&quot;;Ref=&quot;gdctest2&quot;;» странно выглядит

ib=»Srvr=sd-s-vm02;Ref=gdctest2;»

   Vir_Rus

23 — 22.08.19 — 15:32

(20) Открывается

http://localhost:80/Hello если так — то доступ к базе будет из браузера

   Vir_Rus

24 — 22.08.19 — 15:35

(21) т.е. попробовать отредактировать этот файл? и написать там айпи вместо названия?

   Vir_Rus

25 — 22.08.19 — 15:36

(22) Во всяком случае, если бы дело было в этом — я бы не смог зайти в базу из браузера. Так что не думаю что проблема тут

   Йохохо

26 — 22.08.19 — 15:39

(23) открывается это именно текст из (24) виден в браузере?

   Vir_Rus

27 — 22.08.19 — 15:45

(26) Виден текст из (14) если из браузера переходить http://localhost/Hello/ws/Hello?wsdl

А (19) это содержимое файла default.vrd

   ptiz

28 — 22.08.19 — 15:57

(27) Команду: новый WSОпределения() выполняешь в какой базе? Файловая? Серверная? С какого компьютера?

А то ведь localhost будет доступен только с того компа, где апач.

   Vir_Rus

29 — 22.08.19 — 16:05

(28) новый WSОпределения() выполняю на своем ПК, на нем же стоит Апач. Базы серверные.

При выполнении данной команды получаю ошибку:

{ОбщаяФорма.ФормаОбмена.Форма(15)}: Ошибка при вызове конструктора (WSОпределения): При создании описания сервиса произошла ошибка. URL сервиса: http://localhost:80/Hello/ws/ws2.1cws?wsdl

Код ответа сервера: 500

У меня веб сервис основной забы подключен в ws-ссылки в «мобильной» базе. Из нее сразу создаю wsПрокси:

    Соединение = WSСсылки.WSСсылка1.СоздатьWSПрокси(«Obmen»,»Hello»,»HelloSoap»);

И получаю ошибку:

«{ОбщаяФорма.ФормаОбмена.Форма(26)}: Ошибка при вызове метода контекста (Приветствие): При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса:  {Obmen}:Hello:Приветствие(): При вызове веб-сервиса произошла ошибка. Ошибка HTTP:  HTTP Status 500 — Внутренняя ошибка сервера.

1C:Enterprise 8 application error:Ошибка при разборе дескриптора виртуальных ресурсовby reason: Файл не обнаружен ‘C:wwwdefault.vrd’. 2(0x00000002): Не удается найти указанный файл.»

   Vir_Rus

30 — 23.08.19 — 08:53

Возможно нашел причину возникновения ошибки…

Сейчас ради эксперимента выключил сервер апач и попробовал выполнить веб сервис. получил точно такую же ошибку.

Получается из 1с не виден сервер апача…

Потому что из браузера все работает нормально.

В чем может быть ошибка? Какие-нибудь права 1с-ке нужны?

   ptiz

31 — 23.08.19 — 09:03

(29) Замени наконец localhost на нормальное имя компьютера, или (ещё лучше) — IP-адрес.

   Vir_Rus

32 — 23.08.19 — 09:07

(31) Уже заменил на локальный адрес 127.0.0.1 — не помогло

   Василий Алибабаевич

33 — 23.08.19 — 09:08

(12) Иттить колотить….

Вы на полном серьезе считаете нормальным вот такой путь: Alias «/Hello» «C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/»

<Directory «C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/»>?

   Vir_Rus

34 — 23.08.19 — 09:08

я же говорю дело не в этом. я получаю одну и ту же ошибку когда апач запущен и когда он выключен. Следовательно по каким то причинам 1с не может достучаться до сервера апачЭ, на котором находится веб сервис…

   Vir_Rus

35 — 23.08.19 — 09:09

(33) переделал путь на c:/www/ — тут уже лежит веб сервис — результат не изменился…

   Василий Алибабаевич

36 — 23.08.19 — 09:10

+ (33) Тем более с учетом того, что в ошибке указан путь: ‘C:wwwdefault.vrd’ ЦЫ(28) ???

   Василий Алибабаевич

37 — 23.08.19 — 09:10

(35) Переделал как? Что изменял?

   ДенисЧ

38 — 23.08.19 — 09:11

А у тебя Апачу разрешено слушать какой-то адрес, кроме локохоста?

   Vir_Rus

39 — 23.08.19 — 09:12

(37) папку публикации веб сервиса и в конфиге апача строку documentsdirectory — вроде так она называется на путь «c:/www»

   ПускинАС

40 — 23.08.19 — 09:12

(1) Всегда нравилось, как умно работает определитель кода. Прямо в стиле 1с))) глаза рэжет ))) куль веб

   ПускинАС

41 — 23.08.19 — 09:16

(0) Поставь апач нормально, нормальный, и будет тебе ок.

   Василий Алибабаевич

42 — 23.08.19 — 09:20

(39) Вообще корень сайта в файле конфигурации прописывается в «DocumentRoot»

При этом :

1. Пути должны указываться в в стиле Линукса

не c:www, а c://www

2. Там не должно быть кириллицы и спецсимволов.

   Vir_Rus

43 — 23.08.19 — 09:20

(41) Так если б знал какой правильный и как правильно — ужеб давно сделал. а так делаю по видеоуроку или по статье какой-нибудь. все один в один, ну разве что только версии апача могут отличаться

   Василий Алибабаевич

44 — 23.08.19 — 09:25

+ (42)

Каталог с публикацией 1с (*.vrd) должен быть внутри того, что указано в DocumentRoot.

в LoadModule должен быть указан корректный путь к wsap22.dll или wsap24.dll (зависит какой апач)

Публикация должна быть указана в файле httpd.conf примерно так :

# 1c publication

Alias «/Prdp» «D:/###/Prdp/»

<Directory «D:/###/Prdp/»>

    AllowOverride All

    Options None

    Require all granted

    SetHandler 1c-application

    ManagedApplicationDescriptor «D:/###/Prdp/default.vrd»

</Directory>

после всех корректировок httpd апач должен быть перезагружен.

   Василий Алибабаевич

45 — 23.08.19 — 09:28

+(44) Если в httpd неправильно указан путь к wsap*.dll или юзеру, от имени которого запускается апач недостаточно прав на wsap*.dll служба не запустится. В журнале регистрации событий винды будет запись об ошибке.

Проверяй.

   Vir_Rus

46 — 23.08.19 — 09:49

(45) по логике, если из браузера все работает — значит все настройки сервера и публикация веб сервиса выполнены корректно. или не факт?

Есть факт, то почему из 1с не получается достучаться до апача?

   ptiz

47 — 23.08.19 — 09:51

(32) Где заменил? В создании ws-определения? И что будет делать 1С, если этот код запустится на сервере? К какому апачу стучаться?

   Василий Алибабаевич

48 — 23.08.19 — 09:51

(46) «если из браузера все работает» А это так?

И как в браузере можно определить работоспособность сервиса? Оно же в браузер ничего не пишет.

Удалось открыть файл? Ну так видимо настройка прав позволяет. Запиши туда же обычный текстовый файл и попробуй открыть из браузера.

   ПускинАС

49 — 23.08.19 — 09:54

https://www.apachehaus.com/cgi-bin/download.plx

вот норм.

распаковываешь с:Apache24

в конфиге пишешь Define SRVROOT «C:/Apache24» (38 строка примерно) httpd.conf

переходишь в

c:Apache24binhttpd.exe -k install (установка сервиса)

c:Apache24binhttpd.exe -к start (запуск)

и все ЁБА ! ! ) ) )

   ДенисЧ

50 — 23.08.19 — 09:56

(46) Потому что у тебя апач и сервер 1с лежат на разных компах. А в апаче не разрешено слушать что-то другое, кроме лохоста.

   ПускинАС

51 — 23.08.19 — 10:02

(50) кто тебе такую ересь сказал?

   ДенисЧ

52 — 23.08.19 — 10:24

(51) Покажи мне в конфиге Апача директиву Listen

Её там нет.

   ПускинАС

53 — 23.08.19 — 10:27

   Василий Алибабаевич

54 — 23.08.19 — 10:27

(52) Она там есть. Вот пример :

#

# Listen: Allows you to bind Apache to specific IP addresses and/or

# ports, instead of the default. See also the <VirtualHost>

# directive.

#

# Change this to Listen on specific IP addresses as shown below to

# prevent Apache from glomming onto all bound IP addresses.

#

#Listen 12.34.56.78:80

Listen 81

Только оно не зато отвечает куда может ходить подключаемый модуль. Даже подключаемых пыхпых может грузить свои инклюды из-за пределов документрут.

   ПускинАС

55 — 23.08.19 — 10:28

откуда вы все вылезли… из windows 95 ? )))

   ДенисЧ

56 — 23.08.19 — 10:29

(53) Это порт.

   ДенисЧ

57 — 23.08.19 — 10:30

А по дефолту апач слушает только локохост

   Василий Алибабаевич

58 — 23.08.19 — 10:34

(57) Апач слушает порт. Откуда оно там возьмется — ему не важно.

ИМХАется мне ты спутал расположение ДокументРута. Вот за него не скажу. Хотя у меня написано так :

# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory, but

# symbolic links and aliases may be used to point to other locations.

Настаиваю на : «but symbolic links and aliases may be used to point to other locations.»

   Василий Алибабаевич

59 — 23.08.19 — 10:36

В общем у ТС проблема не в том, где расположен ДокументРут, а в том что ТС этого и сам не знает.

   Йохохо

60 — 23.08.19 — 10:45

(46) откати все конфиги и сделай с нуля в отдельную папку

(59) на документрут плевать т.к.

Alias «/Hello» «C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/»

<Directory «C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/»>

   Йохохо

61 — 23.08.19 — 10:46

кстати под виндой слеша вроде не должно быть в конце Apache2.2/htdocs

   Vir_Rus

62 — 23.08.19 — 10:48

Все заново сделал но уже на сервере где стоит сервер 1с. заработало.

Всем спасибо

   Йохохо

63 — 23.08.19 — 10:49

так не интересно(

  

ptiz

64 — 23.08.19 — 12:16

(62) Ну правильно: локалхост с сервера 1С теперь стучится туда же, где апач (на нем же) :)

Ошибка 405 и 500 в HTTP сервисе 1С. Поиск и устранение.

Добрый день, хотел поделиться с вами результатом преодоления этих ошибок при работе с http сервисами 1С. С данной ошибкой мне пришлось столкнуться при переписывании мобильного приложения с web сервисов на http. Ошибка возникала при отправке http сервису POST запроса.

Ошибка 405

При работе с некорректным HTTP сервисом из мобильного приложения возвращалась ошибка 405, которая указывает на конкретную проблему. «405 Method Not Allowed — указанный клиентом метод нельзя применить к текущему ресурсу.» Долго не мог разобраться с данной ошибкой, так как в сервисе запрос был разрешен и шаблоны были настроены корректно.

Ошибка 500

При работе с некорректным HTTP сервисом из внешних программ возвращалась ошибка 500, которая ни о чем конкретном не говорит. «500 Internal Server Error — любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса».

Ошибка 500

Ошибка 405

Вроде HTTP сервис один, а при использовании запросов к нему из разных программ возвращались разные ошибки.

Расследование ошибок 405 и 500 в HTTP сервисе 1С

Времени на выяснение причин ушло очень много. За несколько дней до этой задачи мною были проведены десятки экспериментов по сборке и настройке web сервера apache 2.4 x64 SSL для работы с 1С. Все настройки в основном были связаны с кросс доменными запросами из web приложения на javascript. Столкнувшись с ошибками 405 и 500 на другом проекте я сразу полез в дебри конфигурации apache. После полного удаления apache поставил IIS и на нем вышла такая же ошибка. Поднял на виртуальной машине чистую систему, попробовал apache и iss, но ошибка так и проявлялась. Потом я вспомнил, что одна функция мобильного приложения уже давно использует http сервис и там все прекрасно работает. Создал http сервис с базовыми настройками и все заработало.

Ошибка 405

Как только я переносил код из web сервиса в функции http сервиса, сразу появлялись ошибки. Самое интересное, что отладка не срабатывала, т.е. POST запрос в пустую функцию приходил и отрабатывал, а в функцию с кодом нет.

Ошибка 405

На многих форумах ошибку 405 описывают как ошибку доступа, либо не корректную настройку http сервиса.

Итог разбора ошибок 405 и 500 в HTTP сервисе 1С.

В итоге все оказалось довольно просто. Функция, которая вызывалась внутри функции http сервиса 1с не могла быть вызвана из данного модуля. Странно, что при сохранении конфигурации никакой ошибки на вызов отсутствующей функции не было. Возможно это глюк версии платформы и будет доработан. При использовании web сервисов, даже если код внутри функции был не корректный, отладка работала. В http сервисе сразу идет возврат с ошибками 405 или 500.

P.S. В последней версии платформы ошибка 405 перестала выходить.

Обновление 12.01.2019

В процессе работы часто приходится сталкиваться с ошибками 405 и 500 в HTTP сервисах. Но проблема в 99% случаев в коде сервиса. Возможно это не явно, код вас может уводить глубоко в другие модули, но решение надо искать именно там.

Сейчас у меня такие ошибки начинают и в рабочих проектах. Стоит только внести небольшое изменение которое вызывает исключительную ситуацию, как вы получите ошибку 500. Мобильный клиент ведет себя еще более странно и отловить реальную ошибку очень тяжело, особенно когда переделывает чужие формы под мобильный клиент.

В данный момент я начинаю с того, что отключаю вызов всех функций и процедур начиная со входа в обработчики HTTP сервиса и смотрю как проходят запросы. Если все хорошо, то я начинаю включать код небольшими кусочками и проверять работу сервиса. Данный метод не самый быстрый, но дает 100% результат.

Если у вас остались вопросы, то вы можете задать мне их в социальных сетях или оставить комментарий ниже.

Проблема

Эта ошибка возникает после того как Вы опубликуете информационную базу на IIS. Вот она:

500 Error IIS

Причина и устранение ошибки

Вообще, надо понимать, что ошибка: Ошибка HTTP 500.0 — Internal Server Error говорит нам о том, что дело в самом web-сервере, а не в 1С. Это первое.
Второе. Сама ошибка в купе с 1С скорее всего означает, что Internet Information Services (оно же IIS) в 64-разрядной среде запрещен запуск 32-разрядных приложений. Чтобы успешно выполнить публикацию баз 1С на сервере IIS, необходимо в настройках диспетчера служб IIS разрешить запуск таких приложений.

Для этого выполните Win+R > inetmgr.exe. Далее, разверните «Локальный компьютер», в нем «Пулы приложений», щелкните правой кнопкой мыши по DefaultAppPool «Дополнительные параметры».

Разрешены 32-разрядные приложения

Изменив эту настройку и нажав «ОК» 1С начнет нормально работать.

Изображение автора статьи

Основатель и директор по развитию Софтонит. Практикующий руководитель разработки. Эксперт в области автоматизации техподдержки

В этой статье рассмотрим, как можно реализовать веб-сервис в расширении платформы 1С.

В качестве примера возьмем веб-сервис, позволяющий передавать информацию о клиентах из внешней CRM-системы во внутреннюю систему управленческого учета на «1С:Управление нашей фирмой».

Веб-сервис будет создан в расширении, чтобы сохранить конфигурацию на поддержке.

О чем эта статья

Материал статьи раскроет ответы на следующие вопросы:

  • Как работать с XDTO-пакетами?
  • Как создать веб-сервис и настроить его свойства?
  • Как опубликовать веб-сервис на сервере?

Постановка задачи

Компания ведет учет в типовом решении фирмы «1С:Управление нашей фирмой» (УНФ). Для управления взаимоотношениями с клиентами используется облачная CRM-система. В CRM-систему вводят информацию о новых клиентах. Необходимо реализовать перенос сведений о новых клиентах в УНФ сразу же при регистрации данных в CRM-системе.

Схема работы

Рисунок 1. Схема работы

Данные должны передаваться одним параметром (структурой). Спецификация данных, передаваемые из CRM в УНФ приведены в таблице 1.

Таблица 1. Требования к данным для обмена

Данные Имя cвойства Тип Ограничения
Полное наименование FullName Строка Обязательно для заполнения
ИНН INN Строка(12) Для ЮрЛица – длина 10
Для ИП – длина 12
Для ФизЛица – не заполняется
Допускаются только цифры
КПП KPP Строка(9) Для ЮрЛица – длина 9
Для ФизЛица – не заполняется
Допускаются только цифры
Телефон Phone Строка(12) Обязателен для заполнения
формат +7 (NNN) NNN-NN-NN

После создания контрагента в CRM-систему должен быть передан уникальный идентификатор. Идентификатор будет использоваться в дальнейшем для сопоставлении клиента в CRM и УНФ при обмене заказами. Необходимо реализовать описанный функционал без снятия УНФ с поддержки.

Обоснование выбора варианта решения

  1. Проанализируем требования. Добавлять клиентов надо «на лету», сразу же при вводе в CRM. Значит периодические обмены по расписанию нам не подходят.
  2. Выбранная CRM расположена в облаке, поэтому использовать COM-соединение не получится.
  3. В требованиях к передаваемым данным есть ограничения — на длину строк и на виды контрагентов. Выбирая между технологией обмена через http-сервисы и веб-сервисы, остановимся на веб-сервисах, так как типизация данных и настройка ограничений в них есть «из коробки». Дополнительным плюсом будет то, что веб-сервисы умеют «самодокументироваться», а значит мы экономим время на описании API для разработчиков CRM.
  4. Последнее требование — не снимать конфигурацию с поддержки.

Таким образом, для решения описанной задачи мы создадим расширение конфигурации. А в этом расширении реализуем веб-сервис для добавления информации о контрагентах.

Добавляем расширение

Начнем реализацию поставленной задачи и создадим новое расширение. Для этого откроем меню Конфигурация -> Расширения конфигурации.

Добавляем расширение

Рисунок 2. Добавляем расширение

В открывшемся окне жмем кнопку Добавить, а затем заполняем окно создания расширения.

Свойства нового расширения

Рисунок 3. Заполняем свойства нового расширения 

Префикс указывается для обеспечения уникальности расширений. Обычно в качестве префикса используют первые буквы названия компании или инициалы разработчика. Сохраним расширение, нажав ОК, а затем дважды щелкнем по строке расширения, чтобы его открыть.

Импортируем объекты метаданных

Теперь импортируем в расширение объекты для дальнейшей работы. Нам нужны:

  • Справочник Контрагенты
  • Справочник Виды контактной информации
  • Перечисление Типы контактной информации

Начнем со справочника Контрагенты. Выделим его в основной конфигурации и вызовем контекстное меню Добавить в расширение.

Импортируем справочник

Рисунок 4. Импортируем справочник

Затем добавим в расширение реквизиты справочника Контрагенты и табличную часть КонтактнаяИнформация.

В результате ветка Контрагенты в расширении должна выглядеть так:

Справочник «Контрагенты» в расширении

Рисунок 5. Справочник «Контрагенты» в расширении

После чего добавим в расширение перечисления ВидыКонтрагентов и ТипыКонтактнойИнформации.

Идем дальше. Из справочника ВидыКонтактнойИнформации нам нужно предопределенное значение ТелефонКонтрагента. Выдяем в дереве метаданных справочник ВидыКонтактнойИнформации и переходим по гиперссылке Предопределенные:

Предопределенные элементы справочника

Рисунок 6. Предопределенные элементы справочника

В ветке Контрагенты находим предопределенный элемент ТелефонКонтрагента.

Выбираем предопределенный элемент ТелефонКонтрагента

Рисунок 7. Выбираем предопределенный элемент ТелефонКонтрагента

Выполняем команду контекстного меню Добавить в расширение. В расширение добавляется справочник ВидыКонтактнойИнформации и его предопределенный элемент ТелефонКонтрагента.

Справочник «Виды контактной информации»

Элементы справочника «Виды контактной информации»

Рисунок 8. Справочник «Виды контактной информации» в расширении

С импортом объектов в расширение мы закончили. Теперь переходим к разработке веб-сервиса.

Как работают веб-сервисы

Веб-сервисы в 1C представляют собой реализацию протокола SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам). Архитектуру приложения на основе протокола SOAP можно представить в виде следующей схемы:

Архитектура приложений на основе протокола SOAP

Рисунок 9. Архитектура приложений на основе протокола SOAP

Общий принцип работы веб-сервиса можно описать так: мы создаем некий функционал, чтобы предоставить его сторонним разработчикам. Для того, чтобы этот функционал был им доступен, мы размещаем его на веб-сервере (публикуем). При публикации веб-сервиса происходит размещение его описания в формате WSDL (WSDL – Web Service Definition Language). Это описание стандартизовано и содержит описание методов веб-сервиса и типов данных, которые могут передаваться между сервисом и его клиентом. Клиент сервиса получает описание сервиса в виде WSDL-файла и может начать обмениваться данными в соответствии с этим описанием. Обмен происходит по протоколу HTTP, а сообщения передаются в теле HTTP пакетов в формате XML.

Особенность этой технологии состоит в том, что нам не нужно формировать XML и HTTP-пакеты вручную. Современные среды разработки, в том числе и 1С, позволяют работать с веб-сервисами в объектной технике.

Создаем XDTO-пакет

XDTO-пакеты описывают типы данных, которые будут использоваться при обмене. Потребителями веб-сервисов могут быть программы, написанные на разных языках, поэтому веб-сервис должен представить свои данные в виде примитивных типов (их описание во всех языках равнозначно). XDTO-пакеты позволяют привести типы 1С к типам, которые описаны в общемировом стандарте W3C. Кроме того, мы можем описать набор ограничений, применяемых к данным.

Приступаем к созданию XDTO-пакета для нашего веб-сервиса. В дереве метаданных расширения в ветке Общие -> XDTO-пакеты добавим XDTO-пакет ak_Customers. В URI пространства имен указываем http://kursy-po-1c.ru/ws/wsextension.

Это не ссылка на реальный адрес в интернете, а просто строка-идентификатор пространства имен, который помогает однозначно идентифицировать типы данных с одинаковыми именами. Например, программист Иванов определил тип данных Customer c двумя свойствами Name и FullName, а программист Петров определил свой тип Customer со свойствами Name, INN, KPP.

Чтобы не возникало путаницы и проблем с одинаковыми названиями типов, применяются пространства имен. Пространство имен и имя типа должны однозначно идентифицировать тип данных. При описании типов данных для веб-сервисов принято в качестве пространства имен использовать URI, содержащие доменное имя разработчика. Это позволяет сделать пространство имен уникальным.

Свойства XDTO-пакета

Рисунок 10. Свойства XDTO-пакета

Теперь жмем ссылку Открыть пакет и начинаем описывать типы данных.

Сначала опишем простые типы данных по которым нам нужно наложить ограничения. Это ИНН, КПП, Телефон.

ИНН по условиям задачи различается для ИП и для ЮрЛица.

Определим 2 простых типа: INN_IP и INN_UL. Для этого в форме редактирования пакета открываем меню Добавить -> ТипЗначения.

Добавляем тип значения в XDTO-пакет

Рисунок 11. Добавляем тип значения в XDTO-пакет

Заполняем свойства как на рисунке ниже:

Свойства типа значения INN_IP

Рисунок 12. Свойства типа значения INN_IP

Здесь мы указали имя типа INN_IP (ИНН для ИП) и определили для него ограничение — это должна быть строка длиной 12 знаков.

Обратите внимание, что для названий типов веб-сервиса нужно выбирать англоязычные имена. В дальнейшем они будут использоваться на стороне клиента для генерации классов, а с кириллицей где-то могут возникнуть сложности.

Теперь нам нужно задать ограничение: 12 знаков должны быть цифрами. Выделяем свойство INN_IP и вызываем меню Добавить->Образец:

Добавляем шаблона заполнения INN_IP

Рисунок 13. Добавляем шаблона заполнения INN_IP

Заполняем свойство образца шаблоном в виде регулярного выражения [0-9]{12}. То есть мы допускаем в значении 12 цифр от 0 до 9.

Шаблон заполнения INN_IP

Рисунок 14. Шаблон заполнения INN_IP

Подобные действия нужно произвести с INN_UL (ИНН юрлица) и KPP (КПП):

Рисунок 15. Добавляем типы значений и устанавливаем шаблоны

И для телефона (шаблон [+][7][ ][(][0-9]{3}[)][ ][0-9]{3}[-][0-9]{2}[-][0-9]{2}):

Рисунок 16. Типа значения Phone и шаблон его заполнения

Теперь перейдем к определению типов для данных о клиентах.

У нас есть три типа клиентов: Юрлицо, ФизЛицо и ИП.  Для всех типов клиентов правила заполнения ИНН и КПП отличаются. Можно сделать только один класс Customer и контроль заполнения ИНН и КПП производить программно, но удобнее это делать декларативно — чтобы уменьшить возможность ошибок. Мы создадим три комплексных типа: CustomerIP, CustomerUL и CustomerFL. Значения ИНН и КПП будем выбирать из ранее созданных типов значений.

Для создания клиента ФизЛицо выделим корень пакета и вызовем меню Добавить -> ТипОбъекта. В свойствах укажем следующие значения:

Рисунок 17. Свойства типа объекта CustomerFL

  • CustomerFL — это имя типа. Должно быть на английском.
  • ComplexType — базовый тип, аналогичный структуре.

Выделим тип объекта CustomerFL и вызовем меню Добавить->Свойство. Заполним в редакторе свойств значения:

Рисунок 18. Добавляем свойство FullName в тип объекта CustomerFL

  • FullName — имя свойства. Должно быть на английском.
  • Тип string — строковый тип.
  • Поле FullName должно быть обязательно заполнено указываем Возможно пустое — Ложь.

Таким же образом добавим свойства Phone и GUID.

Свойства типа объекта CustomerFL

Рисунок 19. Добавляем свойство Phone в тип объекта CustomerFL

Добавляем свойство GUID в тип объекта CustomerFL

Рисунок 20 Добавляем свойство GUID в тип объекта CustomerFL

Затем добавим тип объекта CustomerIP с такими же свойствами, как у CustomerFL, добавив новое свойство INN.

Добавляем свойство INN в тип объекта CustomerIP

Рисунок 21. Добавляем свойство INN в тип объекта CustomerIP

Дальше создадим тип объекта CustomerUL с такими же свойствами, как у CustomerIP. Добавим новое свойство KPP.

Добавляем свойство KPP в тип объекта CustomerUL

Рисунок 22. Добавляем свойство KPP в тип объекта CustomerUL

У свойства INN нужно изменить тип на INN_UL (http://kursy-po-1c.ru/ws/wsextension).

Добавляем свойство INN в тип объекта CustomerUL

Рисунок 23. Добавляем свойство INN в тип объекта CustomerUL

Мы завершили создание XDTO-пакета.

Новый XDTO-пакет

Рисунок 24. Новый XDTO-пакет

Переходим к разработке веб-сервиса.

Создаем веб-сервис

В ветке метаданных Общие выделяем ветку Web-Сервисы. Вызываем контекстное меню Добавить и заполняем свойства нового веб-сервиса:

Заполняем свойства веб-сервиса

Рисунок 25. Заполняем свойства веб-сервиса

  • Имя — ak_Customers
  • ПакетыXDTO — http://kursy-po-1c.ru/ws/wsextension. Теперь сможем использовать типы данных, которые определены этом пакете.
  • URI пространства — http://kursy-po-1c.ru/ws/wsextension. Пространство имен будет использоваться клиентами веб-сервиса.
  • Имя файла публикации — Customers.1cws. Имя будет использоваться в URL для получения WSDL.

Теперь добавим метод веб-сервиса, который будет записывать в УНФ нового контрагента-физлицо. Вызываем меню Добавить->Операция и заполняем свойства:

Свойства метода AddCustomerFL

Рисунок 26. Свойства метода AddCustomerFL

  • Имя — имя метода веб-сервиса. Будет использоваться при обращении к сервису извне.
  • Тип возвращаемого значения — тип данных, который возвращает сервис. В нашем случае это строка-уникальный идентификатор, который в будет возвращен в CRM.
  • Имя процедуры — имя процедуры в модуле сервиса, которая будет выполняться при обращении к этому методу.

Далее мы добавим параметры, которые будут передаваться в веб-сервис.

В нашем случае это один параметр — Customer. Для добавления параметра выделяем операцию веб-сервиса и вызываем контекстное меню Добавить->Параметр. В свойствах этого параметра заполняем свойства:

Свойства параметра Customer

Рисунок 27. Свойства параметра Customer

  • Имя — имя параметра метода сервиса. Будет виден на клиенте веб-сервиса.
  • Тип значения — тип значения, определенный в нашем пакете.

Добавим еще две операции:

  • AddCustomerIP
  • AddCustomerUL.

Можно сделать это копированием. Затем нужно поменять имена операций, имена процедур-обработчиков (AddCustomerIP и AddCustomerUL) и типы параметров. Для AddCustomerIP тип параметра установим CustomerIP, а для AddCustomerUL — CustomerUP.

Теперь нужно создать процедуры-обработчики методов сервиса.

  //Добавляем ФизЛицо
  Функция AddCustomerFL(Customer)
      Возврат ДобавитьКлиента(Customer, Перечисления.ВидыКонтрагентов.ФизическоеЛицо);
  КонецФункции

  //Добавляем ЮрЛицо
  Функция AddCustomerUL(Customer)
      Возврат ДобавитьКлиента(Customer, Перечисления.ВидыКонтрагентов.ЮридическоеЛицо);
  КонецФункции

  //Добавляем ИП
  Функция AddCustomerIP(Customer)
      Возврат ДобавитьКлиента(Customer, Перечисления.ВидыКонтрагентов.ИндивидуальныйПредприниматель);
  КонецФункции

  //Добавляем контрагента в базу УНФ
  Функция ДобавитьКлиента(Клиент, ВидКонтрагента)
      //Создаем нового контрагента и заполняем общие реквищиты
      НовыйКлиент = Справочники.Контрагенты.СоздатьЭлемент();
      НовыйКлиент.ВидКонтрагента = ВидКонтрагента;
      НовыйКлиент.Наименование = Клиент.FullName;
      НовыйКлиент.НаименованиеПолное = Клиент.FullName;
      НовыйКлиент.Покупатель = Истина;
      //Для ЮрЛица и ИП заполняем ИНН
      Если ВидКонтрагента <> Перечисления.ВидыКонтрагентов.  ФизическоеЛицо Тогда
        НовыйКлиент.ИНН = Клиент.INN;
      КонецЕсли;
      //Для ЮрЛица заполняем КПП
      Если ВидКонтрагента = Перечисления.ВидыКонтрагентов.ЮридическоеЛицо Тогда
          НовыйКлиент.КПП = Клиент.KPP;
      КонецЕсли;
      //Заполняем контактные данные
      Телефон = НовыйКлиент.КонтактнаяИнформация.Добавить();
      Телефон.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
      Телефон.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
      Телефон.НомерТелефона = Клиент.Phone;
      Телефон.Представление = Клиент.Phone;
  
    //Записываем клиента в базу
      НовыйКлиент.Записать();
      //Возвращаем ссылку в виде уникального идентификатора (GUID)
      Возврат XMLСтрока(НовыйКлиент.Ссылка);
  КонецФункции

Код простой и каких-то особых комментариев не требует.

Публикуем веб-сервис на сервере

Для публикации веб-сервиса должны быть установлены:

  • Веб-сервер (Apache или IIS)
  • Платформа 8.3.7 и выше с установленным расширением веб-сервера

О подготовке рабочего окружения можно прочитать в статье Как настроить обмен 1С с интернет-сервисами.

Для публикации веб-сервиса нужно запустить конфигуратор с правами администратора. Для этого вызываем контекстное меню и выбираем «Запуск от имени администратора»:

Запуск конфигуратора от имени администратора

Рисунок 28. Запускаем конфигуратор от имени администратора

После открываем меню Администрирование->Публикация на веб-сервере. В открывшемся окне заполняем настройки:

Публикация веб-сервиса

Рисунок 29. Публикация веб-сервиса

  • Имя — имя базы для публикации на сервере. Будет являться частью URL.
  • Веб-сервер — на нем будет опубликована база. В нашем случае используется Apache 2.4.
  • Каталог — место на диске, куда будет помещен default.vrd.
  • Публиковать веб-сервисы — отмечаем.
  • Публиковать веб-сервисы расширений по умолчанию — отмечаем, чтобы веб-сервисы были доступны из расширений.

Жмем Опубликовать.

Проверим, что веб-сервис опубликовался. Для этого запустим браузер и в адресной строке введем http://localhost/UNF/ws/Customers.1cws?wsdl. В результате в браузере должен отобразиться XML.

Проверяем работу веб-сервиса

Рисунок 30. Проверяем работу веб-сервиса

Если в вашей базе есть пользователи, то при обращении по указанной ссылке  будет запрошен логин и пароль. Нужно ввести логин и пароль администратора информационной базы.

Чтобы в дальнейшем не отвлекаться на пароли при изучении статьи (тему безопасности мы сознательно опускаем), откроем в текстовом редакторе файл default.vrd, (он лежит в каталоге, указанном при публикации). В него запишем логин и пароль в строке подключения: ib=”File=&quot;D:1CBaseUNF&quot;;usr=admin;pwd=12345;”. Логин, пароль и путь должны быть от вашей базы 1С.

Тестируем веб-сервис

Для проверки работоспособности сервера можно создать отдельную базу 1С и добавить в ней обработку ТестВебСервера со следующими реквизитами:

  • FullName, строка(100)
  • INN, строка(12)
  • KPP, строка(9)
  • Phone, строка(20)

Реквизиты выводим на форму и добавляем три кнопки:

  • Создать ФизЛицо
  • Создать ЮрЛицо
  • Создать ИП.

Обработка для проверки веб-сервиса

Рисунок 31. Обработка для проверки веб-сервиса

В модуле формы напишем такой код:

  //1. Обработчики кнопок
  //Обработчик кнопки СоздатьФизЛицо
  &НаКлиенте
  Процедура СоздатьФизЛицо(Команда)
      СоздатьКлиентаНаСервере("CustomerFL");
  КонецПроцедуры

  //Обработчик кнопки СоздатьИП
  &НаКлиенте
  Процедура СоздатьИП(Команда)
      СоздатьКлиентаНаСервере("CustomerIP");
  КонецПроцедуры

  //Обработчик кнопки СоздатьЮрЛицо
  &НаКлиенте
  Процедура СоздатьЮрЛицо(Команда)
      СоздатьКлиентаНаСервере("CustomerUL");
  КонецПроцедуры

  //Создание клиента
  &НаСервере
  Процедура СоздатьКлиентаНаСервере(ТипКлиента)
      //2. Получаем описание сервиса
      ВСОпределение = Новый WSОпределения("http://localhost/UNF/ws/Customers.1cws?wsdl");
      //3. Создаем прокси для обращения к сервису
      Прокси = Новый WSПрокси(ВСОпределение, "http://kursy-po-1c.ru">kursy-po-1c.ru/ws/wsextension", "ak_Customers", "ak_CustomersSoap");
      //4. Получаем тип клиента по URI пространству имен и имени типа
      ТипКлиент = Прокси.ФабрикаXDTO.Тип("http://kursy-po-1c.ru">kursy-po-1c.ru/ws/wsextension", ТипКлиента);
      //5. Создаем XDTOОбъект заданного типа
      Клиент = Прокси.ФабрикаXDTO.Создать(ТипКлиент)      ;
      //6. Заполняем данные Клиента данными, введенными в форме
      ЗаполнитьЗначенияСвойств(Клиент, Объект);
      //7. В зависимости от типа клиента вызываем соответствующий метод веб-сервиса
      Если ТипКлиента = "CustomerFL" Тогда
          Объект.GUID = Прокси.AddCustomerFL(Клиент);
      ИначеЕсли ТипКлиента = "CustomerIP" Тогда
          Объект.GUID = Прокси.AddCustomerIP(Клиент);
      ИначеЕсли ТипКлиента = "CustomerUL" Тогда
          Объект.GUID = Прокси.AddCustomerUL(Клиент);
      КонецЕсли;
  КонецПроцедуры

Прокомментируем код:

  1. В обработчиках кнопок вызываем процедуру СоздатьКлиентаНаСервере() и передаем название типа клиента в виде строки.
  2. Получаем WSDL-описание веб сервиса, опубликованного по указанному в параметрах URL. На основании него создается объект WSОпределение.
  3. Создаем объект Прокси для работы с сервисом. Он позволяет обращаться к веб-сервису, вызывая его методы в привычном объектном стиле. В качестве параметров передаем WSОпределение сервиса, созданное на предыдущем шаге, пространство имен веб-сервиса, имя веб-сервиса и точку подключения. Имя точки подключения формируется путем добавления к имени сервиса суффикса Soap (так формирует WSDL 1C).
  4. Получаем тип клиента по URI пространства имен.
  5. На основании типа клиента, полученного на предыдущем шаге, создаем XDTOОбъект Клиент. По структуре этот объект будет соответствовать структуре типа, который мы определяли в нашем XDTO-пакете.
  6. Заполняем значения реквизитов клиента данными, введенными в форме;
  7. В зависимости от переданного в процедуру типа клиента, мы вызываем разные методы веб-сервиса. «Под капотом» этого вызова произойдет сериализация данных в XML, валидация XML, формирование HTTP пакета и отправка его на сервер.

С этой обработкой можно поэксперементировать. Попробуйте создавать клиентов разных типов, введя корректные данные и некорректные. Если вы попытаетесь ввести в ИНН буквы или заполнить телефон, не соблюдая формат, то появится окно ошибки.

Итак, в данной статье мы познакомились с возможностями платформы по разработке веб-сервисов без снятия конфигурации с поддержки. Создали расширение, импортировали в расширение нужные нам объекты метаданных и описали модель данных для обмена. Создали и опубликовали веб-сервис. Написали обработку на 1С для проверки работоспособности этого сервиса.

На этом пока закончим, но не остановимся :-)

Об авторе

Автор статьи – Алексей Дубровин, г. Челябинск

E-mail: dubrovin1973@gmail.com

Нужно быстро разобраться в работе расширений?

Чтобы быстро и полностью освоить все возможности расширений, рекомендуем пройти наш учебный курс Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки.

Понравилась статья? Поделить с друзьями:
  • 1с mshta exe ошибка обновления
  • 1с linux ошибка при создании информационной базы
  • 1с linux ошибка открытия файла блокировок
  • 1с iis ошибка 503
  • 1с iis ошибка 401