Обработка POST запросов 1С в связке с Apache

13.08.14

Администрирование - Администрирование веб-серверов

Обработка POST запросов 1С в связке с Apache для тех, кто хотел бы получить некоторые практические советы.

Скачать исходный код

Наименование Файл Версия Размер
POST.zip
.zip 0,66Kb
32
.zip 0,66Kb 32 Скачать

Приветствую всех читателей infostart’a. Данная статья будет посвящена интересному вопросу обработки POST запросов средствами 1С и HTTP– сервера Apache.

Особенности задачи.

Однажды предо мной встала задача обеспечить обработку POST запросов средствами 1С. То есть 1С должна была принять POST запрос, обработать его, выполнить запись в базу определенной информации и вернуть ответ на запрос в виде XML. Это популярная тема в свете различных терминальных платежей и платежей через интернет. До этого такими задачами я не занимался. Сразу скажу, что база 1С работала в обычном приложении, версия 1С 8.2 файловый вариант. Кроме того было выставлено ограничение, а именно: база 1С не должна быть видна извне.

Поиск необходимой информации.

Сначала решил собрать информацию об этом вопросе в интернете. Оказалось, что полезной информации очень мало, к тому же я был новичок в данной теме и некоторые вещи мне были не понятны. Вот что удалось выяснить.

Основная проблема 1С в том, что она одновременно может обрабатывать только один POST запрос. Поясню подробней. Если, например, придет POST запрос и 1С начнет его обрабатывать и что-то там записывать в базу, то запрос,пришедший в это время, пока 1С обрабатывает предыдущий, будет проигнорирован вообще. Это никуда не годилось. Нашел платную обработку, которая к тому же требовала наличия MSNetframework4. Она позволяла обрабатывать несколько запросов одновременно, в порядке очереди, но количество таких запросов было невелико, что-то 4-5. Данный вариант был не приемлем, т.к. объяснения принципа работы были мне не очень понятны и я не знал, поможет ли мне это решить техническое задание, поэтому я решил с ней не связываться. К тому же смущало наличие MSNetframework 4. И я, на самом деле, не знал, насколько это надежно сточки зрения безопасности. А безопасность – выставлялось как основное условие.

В интернете было много информации, как 1С отправляет POST запросы и получает ответы в виде XML, но вот как 1С приминает POST запросы - ничего не нашел. Чтение справки самой 1С также не прояснили ситуацию. Также меня волновал вопрос безопасности. Как сделать, чтобы 1С была невидна извне и при этом обрабатывала запросы. Смущало еще и то, что 1С не могла обрабатывать несколько запросов одновременно. После нескольких дней обдумывания родилась схема реализации данной задачи.

Решение задачи.

Ища на просторах интернета нужную информацию, я определил для себя, что на самом деле уже есть программы, которые умеют обрабатывать POST запросы очень хорошо. Это HTTP – сервера. К тому же они бесплатны, что немаловажно. Я остановился на Apache. Осталось только придумать, как связать 1С и Apache. Собственно схема, придуманная мной, была такой. POST запрос принимает Apache, обрабатывает,сохраняет в виде txt файла и кладет его в папку, которая расшарена (видна в локальной сети). 1С,соответственно, с периодичностью 1 раз в секунду проверяет эту папку на наличие такого файла, и, найдя его, обрабатывает и возвращает XML ответ. Оговорюсь,что XML ответ – это обычный файл в формате xml. Я это подчеркиваю, т.к. что такое POST запрос, мне было понятно, а вот что такое XML ответ, я сразу понял. Надеюсь, гуру php не будут смеяться. А вот новичкам этого дела – это очень полезная информация. Осталось самое «простое», реализовать задуманное, и я принялся за дело.

Я имел только общие понятие о скриптах php, которые и обрабатывал Apache. Осмотр команд php показал, что в принципе, ничего сложного нет, а все команды ориентированы под нужды интернет сервера. Нужно было написать скрипт php,который создает txt файлы и «подсовывает» их в нужную папку. Это было успешно сделано (пример скрипта с комментариями можно скачать).

Удаление отработанных файлов было положено на 1С. Это важно. Apache только принимает запросы, обрабатывает их и выкладывает txt файлы в расшареную папку. Apache может одновременно обработать очень много запросов, и создать нужное количество файлов и ждать ответа. А 1С, не спеша обрабатывает txt файлы и отвечает XML ответами.

Послесловие.

Надеюсь, статья окажет помощь тем программистам 1С, которые сталкиваются с такими задачами. Также, если статья понравится сообществу infostarta’a, то в продолжение опишу особенности создания XML ответов.
***
В архиве пример скрипта с комментариями, которые позволят программисту понять как создать собственный скрипт.

Apache POST запрос 8.2

См. также

Использование Vagrant и Ansible для разворачивания тестовой инфраструктуры

Администрирование веб-серверов Бесплатно (free)

В статье опишу порядок настройки набора виртуальных машин для отладки сервисов 1С и связанных с ними.

20.10.2021    5149    malikov_pro    1    

23

Обновление платформы 1С тонкого клиента с вебсервера без публикации базы данных, когда сервер 1С ПРОФ

Администрирование веб-серверов Администрирование СУБД Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Описание обновления через диалог публикации: https://its.1c.ru/db/v8316doc#bookmark:adm:TI000001058, https://its.1c.ru/db/v8319doc#bookmark:adm:TI000000428, https://wonderland.v8.1c.ru/blog/o-chyem-nuzhno-pomnit-v-tekushchikh-usloviyakh/?sphrase_id=629534. Реализация без публикации базы описана в данной статье. Выражаю благодарность Панюшкину Михаилу Михайловичу за разбор задачи. Обновление не проходит если предварительно установка выполнялась регламентными политиками и есть в папке conf файл adminstall.cfg Этот файл следует удалить, чтобы данная установка тонкого клиента проходила успешно В файле может располагаться единственная строка, определяющая вариант установки: AdmInstall=Описывает режим установки: Logon - установка выполнена с помощью logon-скрипта во время входа пользователя в домен. Restart - установка выполнена с помощью групповых политик.

19.10.2021    17402    ser6702    36    

53

Под капотом IIS, или как сделать WEB публикацию базы 1С без конфигуратора

Администрирование веб-серверов Бесплатно (free)

В интернете есть много инструкций как установить Internet Information Services и опубликовать на нем базу, будь то файловую, или клиент-серверную. Но, крайне мало кто пытается разобраться, как IIS работает, и что делает платформа при публикации базы. В этой статье я покажу как опубликовать базу на IIS без использования конфигуратора.

29.04.2021    26168    evvakra    15    

106

Служебные http-сервисы, которые работают даже в заблокированной базе

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

В этой публикации описывается опыт доступа к служебным http-сервисам в обход установленной блокировки информационной базы.

16.03.2021    7392    ardn    15    

45

Как настраивать кросс-доменные (CORS) запросы к HTTP сервису 1C на веб сервере IIS с сайтом EDIbot

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

Сервис EDIbot позволяет отобразить в виде прогрессивного веб приложения, полученный JSON по REST запросу. Разберемся, как решить проблему кросс-доменных запросов на веб сервере IIS для корректной работы HTTP сервиса 1C и сервиса.

21.10.2020    4827    SizovE    0    

7

Настраиваем PWA приложение на платформе 8.3.18 с бесплатным действительным сертификатом SSL

Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Вышла платформа 8.3.18 с поддержкой PWA приложений. Получаем БЕСПЛАТНЫЙ действительный сертификат SSL. Настраиваем прогрессивное веб приложение для опубликованной бухгалтерии 3.0 на IIS сервере.

18.10.2020    11300    IamAlexy    36    

60
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. _smile_ 13.08.14 10:53 Сейчас в теме
2. pythonchik 13.08.14 11:07 Сейчас в теме
Так если уже PHP используется, почему не заставить скрипт вместо формирования файлов напрямую дергать web-сервисы самой 1С?
3. profiprog1c 249 13.08.14 11:32 Сейчас в теме
(2) pythonchik, Понимаете, я программист 1С,но не php кодер. Время на изучения php не было, да и не было желания, поэтому и реализовал через 1С.
4. zelevova 20.08.14 16:11 Сейчас в теме
(3) profiprog1c, я так понимаю предыдущий оратор имел ввиду что пусть апач не выбрасывает файлы, а делает запрос к веб-сервису 1с и сразу от 1с получает ответ, который и вернет ответом на исходный запрос. Тем самым мы уходим от использования файловой системы. а собственно веб-сервис реализуется средствами 1с.

Хотя возможно здесь сработает ограничение описанное в самом начале.
5. profiprog1c 249 20.08.14 17:44 Сейчас в теме
(4) zelevova, Тут, понимаете, в чем дело, немного сложнее. Задача ведь не просто получить XML ответ от 1С, а произвести определенные записи в базу данных в зависимости от запроса и только потом дать ответ. Есть еще процесс отладки. Эти все манипуляции по обработке и записи в базу не совсем простые. Поэтому с моей точки зрения механизм файла надежней. Да и отладки в php как таковой нет вообще.
6. nSpirit2 20.08.14 17:44 Сейчас в теме
И тут афтор изобрел очередь. Я всегда жду от таких публикаций чего-то прям сверхестественного. Но ничего не происходит как быть скажем с тем что нарушилась связь 1с и хранилища файлов. Вы дали доступ апатчу. Я Думаю у решения много проблем исходя из того что вы не программист PHP(И это хорошо). Файлы плохо целостность очереди не какая. Как реализован порядок выбора файлов? Как происходит обратная связь? Ну а вообще конечно + тема весьма интересная!
7. profiprog1c 249 20.08.14 19:07 Сейчас в теме
(6) nSpirit2, Понятны Ваши сомнения, в принципе в скрипте который можно скачать есть некоторые ответы на эти вопросы. Да и целостность нормальная - обеспечивается временем создания файлов. Обратная связь лежит на 1С. Я скорее всего создам продолжение этой статьи, если еще накопятся вопросы.
8. GOshaSaveiko 38 20.08.20 11:35 Сейчас в теме
А почему не использовать обыкновенный брокер сообщений из Apache Kafka, RabbitMQ, Amazon MQ? Они ведь именно для этого и предназначены
Оставьте свое сообщение