PHP

Интеграция сайта с 1С8.1 Предприятие УТ

Хотел поговорить о новой для себя теме, которая в последнее время начала представлять для меня интерес — это интеграция сайта и 1С8 Предприятие — так всеми любимой программой для всевозможного учета в компаниях.

Как вам известно 1С-Битрикс предоставляет средства для обмена данными с 1С8. Эти средства есть в тех редакциях 1С-Битрикс, которые содержат в своем составе модули sale и catalog (те модули, которые требуются для работы интернет-магазина).

Я не буду касаться Битрикса в этот раз — мне стало интересно как можно сделать обмен какими либо данными между 1С8 и любым вебсайтом. После нескольких часов работы я выдавил из себя такие 3 функции:

Функция ГетЗапрос(HTTP, Адрес, ПараметрыЗапроса) Экспорт

HTTP.Open(«GET», Адрес+»?»+ПараметрыЗапроса, Ложь);

HTTP.Send(); HTTP.WaitForResponse();

Возврат HTTP.ResponseText;

КонецФункции

 

Функция ОтправитьФайлНаСервер(HTTP, Адрес, ПутьКФайлу, НазваниеФайла) Экспорт

Файл = Новый ДвоичныеДанные(ПутьКФайлу);

ФайлКод = Base64Строка(Файл);

CRLF=Символы.ВК+Символы.ПС; boundary = «upload»;

Тело = «—«+boundary + CRLF + «Content-Disposition: form-data; name=»»MAX_FILE_SIZE»»»+ CRLF+ CRLF+»100000000″+  CRLF+ «—«+boundary + CRLF + «Content-Disposition: form-data; name=»»FILE»»; filename=»»»+НазваниеФайла+»»»» + CRLF +  «Content-Type: image/jpg» + CRLF+ «Content-Transfer-Encoding: binary»  + CRLF+ CRLF+ КартинкаКод + CRLF+»—«+boundary +»—«+CRLF;

HTTP.Open(«POST», Адрес, Ложь);

HTTP.SetRequestHeader(«Accept-Language»,»ru»);

HTTP.SetRequestHeader(«Content-Type»,»multipart/form-data; boundary=»+boundary + CRLF + CRLF); HTTP.setRequestHeader(«Accept-Charset», «utf-8»);

HTTP.SetRequestHeader(«Content-Length», СтрДлина(Тело));

HTTP.Send(Тело);
HTTP.WaitForResponse();

Возврат HTTP.ResponseText;

КонецФункции

 

Функция ПостЗапрос(HTTP, Адрес, ПараметрыЗапроса) Экспорт

CRLF=Символы.ВК+Символы.ПС;

HTTP.Open(«POST», Адрес, Ложь);

HTTP.SetRequestHeader(«Accept-Language»,»ru»);

HTTP.SetRequestHeader(«Content-Type»,»application/x-www-form-urlencoded»);

HTTP.SetRequestHeader(«Content-Length», СтрДлина(ПараметрыЗапроса));

HTTP.setRequestHeader(«Accept-Charset», «utf-8»);

HTTP.Send(ПараметрыЗапроса);

HTTP.WaitForResponse();

Возврат HTTP.ResponseText;

КонецФункции

 

Эти 3 функции делают все, что требуется при работе по обмену данными с сайтом:

1 GET-запрос

2 POST-запрос

3 POST-запрос с отправкой файла

Пользоваться ими легко:

ХТТП = Новый COMObject(«WinHttp.WinHttpRequest.5.1»);

Вывод = ПостЗапрос(ХТТП, «http://site.ru/script.php«, «param2=1&param2=2«);

Для того, чтобы они заработали в вашей 1С необходимо поставить com-объект WinHttp.WinHttpRequest.5.1 .

Комментариев: 2

  1. Здравствуйте!
    Спасибо за статью, функции удовлетворили все мои потребности! Единственная трудность, с которой столкнулся, это ответ сервера, приходящей в непонятной кодировке: «п»їп»ї», например. Сталкивались ли Вы с такой проблемой?
    С Уважением, Игорь.

  2. Я бы посоветовал Вам просто сравнить кодировки на стороне сайта и на стороне 1С. Если они разные, то сделать конвертацию кодировки на сайте или 1С. Тогда проблем не будет.

Оставить комментарий на Виталий Соков Отменить

Ваш электронный адрес не будет опубликован.Обязательные для заполнения поля отмечены *

три × один =