Расширение 1С. Базовая заготовка для реализации HTTP сервисов на базе конфигураций 1С, в частности для конфигурации "ЕМП". В данном расширении помимо конструктива и методов работы HTTP сервиса, реализован сервис API CSM. Далее в Readme.md
Go to file
Алексей Валентинович Жебриков 228688f8e8 Удалил исходное расширение из папки. Оставил только сырье. 2022-12-22 10:04:20 +09:00
HTTPServices Доработал ридми. Добавил каталоги настроек сервиса на внутреннем веб сервере и каталог с файлами виджета. 2022-08-31 17:34:03 +09:00
extensions Выложил расширение HTTPServices и CONTRIBUTING.md 2022-09-02 17:57:52 +09:00
files Дописываю ридми 2022-08-31 18:20:58 +09:00
src/HTTPServices 123 2022-12-22 10:02:14 +09:00
CONTRIBUTING.md Выложил расширение HTTPServices и CONTRIBUTING.md 2022-09-02 17:57:52 +09:00
README.md Исправил ошбки 2022-09-05 13:40:06 +09:00

README.md

Расширение HTTPServices для конфигурации ЕМП

Расширение для 1С. Базовая заготовка для реализации HTTP сервисов на базе конфигураций 1С, в частности, данное расширение создано для конфигурации "ЕМП". В данном расширении помимо конструктива и методов работы HTTP сервиса, реализован HTTP сервис CSM-API, позволяющий при помощи POST запросов реализовывать поставку данных. В рамках сервиса реализован метод StatusDoc для виджета "Проверка статуса Заказа" на стороне любого сайта. Важно заметить, что на вход метода подается JSON конструкция, содержащая информацию по контрагенту и интересующих клиента документах. В качестве списка документов можно передавать как номера заказов, так и номера счетов. Ответом со стороны метода и сервиса будет JSON конструкция содержащая информацию по искомым документам. В работе метод проверяет форму контрагента, юр./физ. лицо. Для юр.лица нужно обязательно указать ИНН. При поиске документов по номерам, ведется проверка соответствия ИНН и формы контрагента. Чужие документы посмотреть не получится. Для физ.лица нужно четко знать номера документов, для юр.лица нужно помимо точного соответствия номеров, еще и предоставить ИНН контрагента указанного в документах.

В планах:

  • Доработать метод, до варианта, когда под каждым заказом будет выводиться его содержимое. При условии, что Заказ оплачен и завершен.
  • В каждой строке расшифровке сделать кликабельную ссылку, ведущую на портал Аршин, для просмотра результатов поверки.
  • Реализовать дополнительные методы, по запросу клиентов.

С чего начать?

  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 сервиса во вне. То, что нужно будет добавить в свой файл конфигурации.

Источники вдохновения, основа кода расширения, и чтиво для понимания. (ссылки). Практически все было взято с этих двух проектов, в той или иной вариации

Приступаем к внедрению

Нам понадобятся:

  1. Сервер 1С Предприятия с установленными на нем web компонентами.
  2. Apache 2.4
  3. Сайт на любом движке, главное чтоб понимал и работал с PHP и JS.

Добавляем расширение в боевую конфигурацию

Расписывать данный шаг не буду, так как считаю, что исчерпывающей информации на просторах рускоязычного интернета, более чем достаточно. Скажу только то, что я предпочитаю это делать через "Конфигуратор", а кто-то это любит делать, через интерфейс конфигурации и функции Администрирования. Выбор за вами. Обозначу только то, что после добавления расширения, нужно корректно выставить галочки допусков его работы. См.скрин ниже. pic После перезахода пользователей в базу, расширение будет готово к работе.

В базе добавляем отдельного пользователя 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/"
<Directory "/var/www/emp/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "/var/www/emp/default.vrd"
</Directory>
#

# !ОБЯЗАТЕЛЬНО! прописываем в строке ниже 
#путь к установленной библиотеке 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С. Ниже текстовка этого конфига:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
		xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		base="/emp"
		ib="Srvr=YourServer1C;Ref=NameBase1C;usr=UserForService;pwd=SecretPassword" enable="false">
		<debug enable="true"
		url="YourServer1C"/>
	<standardOdata enable="false"
			reuseSessions="autouse"
			sessionMaxAge="20"
			poolSize="10"
			poolTimeout="5"/>
	<analytics enable="true"/>
	<httpServices>
		<service name="HS_CSM_API"
		rootUrl="CSM-API"
		enable="true"/>
	</httpServices>
</point>

Небольшие пояснения к этому конфигу:

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 серверу и публикации, с указанием метода который запрашиваем. На пример: http://web.newcsm.ru/emp/hs/CSM-API/StatusDoc Где /emp - это опубликованная база, /hs - это обращение к опубликованым в базе http сервисам, /CSM-API - это наш http сервис, у которого мы запрашиваем метод /StatusDoc. В моем же случае, я длиную часть адреса, спрятал от посторонних глаз в конфиге NGINX, и снаружи этот адрес стал выглядеть как http://web.newcsm.ru/StatusDoc
  • Теперь в нужном месте и на нужных страницах можно сделать ссылки или кнопку ведущую на страницу index.php из списка файлов виджета.

Готово. Наслаждаемся работой виджета.