Обмен с сайтом: POST запрос и создание счета, с возвратом его номера в ответе
Пошаговый пример обмена с сайтом путем POST запроса и создания счета, с возвратом его номера в ответе с описанием некоторых ошибок, и обработка с примерами get и post запроса.
- Описание
- Подробнее
Описание
Возникла потребность при работе с Альфа авто реализовать при формировании заказа на сайте в 1С создавать новый документ и возвращать его номер на сайт, для формирования счета на оплату клиенту, соблюдая сквозную нумерацию в Альфе.
Ниже пример настройки обмена с нуля с использованием Апач, по справочнику номенклатура.
При необходимости донастроить json под свои нужды и опубликовать не локально, чтобы можно было получить доступ извне.
В модуле http сервиса пишем максимально мало — желательно только вызов процедуры с общего модуля, на этом моменте глючит часто.
Ставим другой порт, не стандартный, для безопасности.
Также авторизацию через логин + пароль или токен.
В обработке пример get и post запроса + формирование json и заполнение в 1С. Освещу некоторые моменты:
АдресРесурса = "/InfoBase/hs/products/Create_DOC/";
Например — база опубликована под именем InfoBase, products — имя http сервиса, Create_DOC — имя метода.
Настройка и публикация веб-сервиса 1С на Apache с тестированием через Postman
1. Установка веб-сервера Apache
Для работы веб-сервиса на 1С потребуется веб-сервер. Рассмотрим установку Apache.
1.1 Установка Apache на Windows
Скачать Apache
Перейдите на https://www.apachelounge.com/ и загрузите последнюю версию.Распаковать и настроить
Распакуйте архив в
C:\Apache24Перейдите в
C:\Apache24\conf\httpd.confи откройте его в блокноте.Найдите строку и измените:
Listen 80Listen 8080(или другой порт, если 80 уже занят — полезно для безопасности сервера).
Запуск Apache
Открываем командную строку (
cmd) от имени администратора.Переходим в каталог Apache:
cmd
cd C:\Apache24\binЗапускаем сервер:
cmd
httpd.exe -k startПроверяем работу: откройте браузер и введите
http://localhost:8080/– должна отобразиться стандартная страница Apache.
2. Публикация веб-сервиса 1С
Теперь настроим веб-сервис на стороне 1С.
2.1 Включение веб-сервисов
Открываем Конфигуратор 1С.
Переходим в Администрирование → Поддержка и обслуживание → Параметры веб-сервера.
Включаем поддержку HTTP-сервисов. — убеждаемся что наш сервис с галочкой.
2.2 Публикация конфигурации
В Конфигураторе переходим в меню Администрирование → Опубликовать на веб-сервере.
Указываем:
Каталог публикации:
C:\Apache24\htdocs\1cАдрес публикации:
http://localhost:8080/1c
Нажимаем ОК, ждем завершения публикации.
3. Настройка обработчика в 1С
Теперь создадим HTTP-сервис для приема POST-запросов.
3.1 Создаем общий модуль
В конфигурации создаем Общий модуль
HTTPОбработчики выставляем ему Серверный, Внешний вызов.Вставляем код обработки запроса:
Процедура ОбработатьPOST(Запрос, Ответ) Экспорт Ответ = Новый HTTPСервисОтвет(200);
ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку(); // Разбираем JSON Чтение = Новый ЧтениеJSON; Чтение.УстановитьСтроку(ТелоЗапроса);
Данные = ПрочитатьJSON(Чтение, Ложь);
Если ТипЗнч(Данные) = Тип("Массив")
Тогда Данные = Данные[0]; // Берем первый элемент массива может прислать структуру - тогда ОК
КонецЕсли; // Создаем новый элемент справочника "Номенклатура"
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = Данные.Наименование;
НовыйЭлемент.Код = Данные.Код;
НовыйЭлемент.Записать(); // Формируем ответ
РезультатJSON = Новый Структура;
РезультатJSON.Вставить("ID", НовыйЭлемент.Ссылка.УникальныйИдентификатор());
РезультатJSON.Вставить("Наименование", НовыйЭлемент.Наименование);
РезультатJSON.Вставить("Код", НовыйЭлемент.Код);
Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8"); Ответ.УстановитьТелоИзСтроки(ЗаписатьJSON(РезультатJSON));
КонецПроцедуры3.2 Создаем HTTP-сервис
Создаем новый HTTP-сервис (
СервисPOST).Добавляем метод ОбработатьPOST и связываем его с модулем
HTTPОбработчик.ОбработатьPOST.Публикуем.
4. Тестирование через Postman
Открываем Postman.
Создаем новый POST-запрос к:
http://localhost:8080/1c/hs/ServicePOST/В Body (raw, JSON) вставляем:
json
{ "Наименование": "Тестовая номенклатура", "Код": "12345" }Нажимаем Send.
В ответе получим JSON:
json
{ "ID": "a1b2c3d4", "Наименование": "Тестовая номенклатура", "Код": "12345" }
5. Решение возможных проблем
Ошибка 405 (Method Not Allowed)
Убедитесь, что метод POST разрешен в Apache. В
httpd.confдобавьте:<Directory "C:/Apache24/htdocs/1c"> Options Indexes FollowSymLinks AllowOverride None Require all granted <LimitExcept GET POST> Deny from all </LimitExcept> </Directory>Перезапустите Apache.
Ошибка 500 (Ошибка сервера 1С)
Проверьте, что код модуля обработчика компилируется без ошибок.
Проверьте Права пользователя 1С – он должен иметь права на создание элементов справочника и использование свежесозданного http сервиса.
Ошибка "Поле объекта не обнаружено (Тело)"
Используйте
Запрос.ПолучитьТелоКакСтроку(), если тело запроса передается в виде строки

