Pull to refresh

Comments 17

Пришлось мне как разработчику WCF REST сервисов столкнуться с 1С-разработчиками, которые реализовывали 1С-клиент (как потребителя контента). Так вот, при работе с web-ресурсами по REST, которые принимают запросы в UTF-8, 1С отправляет HTTP-запрос через создание текстового файла, записи в него тела запроса, и отправки (POST или PUT) только что созданного файла. Это я о кросс-платформенном решении (без использовании XMLHTTPRequest, т.к. через вызов COM-объекта все работает):

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 доработали?
К сожалению, я еще не углублялся в изучение возможностей 8.3, она вышла менее месяца назад.
Нифига они не доработали. Понимаю, что некропост, но просто сейчас занимаюсь тем же со стороны 1с, задолбало. Формировать запрос через внешний файл ПРИХОДИТСЯ, хотя в 1с есть возможность отправлять запрос без использования внешнего файла, но в этом режиме граблей раскидано ещё больше, поэтому приходится юзать файлы. А BOM-заголовок от файла можно отрезать с помощью такого извращения:

ЗТ = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
ЗТ.Закрыть();

ЗТ = Новый ЗаписьТекста(ИмяФайла,,, Истина);
ЗТ.Записать(ТекстПосланияСтрокой);
ЗТ.Закрыть();

При этом файл ИмяФайла получается в кодировке UTF-8, но без BOM-заголовка.
Спустя четыре года отвечаю:) Дела обстоят нормально. Написал целую кучу разнообразных переходников на разные АПИ, всё работает. Отправлять ПОСТ запрос можно без записи файла. Есть работа с джейсон. Бом-символы тоже настраиваются, хотя с ними не сталкивался.
Видимо и правда, целевой аудитории здесь почти нет. Ну да ладно. :-)
Ошибаетесь, есть=)
Работа с вэб сервисами, безусловно, интересна
Сам я давно уже не писал что — либо в 1С, но регулярно слежу за новыми изменениями и анонасами
И изменения эти, надо сказать радуют, особенно курс на Linux.
В свое время писал внешние компоненты и меня просто убивали некоторые вещи.
К примеру, невозможность передать/вернуть массив из внешней компоненты, написанной на 1С Native API.
Казалось бы очевидная вещь, но не сподобились сделать
В итоге пришлось писать дикие грабли в виде собственной сериализации на основе строк.
Получается, реализовать что-то серъезное в Native API просто не получится, все равно придется писать свой сервис.

Разве плохо что я в статье нашел то что мне надо и даже вопросов не возникло? К сожалению плюсануть не получится из-за давности статьи.
Пытался я написать конфигурацию по работе с WS, однако столкнулся с проблемой некорректного определения 1С пустой даты.
На сайте форуме http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=597342#597342 никто не подсказал вариант решения. Может у Вас больше опыта и есть решение моей проблемы?
Он обошел тем, что сменил с типа даты, на тип строка, но это немного не то. Хотелось решить именно средствами 1С. Хотя кое-что придется поправить, указав, что это поле можеть быть пустым.
Здесь похоже, что 1С не может правильно обработать поле due_date. И на стороне 1С сделать ничего не получится.
Нужно либо сделать так, как по ссылке выше, либо так, чтобы это поле было всегда заполнено, либо вообще исключить его из пакета, если оно не нужно в 1С.
Как бы его только в 1С исключить?
Кстати, забыл спросить, а вы какую версию платформы используете?
Простой в 8.2.15.317 нет конструкторов WSОпределения и WSПрокси со столькими параметрами.
А как обновлять курсы валют, кладр, если система не имеет выхода в интернет? оффлайн версии где скачивать и как ставить7
С диска ИТС
Также файлы КЛАДРов лежат на сайте gnivc.ru
Если данная публикация найдет здесь отклик, то есть еще несколько тем, о которых можно рассказать.

Да, расскажите пожалуйста! В особенности про

есть некоторая сложность в понимании определения типов, у меня в том числе).

Спасибо!

Очень полезная статья. Но у меня есть одна проблема. Платформа (8.2.19.106).Перейти на новую сложно да и много времени надо. WS WSСсылки не работает с https. И нет конструктора Новый WSОпределения. Что делать я даже не знаю может кто то сталкивался?
Sign up to leave a comment.

Articles