Хоменко Вадим

95
Рейтинг

kristart
Вадим Хоменко



  •   Регистрация: 04.03.2011 (13 лет назад)

  •   Был(а) на сайте: 12.10.2021

Друзья
  • Бондарчук Тарас
  • Дмитрий Малышев
  • Евгений Комиссаров
Подписчики 6

Группы

Профессиональный разработчик

Рейтинг 95

Простой пример передачи данных между клиентом и сервером через HTTP-сервисы

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Конфигурация (md, cf) Мобильная разработка

При выходе платформы 8.3.5 появилось желание переделать в уже готовом мобильном приложении соединение клиента с сервером из Web на HTTP-сервисы. В статье не будет кучи воды, только конкретная задача, все максимально просто.

1 стартмани

14.03.2015    47244    79    kristart    25       

75

Прямая печать из мобильного приложения

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Android Абонемент ($m) Внешняя обработка (ert,epf) Мобильная разработка

Сегодня (на момент написания статьи) печать из мобильного приложения 1С кажется чем-то далеким идущим "на костылях" и имеющим больше демонстрационный характер нежели применимый в реальной работе. Но это не так! Как говорят: "из любой безвыходной ситуации есть как минимум два выхода". Описанный в этой статье вариант готов работать стабильно и не требует сверхъестественных усилий или значимо больших временных затрат относительно написания печатной формы для ПК.

1 стартмани

21.10.2014    26175    21    kristart    3       

20

Комментарии

MobileDevМобильный клиент. iOS. Данное мобильное приложение не может быть использовано для открытия приложения на сервере#7 30.09.21 20:31
Получил ответ от 1С, что возможно проблема в версиях сборщика и мобильной платформы. Обновил на последние актуальные релизы. Ошибка побеждена.
MobileDevМобильный клиент. iOS. Данное мобильное приложение не может быть использовано для открытия приложения на сервере#6 29.09.21 16:40
(4) без аккаунта разработчика особо не разгонешься. Есть еще сервис 1С-овский для облегченной публикации, но он пока на стадии тестирования.
MobileDevМобильный клиент. iOS. Данное мобильное приложение не может быть использовано для открытия приложения на сервере#5 29.09.21 16:39
(4) да, эти темы смотрел - не помогли. Там говорится, что при изменении конфигурации нужно обновлять и клиент. Либо при использовании мобильного клиента из магазина, вернуться к типовой конфигурации и вынести доработки в расширение.

С отладкой проблем особо нет. А с публикацией, приходится повозится со средствами сборки и самим процессом оформления в магазинах. Ну и как видим, еще с подписью есть особенности.
MobileDevМобильный клиент. iOS. Данное мобильное приложение не может быть использовано для открытия приложения на сервере#3 29.09.21 0:28
(2) Пересоздавал ключ, формировал заново подпись. Потом выгружал заново конф для моб клиента. И через сборщик собирал снова. Не помогло(
MobileDevМобильный клиент. iOS. Данное мобильное приложение не может быть использовано для открытия приложения на сервере#1 28.09.21 23:04
В компании используется нетиповая конфигурация.
Для нее собран мобильный клиент.
Конфигурация подписана (создан закрытый ключ и сформирована подпись через конфигуратор).
При сборке способы проверки сертификата сервера указан как хранилище сертификатов ОС.
После авторизации на iOS устройстве появляется ошибка:
"Данное мобильное приложение не может быть использовано для открытия приложения на сервере". (скрин ошибки прикреплен).

Это же приложение собранное для ОС Android - работает.

Прежде чем написать, ознакомился с информацией о сборщике и мобильном клиенте на ресурсах 1С, изучил доступную информацию на форумах, что не привело к желаемому результату.

Так как ошибка отображается платформой и не относится к коду приложения, идентифицировать и исправить ее самостоятельно не могу.
Прошу помочь в решении данной ошибки.

Версия мобильного клиента: 8.3.18.47
Версия сборщика мобильных приложений: 2.0.10.63
Версия платформы сервера: 8.3.17.1496

Прикрепленные файлы:

Ошибка iOS 8.3.18.47 _.jpg
MobileDevПростой пример передачи данных между клиентом и сервером через HTTP-сервисы#24 28.09.16 10:54
(23) tindir, Доброго времени суток. Поясните пожалуйста что Вы имеете ввиду "наколенного кода"? Возможно стоит что-нибудь исправить или переписать?
MobileDevПростой пример передачи данных между клиентом и сервером через HTTP-сервисы#22 26.09.16 16:06
(21) smirnovserg.s@gmail.com, спасибо за замечание, Вы правы, этот параметр не нужен для метода Записать (в статье исправил).
Его можно указывать используя метод Получить (GET-запрос) и тогда в ответ получим, как пишет синтаксис помощник - "Имя файла, в который помещаются данные полученного ресурса". В общем мы и так получаем все из HTTPОтвета, так что использование второго параметра, в нашем случае, считаю неоправданным.
MobileDevПростой пример передачи данных между клиентом и сервером через HTTP-сервисы#20 27.08.16 15:17
(19) serko8547, Приветствую.

Если нет пользователя, авторизационные данные в HTTP-соединении указывать не обязательно; даже в базу пускает не запрашивая логин (без авторизации).
Как только Вы завели пользователя - авторизация обязательна и при попытке войти в базу система будет запрашивать логин и пароль.

В общем, Вам нужно указать логин и пароль при создании HTTP-соединения, примерно вот так:
Код
Попытка
      Соединение = Новый HTTPСоединение(ПараметрыПодключения.АдресСервера,
      ,ПараметрыПодключения.Пользователь,ПараметрыПодключения.Пароль,,Таймаут);
   Исключение
      //Сообщить("Не удалось установить соединение с сервером" 
      //+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
      ВызватьИсключение;
   КонецПопытки;
MobileDevПростой пример передачи данных между клиентом и сервером через HTTP-сервисы#18 28.07.16 18:28
(17) sml, и Вам доброго дня.
заголовки это обычное соответствие.

На стороне сервера предположим есть принимающая функция
Код
Функция RegistrationChek(Запрос)


Вот что мы получим


Я передал два параметра поместив их в заголовки:
Код
Соответствие = Новый Соответствие();
   Соответствие.Вставить("ТипОбращения", ПараметрыПодключения.ТипОбращения);
   Соответствие.Вставить("ПакетОбмена",ПараметрыПодключения.ИсходящееСообщение);
   HTTPЗапрос = Новый HTTPЗапрос(ПараметрыПодключения.РесурсНаСервере+ "/?geocode=1",Соответствие);


И вот они на сервере


А потом уже обращаемся к своим параметра как хотим,
можно так
Код
Запрос.Заголовки["ПакетОбмена"]

или так
Код
Запрос.Заголовки.Получить("ПакетОбмена")

в общем как удобно.
MobileDevПростой пример передачи данных между клиентом и сервером через HTTP-сервисы#16 27.07.16 19:28
(15) Region102, все проще чем кажется.
Сериализуем необходимые данные и на выходе получаем строку которую и помещаем в тело.
На принимающей стороне десериализуем и вуалая! - вот они наши данные.
Соответственно передать можно все что сериализуется (посмотреть это свойство объекта можно в синтаксис помощнике).
ХранилищеЗначения - сериализуется, то есть его так же можно передать в теле.