IE2017

Ошибка 405 или 500 в HTTP сервисе 1С

Обмен - Интеграция с WEB

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

Почему 2 ошибки:

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

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

Расследование.

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

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

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

Итог.

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

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

См. также

Комментарии
1. Danil (Danila-Master) 76 14.02.17 14:51 Сейчас в теме
Что за программа на скрине?
2. Илья Низамов (Region102) 44 14.02.17 20:49 Сейчас в теме
3. Danil (Danila-Master) 76 15.02.17 06:27 Сейчас в теме
4. Арман Бегов (Dream_kz) 15.02.17 19:24 Сейчас в теме
Можно узнать, какие были предпосылки перехода с web-сервисов на http?
5. Илья Низамов (Region102) 44 16.02.17 06:09 Сейчас в теме
(4) Для меня они более прозрачны в использовании, упрощается использование платформы в качестве backend.
6. Кирилл Власов (neikist) 16.02.17 07:49 Сейчас в теме
Кстати, бывают ситуации когда методы Получить и ОтправитьДляОбработки возвращают 405 (или 500, не помню) ошибку, а ВызватьHTTPМетод("GET"|"POST") отрабатывает корректно. С чем связано - непонятно, особо не разбирался, в тот момент не до того было. А где был расположен метод который вызывался из модуля сервиса?
7. Сергей Галюк (dj_serega) 250 16.02.17 10:13 Сейчас в теме
Без обидняков, но я не понял о чем статья :-))

Были и 405е и 500е ошибки. Но что бы долго сидеть то нет. Все решалось быстро.

Если в настройках конфигуратора правильно выставить флажки на проверке модулей то и все ошибки при сохранении/обновлении "вываливаются".

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

upd: а текст ошибки "Ошибка инициализации модулей" может "выскочить" и при COM-обмене с другой базой. Пример: В модуле менеджера нельзя "юзать" глобальные процедуры/функции. Но при этом в тонком клиенте все ок.
8. Илья Низамов (Region102) 44 16.02.17 13:06 Сейчас в теме
(7) Долго сидеть пришлось так как я настраивал кросс доменные запросы к 1С и думал, что ошибка там. В интернете при этих ошибках описываются совсем другие симптомы. Отладка http включена и она не отрабатывает если модуль не корректный, просто валится ошибка 405 или 500. На всех формах по ошибке 405 посылают смотреть конфиги web сервера или настройку http сервиса. Эта статья не для гуру web разработки. Думаю большинство посетителей этого сайта сходу не знают куда копать при этих ошибках. Галочки на проверку модулей я выставлять умею ), где что юзать можно и нельзя написано в справке. В моем конкретном случае все галочки стояли, не было расширенной проверки, а конфигуратор не указывал на ошибку. Воспроизвести ошибку точно сейчас не могу, статья написана спустя пол года.
9. Сергей Галюк (dj_serega) 250 17.02.17 09:57 Сейчас в теме
(8)
, не было расширенной проверки

Ага... Я уже настроился всегда ее ставить. Иногда проверка выполняется с задержкой но результат однозначно есть.

Когда я разбирался с глобальными функциями то ушло на анализ часов 8. Обмен "валился" из-за того что COM-обмен анализирует все модули менеджера документов.

В итоге кто-то найдет эту тему и почитает комменты найдет ответ ;) Так что спасибо :)
Оставьте свое сообщение