Нано HTTP сервер - внешняя компонента для мобильного приложения 1C, на Android

05.11.20

Разработка - Разработка внешних компонент

Нано HTTP сервер на терминале сбора данных "ATOL Smart.Lite android 7.0". Работает только с GET и POST запросами. Аутентификация BASE64. Не поддерживает HTTPS и не передает файлы. В прикрепленном архиве исходники на компоненту (С++ и java для Android Studio 3.6.2), ЦФ - мобильного приложения и тестовая обработка.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Внешняя компонента нано HTTP сервер. + Исходники
.zip 17,94Mb
21
21 Скачать (1 SM) Купить за 1 850 руб.

Так как у мобильного приложения 1С нет HTTP сервисов решил написать свой. 

На чем я работал:

1. Android Studio 3.6.2

2. Мобильное приложение 1С 8.3.16.142

3. 1С:Предприятие 8.3 (8.3.17.1386)

Начнем с описания функционала:

// Описание: Функция запускает сервер.
// Параметры:
//Не обязательные.
//  Порт  - число. Порт который слушает сервер. 8080 по умолчанию.
//  Имя, Пароль - строки.
//  Если не заполнены значит нет аутентификации
//Возвращает указатель на Сервер - пустая строка ошибка создания.
СтрокаУказатель = Компонента.CreateHttpServer(Порт, Имя, Пароль)

// Описание:  функция отвечает на запрос
// Параметры:
//  обязательные.
//	Сокет- строка. Указатель на клиентский сокет - получается из запрос HTTP
// Не обязательные.
//  КодОтвет - СТРОКА. если не заполнено тогда "200"
//  Данные   - СТРОКА. если не заполнено тогда ""
// Возвращает количество отправленных байт если <= 0 то ошибка.
ОтправленоБайт = Компонента.SendAnswer(Сокет, КодОтвет, Данные)

// Описание: Количество подключенных к серверу клиентов
Число = Компонента.ClientCount;

// Описание: Данные интерфейса IP (только когда запущен сервер)
JSONСтрока = Компонента.IPConfig;

// Описание: Отладка можно посмотреть версию
JSONСтрока = Компонента.InfoString;

1. Подключение стандартное ниже на скрине.

Важно:

Во время настройки Web-публикации следует провести следующее действие. В настройках http-сервера необходимо добавить типы MIME для следующих расширений:

  • .so
  • .apk

Тип MIME: application/octet-stream

2. Проверим.

 

2. Написал обработку с двумя кнопками. Запустил на УТ.

код обработки:


Процедура КнопкаВыполнитьPOST(Кнопка)
	
	Попытка
		Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ
			|	Номенклатура.Ссылка,
			|	Номенклатура.Наименование,
			|	Штрихкоды.ПредставлениеШтрихкода
			|ИЗ
			|	РегистрСведений.Штрихкоды КАК Штрихкоды
			|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
			|		ПО Штрихкоды.Владелец = Номенклатура.Ссылка
			|	     И НЕ Номенклатура.ЭтоГруппа";
		
		Выборка = Запрос.Выполнить().Выбрать();
		// Создаем строку с данные  JSON выборка примерно 45000 элементов
		JSONДанныеПередачи = СоздатьСтрокуJSON(Выборка);
		
		Если HTTPСоединение = Неопределено Тогда
			HTTPСоединение = Новый HTTPСоединение("192.168.0.98", 8080, "Админ", "123");
		КонецЕсли;	
		
		HTTPЗапрос = Новый HTTPЗапрос("/HTTPTest/Post?Номенклатура=" + КодироватьСтроку(НоменклатураСсылка,СпособКодированияСтроки.КодировкаURL) + "&Индекс=" + Индекс);
		
		//добовляем заголовки к запрос
		//к сожеления не поборол руские буквы в заголовках поэтому нужно использовать функцияю КодироватьСтроку
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку("КомандаЗаголовок",СпособКодированияСтроки.КодировкаURL)
		                             ,КодироватьСтроку("Выгружаем номенклатуру",СпособКодированияСтроки.КодировкаURL));
									 
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку("ДатаЗапроса",СпособКодированияСтроки.КодировкаURL),ТекущаяДата());
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку("Количество",СпособКодированияСтроки.КодировкаURL),Выборка.Количество());
		
		
		HTTPЗапрос.УстановитьТелоИзСтроки(JSONДанныеПередачи);
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		Сообщить(Строка(HTTPОтвет.КодСостояния) + Символы.ПС + HTTPОтвет.ПолучитьТелоКакСтроку());
		Индекс = Индекс + 1;	
		
   Исключение
      Сообщить(ОписаниеОшибки());
   КонецПопытки;
   
КонецПроцедуры

Процедура КнопкаВыполнитьGET(Кнопка)
	
	Попытка
		//подключение к нашему серверу
		Если HTTPСоединение = Неопределено Тогда
			HTTPСоединение = Новый HTTPСоединение("192.168.0.98", 8080, "Админ", "123");
		КонецЕсли;	
		
		HTTPЗапрос = Новый HTTPЗапрос("/HTTPTest/Get?Номенклатура=" + НоменклатураСсылка + "&Индекс=" + Индекс);
		
		//добовляем заголовки к запрос
		//к сожеления не поборол руские буквы в заголовках поэтому нужно использовать функцияю КодироватьСтроку
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку ("КомандаЗаголовок",СпособКодированияСтроки.КодировкаURL) ,КодироватьСтроку("Родитель",СпособКодированияСтроки.КодировкаURL));
		HTTPЗапрос.Заголовки.Вставить(КодироватьСтроку ("ДатаЗапроса",СпособКодированияСтроки.КодировкаURL),ТекущаяДата());
		
		//Выполнили метод
		HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
		//Обработка ответа
		Сообщить(Строка(HTTPОтвет.КодСостояния) + Символы.ПС + HTTPОтвет.ПолучитьТелоКакСтроку());
	Исключение
      Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры

3. Написал обработку события на сервере в мобильное приложение 1С.

код обработки:


Процедура ОбработкаВнешнегоСобытия(Источник, Заголовоки, Контент)
	
	Если Источник = "MALhttpserver" Тогда
		
		//Обычное преобразование JSON в сооответсвие заголовков
		ДанныеЗапроса = JSONМодуль.СоздатьСтруктуруИзAndroid(Заголовоки, Истина);
		
		//Так как событие асинхронное то и пришлось добавить ид сокета для ответа.
		КлиентСокет = ДанныеЗапроса.Получить("ClientSocket");
		//Сам запрос 
		Запрос = ДанныеЗапроса.Получить("Inquiry");
		
		Если Запрос = "HTTPTest/Get" Тогда
			
			//Просто отвечаем 
			глHTTPServer.SendAnswer(КлиентСокет,"200","Привет я тебя понял)");	
			
		ИначеЕсли Запрос = "HTTPTest/Post" Тогда 	
			
			//Разбераем данные клиента
			СтруктураКонтент = JSONМодуль.СоздатьСтруктуруИзAndroid(Контент, Ложь);
			
			//создаем строкуJSON из входного масива
			ЗаписьJSON = Новый ЗаписьJSON;
			ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет));
			ЗаписатьJSON(ЗаписьJSON, СтруктураКонтент.Номенклатура);
			ОтветСтрокаJSON = ЗаписьJSON.Закрыть();
			
			
			//Отвечаем массивом обратно, а 201 просто так захотелось.
			глHTTPServer.SendAnswer(КлиентСокет,"201",ОтветСтрокаJSON);	
			
		Иначе 
			глHTTPServer.SendAnswer(КлиентСокет,"404","Нет токой страници!");	
		КонецЕсли;	
		
	КонецЕсли;	
	

3. Посмотрим точки останова.

В обработке запущенной на УТ нажимаем кнопку "отправить GET запрос" . На сервере(мобильное приложение 1С)  возникает внешнее событие:

Сервер отвечает и вот его ответ:

Теперь в обработке запущенной на УТ нажимаем кнопку "отправить POST запрос" . На сервере(мобильное приложение 1С)  возникает внешнее событие:

Сервер отвечает и вот его ответ:

4. Ну пожалуй все.

В Архиве исходники на  компоненту ,сf , и тестовая обработка . В папке package уже готовый zip для компаненты. Все исходники для android написаны под Android Studio 3.6.2. Все, что нужно, само подгрузится. 

См. также

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38196    108    161    

201

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    59291    192    103    

172

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    97225    586    189    

321

Логистика, склад и ТМЦ Сканер штрих-кода Терминал сбора данных Мобильная разработка Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

3450 руб.

28.04.2023    9469    15    0    

9

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    18126    18    33    

22

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    46786    122    66    

66

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4644    1    0    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. boss_kuz 106 18.08.20 10:45 Сейчас в теме
Добрый день. Не подскажите в чем может быть проблема.
Делаю так :
HTTPЗапрос.УстановитьТелоИзСтроки("Привет");
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);

На входе получаю :

СтруктураКонтент = BroadcastКлиент.СоздатьСтруктуруИзAndroid(Данные, Ложь);


В реальности в поле Данные содержится "ривет". т.е. сервис обрезает первый символ.
Причем с json такая же проблема первый символ "{" убирается и его невозможно на приемнике прочитать
4. SanyMaga 69 18.08.20 11:11 Сейчас в теме
(1)
Это кодировка UTF-8 у вас нет Символов BOM

Для указания, что файл или поток содержит символы Юникода, в начале файла или потока может быть вставлен маркер последовательности байтов (англ. Byte order mark, BOM), который в случае кодирования в UTF-8 принимает форму трёх байтов: EF BB BF16.

Они по умолчанию.

Либо поправить код в модуле сервера в Андроид студия.

Я не проверяю просто убераю 2 первых символа.


УстановитьТелоИзСтроки(<ТелоКакСтрока>, <Кодировка>, <ИспользоватьBOM>)
30. nick_e 2 25.04.23 07:28 Сейчас в теме
(4) Я правильно понимаю, эта компонента создает HTTP сервер на мобильном устройстве например ТСД?
А можно через него делать например синхронизацию номенклатуры между ТСД и основной базой на компьютере? Или это тоже самое, что развернуть веб сервер на компьютере опубликовать базу и работать с ней?
2. пользователь 18.08.20 11:06
Сообщение было скрыто модератором.
...
3. SanyMaga 69 18.08.20 11:08 Сейчас в теме
Я не проверяю просто убераю 2 первых символа.


УстановитьТелоИзСтроки(<ТелоКакСтрока>, <Кодировка>, <ИспользоватьBOM>)
5. boss_kuz 106 19.08.20 08:13 Сейчас в теме
Добрый день. ТСД Атол Pro. В мобильном клиенте все работает хорошо, но в мобильном приложении при устанвки внешней компоненты:
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.Макет", "rumalhttpserver", ТипВнешнейКомпоненты.Native) Тогда

Ошибка формата потока.
В чем может быть проблема ?
Параллельно пользуюсь вашей компонентой Rumalutilities. Она работает без проблем.
6. SanyMaga 69 19.08.20 09:46 Сейчас в теме
(5) Иногда после обновления макета вылазит такая ошибка, при первом запуске потом ее нет связанна с кешем.
Если эта ошибка постоянная тогда просьба скрин с деталями ошибки.
7. boss_kuz 106 19.08.20 17:55 Сейчас в теме
Стоит версия 8.3.15.105. Установил файл 1cem-client-arm.apk (мобильный клиент) из поставки 1С подключаюсь к опубликованной базе все работает. Ставим 1cem-arm.apk (мобильное приложение). В конфигураторе - мобильное приложение - обновить мобильное приложение. Запускаем ... происходит обновление приложения на ТСД... При начале работы системы исполняется данный код :
	#Если МобильноеПриложениеКлиент ИЛИ МобильныйКлиент Тогда	
		НачатьУстановкуВнешнейКомпоненты(, "ОбщийМакет.MalHttpServer");	
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"ПослеПодключенияКомпоненты",
			ЭтотОбъект
		);	
		НачатьПодключениеВнешнейКомпоненты(
			ОписаниеОповещения,
			"ОбщийМакет.MalHttpServer",
			"rumalhttpserver",
			ТипВнешнейКомпоненты.Native
		);
	#КонецЕсли
Показать


После этого кода (пробовал также просто ПодключитьВнешнююКомпоненту) падает в ошибку.



Как подробнее даже не знаю что предложить :(
Очищал кэш приложения. Не помогло.
8. SanyMaga 69 19.08.20 20:54 Сейчас в теме
(7)
Я отлаживал как рас в мобильном приложении а не в мобильном клиенте нет.

А вот это сделано?

Во время настройки Web-публикации следует провести следующее действие. В настройках http-сервера необходимо добавить типы MIME для следующих расширений:

.so
.apk
Тип MIME: application/octet-stream
9. boss_kuz 106 20.08.20 05:54 Сейчас в теме
(8) Добрый день. У меня стоит Апач 2.4. Добавил в раздел
<IfModule mime_module>
	#Для отладки Мобильного приложения
	AddType application/octet-stream .so
	AddType application/octet-stream .apk


Не помогло. Помогите . Пожалуйста.
11. boss_kuz 106 20.08.20 08:15 Сейчас в теме
(10) Использовал готовый librumalhttpserver.zip (2291691 байт)
12. SanyMaga 69 20.08.20 09:53 Сейчас в теме
(11)

Вы писали
"Параллельно пользуюсь вашей компонентой Rumalutilities. Она работает без проблем."


Попробовать заменить библиотеку в этой конфигурации просто для проверки.

Не могу пока локализовать вашу проблему.

P.S. Апач разный для конфигураций??
13. boss_kuz 106 20.08.20 15:21 Сейчас в теме
В одной и той же конфигурации используется Rumalutilities и rumalhttpserver. Пробовал тестирование и исправление. Удаление. Установка заново, отключал Rumalutilities все бесполезно. У меня ощущение что все таки что то с правами Андроида. Я полагаю что компонента должна запустить какую-то службу и тут происходит облом. У вас же MalAccservice вынесен отдельно. Вы можете дать какую-нибудь конфигурацию для проверки, где у вас гарантированно работает (я так понял у вас тоже Атолы). Ваше HTTP сервер, ну очень "крутая" штучка. Очень хотелось бы ее воспользоваться.
14. SanyMaga 69 21.08.20 07:54 Сейчас в теме
(13)
cf в aрхиве есть на нем и все отлаживал и скринил.
15. SanyMaga 69 21.08.20 08:20 Сейчас в теме
(13)
У меня 7 андроид был у вас скорей всего 9

Попробуйте в мнифесте (ANDROID_MANIFEST_EXTENSIONS.XML) 1с добавить:
<uses-permission android:name="android.permission.INTERNET" />

подробности: https://its.1c.ru/db/metod8dev/content/3221/hdoc

PS На сколько я знаю на сокеты разрешения не нужны.
16. SanyMaga 69 21.08.20 08:30 Сейчас в теме
(13) Попробуйте другой порт например 2550 (у меня 80 порт не открывался)

Компонента.CreateHttpServer(2550, Имя, Пароль)
17. SanyMaga 69 21.08.20 08:45 Сейчас в теме
(13) Я использовал IIS апач не знаю.
18. boss_kuz 106 22.08.20 04:33 Сейчас в теме
Простите меня , я тупой. Вид макета был "двоичные данные". А нужно "внешняя компонента". Спасибо тебе добрый человек. Вопрос снят.
19. boss_kuz 106 24.08.20 08:32 Сейчас в теме
Добрый день. Обнаружил очередную проблему. Если на Атолев мобильном приложении удалить базу и загрузить заново , то возникает ошибка и 1с закрывается. Второй раз может зайти. На "китайских" терминалах "гарантировано" не заходит. Если отменить установку компоненты все работает. Листинг ошибки :
java.lang.UnsatisfiedLinkError: dalvik.system.DexClassLoader[DexPathList[[zip file "/data/user/0/com.e1c.mobile/files/1C/1cem/34374e2c-3695-c8c3-1227-af6912cfa793/ExtCompT/ru_mal_utilities.apk"],nativeLibraryDirectories=[/data/user/0/com.e1c.mobile/files/1C/1cem/34374e2c-3695-c8c3-1227-af6912cfa793/ExtCompT, /system/lib]]] couldn't find "libru_mal_utilities.so"
	at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
	at java.lang.System.loadLibrary(System.java:1669)
	at ru.mal.malutilities.AddIn1c.run(AddIn1c.java:34)
	at android.os.Handler.handleCallback(Handler.java:873)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:193)
	at android.app.ActivityThread.main(ActivityThread.java:6702)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
Показать
20. SanyMaga 69 17.09.20 17:14 Сейчас в теме
(19)
"/data/user/0/com.e1c.mobile/files/1C/1cem/34374e2c-3695-c8c3-1227-af6912cfa793/ExtCompT/ru_mal_utilities.apk"],nativeLibraryDirectories=[/data/user/0/com.e1c.mobile/files/1C/1cem/34374e2c-3695-c8c3-1227-af6912cfa793/ExtCompT, /system/lib]]] couldn't find "libru_mal_utilities.so


В ошибке указаны >> ru_mal_utilities.apk и libru_mal_utilities.so << а у меня другие апк и со.
скорей всего ошибка кеша.
У вас две моих библиотеки?
21. user833146 17.02.22 17:21 Сейчас в теме
Всем привет. Не получается запустить HTTP сервер (ПодключитьВнешнююКомпоненту) на устройстве.

- Смартфон с android 12.
- 1С:Предприятие 8.3 (8.3.20.1613) - платформа разработки моб. приложения (совместимость Версия 8.3.19)
- 1C:Предприятие 8.3 (8.3.19.59) - моб платформа
- Макет - "внешняя компонента", взял из приложенной cf.

Не проходит в строке: "ПодключитьВнешнююКомпоненту("ОбщийМакет.Макет", "rumalhttpserver", ТипВнешнейКомпоненты.Native)"

Если я правильно понял на счет "ANDROID_MANIFEST_EXTENSIONS.XML",
создал по образцу, добавил <uses-permission android:name="android.permission.INTERNET" />
добавил в архив компоненты, снова загрузил, не сработало...

Если есть идеи буду рад....
22. SanyMaga 69 18.02.22 09:13 Сейчас в теме
Во время настройки Web-публикации следует провести следующее действие. В настройках http-сервера необходимо добавить типы MIME для следующих расширений:

.so
.apk
Тип MIME: application/octet-stream/.

(21)
23. sssmeta 18.02.22 11:04 Сейчас в теме
(22) Да, я видел это в описании, но пока чего-то туплю...Скорее всего я не так что-то делаю, может я не там их прописываю?

"Во время настройки Web-публикации" - имеется ввиду публикации приложения? (Конфигурация->МобильноеПриложение->Публиковать)?
И не очень понял как связано "ПодключитьВнешнююКомпоненту" и настройки Apache.

1) Прописал в "Apache2.2\conf\mime.types" строку: "application/octet-stream bin dms lrf mar dist distz pkg bpk dump elc deploy so apk"

2) Прописал в "Apache2.2\conf\httpd.conf (примерно так)
LoadModule mime_module modules/mod_mime.so
TypesConfig conf/mime.types
AddType application/octet-stream .so .apk

3) Перезапустил Apache

4) Удалил старую публикацию приложения из "httpd.conf" и каталога публикации и из конфигуратора моб. приложения, опубликовал заново.

Если понимаете где мой косяк, подскажите чуть подробнее пожалуйста.
24. SanyMaga 69 18.02.22 13:38 Сейчас в теме
(23) с апачем не работал не знаю.

загрузка архивов внешних компонент в конфигурацию осуществляется в макеты с типом "Внешняя компонента"

https://its.1c.ru/db/metod8dev#content:3221:hdoc:_подготовка_внешних_компонент_для_за
25. igori3333 11 27.03.23 21:12 Сейчас в теме
Добрый, приобрел у вас данную компоненту. К сожалению работает только на 32 битных процессорах. Сможете как-то выслать компоненту для 64?
26. igori3333 11 27.03.23 21:24 Сейчас в теме
Или подскажите как пересобрать исходник для apk и so под 64 бита
27. SanyMaga 69 30.03.23 09:59 Сейчас в теме
(26)
У меня нет под рукой студии(не установлена и поставить не могу).
По моему где то в настройках студии нужно установить процессор 64 бита или поддержку 64 бита и пересобрать проект.
29. igori3333 11 10.04.23 13:31 Сейчас в теме
(28) Спасибо. Уже разобрался. В общем хотел поделиться процессом решения на своём аппарате (Xiaomi 11T).
1) Скачал и установил Android Studio 2019 года.
1.1) Загрузил проект, у меня лично была ошибка установки NDK в gradle, но это быстро решилось. После загрузки пересобрал с настройкой варианта сборки (build Variants) для разной разрядности
2) В самом проекте в папке "app\build\intermediates\stripped_native_libs\debug\out\lib\­" есть файлы so, я их перенес в каталог макета компоненты
и добавил к наименованию их разрядность. В итоге сам каталог должен содержать файлы согласно xml манифеста
<?xml version="1.0" encoding="UTF-8"?>
<bundle name="ru_mal_httpserver" xmlns="http://v8.1c.ru/8.2/addin/bundle">
<component arch="ARM" type="native" codeType="c++" path="libru_mal_httpserver_ARM.so" os="Android"/>
<component arch="ARM" type="native" codeType="java" path="ru_mal_httpserver.apk" os="Android"/>
<component arch="ARM64" type="native" codeType="c++" path="libru_mal_httpserver_ARM64.so" os="Android"/>
<component arch="ARM64" type="native" codeType="java" path="ru_mal_httpserver.apk" os="Android"/>
<component arch="i386" type="native" codeType="c++" path="libru_mal_httpserver_x86.so" os="Android"/>
<component arch="i386" type="native" codeType="java" path="ru_mal_httpserver.apk" os="Android"/>
<component arch="x86_64" type="native" codeType="c++" path="libru_mal_httpserver_x64.so" os="Android"/>
<component arch="x86_64" type="native" codeType="java" path="ru_mal_httpserver.apk" os="Android"/>
</bundle>
3) Запаковал их в zip и перекинул в макет конфигурации и так заработало под arm64
31. SanyMaga 69 26.04.23 13:16 Сейчас в теме
Оставьте свое сообщение