0. sm2701 70 06.05.17 19:33 Сейчас в теме

Отправка HTTP запроса из 1С на сайт.

Задача: Передать данные из 1С на сайт. Данные будут передаваться в PHP скрипт, через HTTP запрос, вызываемый из 1С.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. Steelvan 08.05.17 07:28 Сейчас в теме
"подымалось" правильно писать "поднималось", книжки читай, писатель
KolBbl4; sergio199; deemaa; +3 6 Ответить
2. mixperm 61 11.05.17 07:11 Сейчас в теме
Улыбнулся)) А зачем в теле передавать json? Зачем такой геморрой? На сайте надо писать всякие проверки на спецсимволы и т.п. А не проще строкой передавать и на стороне сайта сразу считывать нужные параметры?
3. sm2701 70 11.05.17 10:08 Сейчас в теме
(2) Не совсем понял...
Что значит строкой? Передавать как GET параметры что ли? Типа localhost/?param1=value&p2=value2
Да, это проще всего конечно. Но:
1. Данные всеравно придется кодировать. Явно или не явно. Так как допустим у тебя будет значение параметра равно строке с пробелами или будет содержать символ &. Ну например у тебя значение равно Большой&текст и в итоге получиться localhost/?param1=Большой&текст&p2=value2
Такая строка будет ошибочной и ничего хорошего ты не подучишь.
2. GET параметры, а точнее url строка имеет ограничение в размере. Поэтому большой объем данных ты не передашь. Под большим объемом я подразумеваю даже хотя бы заказ покупателя с табличной частью в 20 строк.
4. mixperm 61 11.05.17 16:21 Сейчас в теме
Именно что POST, а параметры так же как в GET param1=value&p2=value2. На некоторых API и на POST есть ограничения, а строкой влазит намного больше чем json. И согласитесь, что & встречается намного реже внутри параметров, чем символы разметки json. У меня например таким образом передается целый гигантский массив в параметре через запятую и параметрами авторизации. в json это было бы раза в 2 больше данных.
$offerIds = $_POST['offerid'];
$a = explode(",", $offerIds);
5. sm2701 70 11.05.17 17:02 Сейчас в теме
(4) Через параметры и запятую в массиве согласен, получается короче. Но кодировать строковые значения параметров всеравно необходимо, так как хоть редко но спец.символы встречаются и игнорировать это не получиться.
6. mixperm 61 11.05.17 17:15 Сейчас в теме
(5) Ну не знаю насколько КодироватьСтроку необходима для POST запроса. Мне всегда казалось, что она необходима только для передачи кириллицы в параметрах в GET запросах, и каждый символ кириллицы превращается в 3 символа что не удобно.
8. sm2701 70 11.05.17 17:29 Сейчас в теме
(6)ну попробуй передать значение, в которм есть символ & или = например.
Может я конечно как то не так передаю параметры, а так в первом примере у меня идет отправка POST запроса с параметрами.
7. Frogger1971 11.05.17 17:20 Сейчас в теме
Один вопрос:
"А где должно сие лежать"?
HTTPЗапрос = Новый HTTPЗапрос("/from1c.php");

на сервере или на клиенте?
9. sm2701 70 11.05.17 17:33 Сейчас в теме
(7) php скрипит на веб сервере конечно.
А конструкция Новый HTTPзапрос доступна на клиенте и на сервере.
10. Frogger1971 11.05.17 18:05 Сейчас в теме
(9) т.е., как минимум на веб-сервере должен быть прикручен php?
11. sm2701 70 11.05.17 23:01 Сейчас в теме
12. 🅵🅾️🆇 20.03.18 13:38 Сейчас в теме
(10) Не, не слушай автора, если ты делаешь обмен между 1с'ками, ну или там мобильное приложение -> 1с, то это путь HTTP Сервиса (объект конфигурации такой).
Вот, например, пример GET запроса "http://192.168.0.1/myBase/hs/Mobile/ItemsByCode/1232" которым я получаю информацию по номенклатуре передавая код (ниже увидишь пример).

HTTP сервис ты можешь поднять на чем угодно, ява/сишарп/питон/пыха/.
Кроме самой и apache/iis/nginx для поднятия HTTP сервисов тебе ничего не надо.

Вот как осуществляется прием/отправка через POST и GET (копипащу то, что под руку попадет)

ОТПРАВКА НА HTTP СЕРВИС
Скрытый текст


ПРИЕМ HTTP СЕРВИСОМ
Скрытый текст


PS:
В моем примере можно очень многое улучшить, по хорошему надо использовать HTTPS SSL (сертификаты сейчас очень просто certbot'ом делать если собираетесь веб-мордой смотреть в глобальный интернет), константы брать из повторно возвращаемых значений и тп и тд.
Копипастил из своего прототипа мобильного приложения, но этого должно хватить, чтоб понять как запросы, толком, работают.
Vida; smit1c; denismal; +3 1 Ответить
13. user618785_bag.dat 28.05.19 08:26 Сейчас в теме
подскажите пожалуйста если из 1С отправить json так:

HTTPЗапрос.УстановитьТелоИзСтроки("param=" + СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);


то на стороне апачи пхп как принять этот json?
14. user618785_bag.dat 28.05.19 08:53 Сейчас в теме
(13) все разобрался, не дочитал статью до конца ))
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Тольятти
зарплата от 70 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 150 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб.
Полный день