Хотел поговорить о новой для себя теме, которая в последнее время начала представлять для меня интерес — это интеграция сайта и 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¶m2=2«);
Для того, чтобы они заработали в вашей 1С необходимо поставить com-объект WinHttp.WinHttpRequest.5.1 .
Здравствуйте!
Спасибо за статью, функции удовлетворили все мои потребности! Единственная трудность, с которой столкнулся, это ответ сервера, приходящей в непонятной кодировке: «п»їп»ї», например. Сталкивались ли Вы с такой проблемой?
С Уважением, Игорь.
Я бы посоветовал Вам просто сравнить кодировки на стороне сайта и на стороне 1С. Если они разные, то сделать конвертацию кодировки на сайте или 1С. Тогда проблем не будет.