# Расширение HTTPServices для конфигурации ЕМП Расширение 1С. Базовая заготовка для реализации HTTP сервисов на базе конфигураций 1С, в частности, данное расширение создано для конфигурации "ЕМП". В данном расширении помимо конструктива и методов работы HTTP сервиса, реализован HTTP сервис API CSM, позволяющий при помощи POST запросов реализовывать поставку данных для виджета "Проверка статуса Заказа" на стороне любого сайта. ## С чего начать? 1. Клонировать или скачать файлы данного репозитория. 2. Внимательно ознакомиться с данной инструкцией, ПРОЧЕСТЬ ЕЕ. 3. Пошагово выполнить подготовку и внедрение, в соответствии с рекомендациями данной инструкции. ## Содержание и описание файлов - **README.MD** - Непосредственно этот файл, который является инструкцией и описанием всего проекта и расширения. - **.\extensions\HTTPServices.cfe** - файл расширения, который нужно добавить в рабочую базу 1С ЕМП. - **.\HTTPServices\emp\default.vrd** - файл настроек публикации и подключения HTTP сервиса на стороне веб сервера Apache. - **.\HTTPServices\statusform** - папка с файлами виджета, которую нужно настроить и перенести на сторону каталога сайта. - **.\HTTPServices\statusform\action.php** - файл обработка, производит непосредственный запрос на сторону нашего веб сервера, для связи с HTTP сервисом. В этом файле нужно указать внешний путь к опубликованному сервису. - **HTTPServises\apache.conf** - файл-вырезка с блоком настроек на стороне веб сервера Apache, для реализации публикации HTTP сервиса во вне. То, что нужно будет добавить в свой файл конфигурации. ## Источники вдохновения, основа кода расширения, и чтиво для понимания. (ссылки). Практически все было взято с этих двух проектов, в той или иной вариации - [Учимся создавать http-сервисы ч.1](https://infostart.ru/1c/articles/1293341/) - [Учимся создавать http сервисы ч.2. Передача параметра в http сервис](https://infostart.ru/1c/articles/1296740/) - [Учимся создавать http сервис ч.3. Передача нескольких параметров в http сервис](https://infostart.ru/public/1303368/) - [Учимся создавать http сервис ч.4. Изучение метода POST http запроса (передача текстовых данных)](https://infostart.ru/1c/articles/1307941/) - [HTTP Сервисы: Путь к своему сервису. ч.1](https://infostart.ru/1c/articles/842751/) - [HTTP Сервисы: Путь к своему сервису. ч.2](https://infostart.ru/1c/articles/885287/) - [HTTP Сервисы: Путь к своему сервису. ч.3](https://infostart.ru/public/886103/) - [HTTP Сервисы: Путь к своему сервису. ч.4](https://infostart.ru/1c/articles/893304/) ## Приступаем к внедрению Нам понадобятся: 1. Сервер 1С Предприятия с установленными на нем web компонентами. 2. Apache 2.4 3. Сайт на любом движке, главное чтоб понимал и работал с PHP и JS. ### Добавляем расширение в боевую конфигурацию Расписывать данный шаг не буду, так как считаю, что исчерпывающей информации на просторах рускоязычного интернета, более чем достаточно. Скажу только то, что я предпочитаю это делать через "Конфигуратор", а кто-то это любит делать, через интерфейс конфигурации и функции Администрирования. Выбор за вами. Обозначу только то, что после добавления расширения, нужно корректно выставить галочки допусков его работы. См.скрин ниже. ![pic](./files/httservice-setup.jpg) После перезахода пользователей в базу, расширение будет готово к работе. ### В базе добавляем отдельного пользователя 1С Пользователь нужен с полными правами, чтоб от его имени сервис делал запросы и получал данные, которые будет далее перенаправлять на сайт. Ставим этому пользователю ХОРОШИЙ пароль и убираем его из списка авторизации. У меня для этого заведен пользователь **UserWebService** с ОЧЕНЬ длинным и сложным паролем. ### Теперь готовим web сервер. Чтоб все заработало, нам нужен web сервер готовый к публикации баз и сервисов 1С. В рекомендациях от 1С, это или IIS, или Apache. В нашем случае используем второй, так как он проще, легче и менее требователен. Рекомендую отдельную внешнюю установку web сервера в пределах отдельной ноды. Хотя можно установить и непосредственно, на ноду с установленным сервером 1С Предприятия. Это в какой-то мере упростит установку и настройку. В моем случае, в качестве сервера выступает linux станция. На данном сервере, помимо Apache ставим серверную часть платформы 1С. За деталями и подробностями, в ГуглЯшу, поскольку это выходит за рамки данного проекта. После чего приступаем к редактированию конфигурационного файла Apache: apache.conf . В него нужно внести данные о каталоге, где будет располагаться настроечный файл соединения с базой 1С и прописать модуль-библиотеку, чтоб наш Apache мог общаться с 1С. Часть конфига, который нужно внести в рабочий конфиг Apache, я с комментариями приводу ниже: ``` #То что нужно добавить в ваш конфиг #Apache чтоб опубликовать базу 1С. # 1c publication Alias "/emp" "/var/www/emp/" AllowOverride All Options None Require all granted SetHandler 1c-application ManagedApplicationDescriptor "/var/www/emp/default.vrd" # # !ОБЯЗАТЕЛЬНО! прописываем в строке ниже #путь к установленной библиотеке 1С # Релиз установленного 1С в Apache должен #совпадать с релизом платформы #установленной на сервере 1С LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.20.1996/wsap24.so" ``` То есть мы внесли в конфиг, что настроечный файл соединения будет лежать в папке /var/www/emp и обратится к нему можно будет по алиасу /emp. Теперь переходим в папку публикации, в нашем случае /var/www и создаем в ней папку emp, куда переносим файл default.vrd. В этом файле описана структура соединения с базой 1С, в формате понятном серверу 1С. Ниже текстовка этого конфига: ``` ``` Небольшие пояснения к этому конфигу: **YourServer1C** - Имя сервера 1С в вашей сети. **NameBase1C** - Имя базы в кластере 1С. **UserForService** - Пользователь от имени которого будет производиться вход в базу, во время работы сервиса. **SecretPassword** - Длинный и сложный пароль пользователя 1С. Конфиг составлен так, чтоб под обозначенным пользователем можно было только обратиться к HTTP сервису базы 1С. Интерактивного входа в базу сделать не получится. Но дополнительно включены разделы отладки и аналитики. После того, как конфиг публикации положили в нужное место, предварительно отредактировав его под себя, идем в /etc/hosts или в файл hosts на windows, в зависимости от того, где развернут Apache, и в файл вносим строку с определением адреса и имени сервера 1С. Если у вас сервер 1С и web сервер на разных нодах. ``` ip.adress.you.server name-you-server ``` После всего проделанного перезапускаем web сервер. На нашей стороне все готово. ## Финальный шаг. Публикуем виджет. - Переносим папку виджета вместе со всем содержимым на сайт. - В папке виджета есть файл action.php, в него нужно внести внешний путь к вашему web серверу и публикации, с указанием метода который запрашиваем. - Теперь в нужном месте и на нужных страницах можно сделать ссылки или кнопку ведущую на страницу index.php из списка файлов виджета. ## Готово. Наслаждаемся работой виджета. ***