Comments 17
Пришлось мне как разработчику WCF REST сервисов столкнуться с 1С-разработчиками, которые реализовывали 1С-клиент (как потребителя контента). Так вот, при работе с web-ресурсами по REST, которые принимают запросы в UTF-8, 1С отправляет HTTP-запрос через создание текстового файла, записи в него тела запроса, и отправки (POST или PUT) только что созданного файла. Это я о кросс-платформенном решении (без использовании XMLHTTPRequest, т.к. через вызов COM-объекта все работает):
Особенностью решения 1С-ников было то, что при отправке данных методами POST или PUT, заголовки передаются через аргументы функции, а тело — через файл. Грабли были в том, что при создании файла в кодировке UTF8 1С-ка всегда пишет BOM-символ в начале файла и web-сервис, получая запрос от 1С-клиента с неверным Content-Length'ом (встроенная функция определения длины игнорирует BOM-символ, но это можно исправить вручную) и с BOM-символом в середине тела HTTP-запроса (не в начале) впадает в ступор. Также из-за этого символа.
Может ли автор статьи рассказать, как обстоят дела с кросс-платформенными запросами в 1С 8.3 при работе с веб-сервисами не по SOAP, а по REST? HTTP-api доработали?
HTTPСоединение = Новый HTTPСоединение(urladdress);
HTTPСоединение.ОтправитьДляОбработки("c:\code\1.txt", "Service.svc/session", "c:\code\2.txt", "Content-Type:application/json" + Символы.ВК + Символы.ПС + "charset:UTF-8");
Особенностью решения 1С-ников было то, что при отправке данных методами POST или PUT, заголовки передаются через аргументы функции, а тело — через файл. Грабли были в том, что при создании файла в кодировке UTF8 1С-ка всегда пишет BOM-символ в начале файла и web-сервис, получая запрос от 1С-клиента с неверным Content-Length'ом (встроенная функция определения длины игнорирует BOM-символ, но это можно исправить вручную) и с BOM-символом в середине тела HTTP-запроса (не в начале) впадает в ступор. Также из-за этого символа.
Может ли автор статьи рассказать, как обстоят дела с кросс-платформенными запросами в 1С 8.3 при работе с веб-сервисами не по SOAP, а по REST? HTTP-api доработали?
+1
К сожалению, я еще не углублялся в изучение возможностей 8.3, она вышла менее месяца назад.
0
Нифига они не доработали. Понимаю, что некропост, но просто сейчас занимаюсь тем же со стороны 1с, задолбало. Формировать запрос через внешний файл ПРИХОДИТСЯ, хотя в 1с есть возможность отправлять запрос без использования внешнего файла, но в этом режиме граблей раскидано ещё больше, поэтому приходится юзать файлы. А BOM-заголовок от файла можно отрезать с помощью такого извращения:
ЗТ = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
ЗТ.Закрыть();
ЗТ = Новый ЗаписьТекста(ИмяФайла,,, Истина);
ЗТ.Записать(ТекстПосланияСтрокой);
ЗТ.Закрыть();
При этом файл ИмяФайла получается в кодировке UTF-8, но без BOM-заголовка.
ЗТ = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
ЗТ.Закрыть();
ЗТ = Новый ЗаписьТекста(ИмяФайла,,, Истина);
ЗТ.Записать(ТекстПосланияСтрокой);
ЗТ.Закрыть();
При этом файл ИмяФайла получается в кодировке UTF-8, но без BOM-заголовка.
0
Спустя четыре года отвечаю:) Дела обстоят нормально. Написал целую кучу разнообразных переходников на разные АПИ, всё работает. Отправлять ПОСТ запрос можно без записи файла. Есть работа с джейсон. Бом-символы тоже настраиваются, хотя с ними не сталкивался.
0
Видимо и правда, целевой аудитории здесь почти нет. Ну да ладно. :-)
0
Ошибаетесь, есть=)
Работа с вэб сервисами, безусловно, интересна
Сам я давно уже не писал что — либо в 1С, но регулярно слежу за новыми изменениями и анонасами
И изменения эти, надо сказать радуют, особенно курс на Linux.
В свое время писал внешние компоненты и меня просто убивали некоторые вещи.
К примеру, невозможность передать/вернуть массив из внешней компоненты, написанной на 1С Native API.
Казалось бы очевидная вещь, но не сподобились сделать
В итоге пришлось писать дикие грабли в виде собственной сериализации на основе строк.
Получается, реализовать что-то серъезное в Native API просто не получится, все равно придется писать свой сервис.
Работа с вэб сервисами, безусловно, интересна
Сам я давно уже не писал что — либо в 1С, но регулярно слежу за новыми изменениями и анонасами
И изменения эти, надо сказать радуют, особенно курс на Linux.
В свое время писал внешние компоненты и меня просто убивали некоторые вещи.
К примеру, невозможность передать/вернуть массив из внешней компоненты, написанной на 1С Native API.
Казалось бы очевидная вещь, но не сподобились сделать
В итоге пришлось писать дикие грабли в виде собственной сериализации на основе строк.
Получается, реализовать что-то серъезное в Native API просто не получится, все равно придется писать свой сервис.
0
Разве плохо что я в статье нашел то что мне надо и даже вопросов не возникло? К сожалению плюсануть не получится из-за давности статьи.
0
Пытался я написать конфигурацию по работе с WS, однако столкнулся с проблемой некорректного определения 1С пустой даты.
На сайте форуме http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=597342#597342 никто не подсказал вариант решения. Может у Вас больше опыта и есть решение моей проблемы?
На сайте форуме http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=597342#597342 никто не подсказал вариант решения. Может у Вас больше опыта и есть решение моей проблемы?
0
Похоже, вот здесь есть решение проблемы: www.mantisbt.org/forums/viewtopic.php?f=11&t=20480
Попробуйте, расскажите потом.
Попробуйте, расскажите потом.
0
Он обошел тем, что сменил с типа даты, на тип строка, но это немного не то. Хотелось решить именно средствами 1С. Хотя кое-что придется поправить, указав, что это поле можеть быть пустым.
0
Кстати, забыл спросить, а вы какую версию платформы используете?
Простой в 8.2.15.317 нет конструкторов WSОпределения и WSПрокси со столькими параметрами.
Простой в 8.2.15.317 нет конструкторов WSОпределения и WSПрокси со столькими параметрами.
0
А как обновлять курсы валют, кладр, если система не имеет выхода в интернет? оффлайн версии где скачивать и как ставить7
0
Если данная публикация найдет здесь отклик, то есть еще несколько тем, о которых можно рассказать.
Да, расскажите пожалуйста! В особенности про
есть некоторая сложность в понимании определения типов, у меня в том числе).
Спасибо!
0
Очень полезная статья. Но у меня есть одна проблема. Платформа (8.2.19.106).Перейти на новую сложно да и много времени надо. WS WSСсылки не работает с https. И нет конструктора Новый WSОпределения. Что делать я даже не знаю может кто то сталкивался?
0
Sign up to leave a comment.
Использование внешних веб-сервисов в 1С на примере загрузки курсов валют