Возникла потребность при работе с Альфа авто реализовать при формировании заказа на сайте в 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 80
Listen 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 сервиса.
Ошибка "Поле объекта не обнаружено (Тело)"
-
Используйте
Запрос.ПолучитьТелоКакСтроку()
, если тело запроса передается в виде строки
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.71.63