Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Запуск 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. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 3 на “Запуск php-скрипта из 1С
  1. А покажите пожалуйста пример на php как потом в пхп скрипте принять файл, переданный из 1С

    Ответить

    • К сожалению, на ПХП не программируем, наверное лучше посмотреть примеры парсинга файлов на специальных ресурсах 🙂

      Ответить

  2. А в Битрикс разве это уже не реализовано?

    Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.