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С. Тогда проблем не будет.

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

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

три × один =