Запуск php-скрипта из 1С
В этой статье я постараюсь дать пару советов по настройке активации скриптов на сайтах с помощью 1С.
Зачем это может понадобиться? В моем примере запуск скрипта php мне понадобился для активации загрузки на сайте, cms которого — 1С-Битрикс. Т.е. файл выгружается из 1С и сигнализирует сайту о необходимости подобрать файл. Тем самым достигается высокая оперативность обмена с сайтом.
На самом деле ничего тяжелого в этом процессе нет, но в силу специфики данной процедуры у программиста могут возникнуть некоторые проблемы с данным действием.
Описание задачи:
Было необходимо после выгрузки файла с данными из 1С как можно быстрее загрузить файл в БД сайта. Для этого программистом, который разрабатывает сайт, был создан скрипт, который производил два действия — проверял авторизацию и активировал обмен со стороны сайта. Сам скрипт php имел вот такой вид «http://<site>/1c_prices_import_run.php».
Рассмотрим, как же производился запуск этого скрипта.
GET запрос из 1С
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Первым делом создается объект «HTTPСоединение«, с помощью которого производим авторизацию:
HTTP = Новый HTTPСоединение(«<site>/1c_prices_import_run.php«,, НастройкаОбменаДанными.HTTPОбменИмяПользователя, НастройкаОбменаДанными.HTTPОбменПароль,,); //подключение
В параметры я передаю адрес скрипта php, пароль и логин. Этого достаточно, если у Вас нет других хитрых условий вроде защищенной авторизации и прокси-сервера.
Вторым моим шагом была проверка подключения, в случае успешной авторизации данный скрипт возвращал мне слово «success» :
HTTP.Получить(«http://<site>/1c_prices_import_run.php?mode=checkauth«, ИмяФайлаОтвета); // проверка авторизации
В параметрах метода Получить (аналог GET) мы указываем у скрипта php параметр «?mode=checkauth», который показывает, что это просто проверка связи. Второй параметр — «ИмяФайлаОтвета» — это файл, в который будет записан ответ сервера.
Далее идёт проверка. Если в ответе скрипта есть слово «success», запускаем тот же скрипт с параметром «?mode=query», который непосредственно активирует загрузку со стороны битрикса, вот так:
HTTP.Получить(«http://<site>/1c_prices_import_run.php?mode=query«, ИмяФайлаЗапроса);
На этом всё. Всё достаточно просто и работает на стороне 1С отлично.
Ну и в итоге покажу весь код целиком:
ИмяФайлаЗапроса= ПолучитьИмяВременногоФайла();
Попытка
HTTP = Новый HTTPСоединение(«http://<site>/1c_prices_import_run.php«,, НастройкаОбменаДанными.HTTPОбменИмяПользователя, НастройкаОбменаДанными.HTTPОбменПароль,,); //подключение
Исключение
КонецПопытки;
Попытка
HTTP.Получить(http://<site>/1c_prices_import_run.php?mode=checkauth», ИмяФайлаЗапроса); // проверка авторизации
Исключение
СтрокаСообщенияПользователю = «Ошибка авторизация Битрикс»;
КонецПопытки;
ФайлОтвета = Новый Файл(ИмяФайлаОтвета);
Если ФайлОтвета.Существует() Тогда
ТекстОтвета = Новый ТекстовыйДокумент();
ТекстОтвета.Прочитать(ИмяФайлаОтвета);
Если ТекстОтвета.КоличествоСтрок()>0 Тогда
ОтветСервера = ТекстОтвета.ПолучитьТекст();
Иначе
СтрокаСообщенияПользователю = «Получение данных с сервера: Получен пустой ответ сервера.»;
КонецЕсли;
Иначе
СтрокаСообщенияПользователю = «Получение данных с сервера: Ответ сервера не получен.»;
КонецЕсли;
Если ОтветСервера = «success» Тогда // можно делать запрос
Попытка
HTTP.Получить(http://<site>/1c_prices_import_run.php?mode=query», ИмяФайлаЗапроса);
Исключение
СтрокаСообщенияПользователю = «Не удалось инициировать загрузку из битрикса»;
КонецПопытки;
КонецЕсли;
Попытка
УдалитьФайлы(КаталогВременныхФайлов(), ИмяФайлаЗапроса);
Исключение
КонецПопытки;
Кстати! Если Вам необходима доработка программ 1С, Вы можете обратиться к нам! Подробности на странице услуги 1С.
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Роман:
А покажите пожалуйста пример на php как потом в пхп скрипте принять файл, переданный из 1С
Кирилл:
К сожалению, на ПХП не программируем, наверное лучше посмотреть примеры парсинга файлов на специальных ресурсах 🙂
Андрей:
А в Битрикс разве это уже не реализовано?