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

13.08.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
POST.zip
.zip 0,66Kb
32
32 Скачать (1 SM) Купить за 1 850 руб.

Приветствую всех читателей 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

См. также

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

Как проксировать запросы извне на localhost при помощи IIS.

15.01.2025    323    Miroshh    1    

2

Администрирование веб-серверов Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Узбекистан Абонемент ($m)

Внешняя обработка, подходит для любых конфигураций. Поддерживает apache и iis! Публикуйте базы легко и просто!

1 стартмани

22.11.2024    1732    36    Rafael-87    36    

31

Администрирование веб-серверов Сервера Системный администратор Программист Абонемент ($m)

WEB приложение для управления сеансами сервера 1С, имеет адаптивный web интерфейс. Возможности: удаление сеансов; завершение rphost процессов; запуск службы 1С сервера (если остановлена). Используется авторизация BasicAuth с защитой от брутфорса. Поддерживает работу по http https протоколам.

1 стартмани

08.11.2024    830    12    gortrex    2    

3

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

Ошибка 1С веб-сервис IIS. Ошибка доступа к файлу...183(0x000000B7) Невозможно создать файл, так как он уже существует.

27.09.2024    886    California_Dreaming    0    

3

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

В материале описан порядок действий по настройке Apache для работы по защищенному протоколу HTTPS c 1С на операционной системе РедОС с выпуском сертификата SSL.

09.05.2024    2837    artemusII    1    

11

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

Инструкция, как опубликовать веб-сервис с помощью OSPanel.

06.05.2024    2100    lostcay    0    

6

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

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

25.04.2024    3665    artemusII    8    

18

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    1733    1    0    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. _smile_ 13.08.14 10:53 Сейчас в теме
2. pythonchik 13.08.14 11:07 Сейчас в теме
Так если уже PHP используется, почему не заставить скрипт вместо формирования файлов напрямую дергать web-сервисы самой 1С?
3. profiprog1c 252 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 252 20.08.14 17:44 Сейчас в теме
(4) zelevova, Тут, понимаете, в чем дело, немного сложнее. Задача ведь не просто получить XML ответ от 1С, а произвести определенные записи в базу данных в зависимости от запроса и только потом дать ответ. Есть еще процесс отладки. Эти все манипуляции по обработке и записи в базу не совсем простые. Поэтому с моей точки зрения механизм файла надежней. Да и отладки в php как таковой нет вообще.
6. nSpirit2 20.08.14 17:44 Сейчас в теме
И тут афтор изобрел очередь. Я всегда жду от таких публикаций чего-то прям сверхестественного. Но ничего не происходит как быть скажем с тем что нарушилась связь 1с и хранилища файлов. Вы дали доступ апатчу. Я Думаю у решения много проблем исходя из того что вы не программист PHP(И это хорошо). Файлы плохо целостность очереди не какая. Как реализован порядок выбора файлов? Как происходит обратная связь? Ну а вообще конечно + тема весьма интересная!
7. profiprog1c 252 20.08.14 19:07 Сейчас в теме
(6) nSpirit2, Понятны Ваши сомнения, в принципе в скрипте который можно скачать есть некоторые ответы на эти вопросы. Да и целостность нормальная - обеспечивается временем создания файлов. Обратная связь лежит на 1С. Я скорее всего создам продолжение этой статьи, если еще накопятся вопросы.
8. GOshaSaveiko 39 20.08.20 11:35 Сейчас в теме
А почему не использовать обыкновенный брокер сообщений из Apache Kafka, RabbitMQ, Amazon MQ? Они ведь именно для этого и предназначены
Оставьте свое сообщение