HTTP В 1С ДЛЯ НАЧИНАЮЩИХ
КУРС 1С

НАУЧИСЬ РАЗРАБАТЫВАТЬ HTTP СЕРВИСЫ В 1С ЧЕРЕЗ 3 ЧАСА

  • В теоретическом блоке я подробно объясню, что такое HTTP протокол, для чего он нужен, где применяется.
  • На практике развернем локальный web сервер, установим программу для формирования HTTP запросов и перехвата HTTP запросов от любых программ.
  • Разработаем HTTP сервис 1С, который будет отвечать на входящие запросы и отдавать данные в виде строки, xml, json и двоичных данных.
  • Научимся формировать HTTP запросы из 1С к внешним сервисам. Посмотрим разные виды аутентификации.
  • На примере api telegram разработаем чат бота, который будет присылать сообщения из чата прямо в 1С с использованием web хуков.
Опубликовано: 16 февраля 2018 г.

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

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

Ошибка 405

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

Ошибка 500

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

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

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

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

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

На многих форумах ошибку 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% результат.

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