Внешние компоненты мобильной платформы 1С для ОС Андроид

Публикация № 987286

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

Мобильная платформа Внешние компоненты Андроид

На трех простых примерах описана процедура разработки внешних компонент для Андроид. Статья написана по мотивам доклада на конференции INFOSTART 2018 EDUCATION.

Условия успешного старта

 

Поддержка технологии внешних компонент (ТВК) мобильной платформой 1С начиная с 8-го релиза является почти революционным шагом. Особое ее значение проявляется в сегменте приложений для терминалов сбора данных и другого специального оборудования, где дизайн приложения (минус платформы 1С) играет второстепенную роль по отношению к функциональности. Мобильная технология внешних компонент, точно также как и стационарная, поддерживает работу с внешними устройствами. Кроме того, она позволяет расширить функциональность приложений, используя возможности ОС Андроид, напрямую обращаясь к API SDK.

Со стороны программистов 1С с момента выхода к этой технологии проявляется устойчивый интерес. Вместе с тем в библиотеке Инфостарта и в сети пока мало реальных рабочих примеров, пусть даже с закрытым кодом, хотя ее описание и учебный пример опубликованы на официальном ресурсе 1С в открытом доступе. Как мне кажется, есть несколько препятствий для освоения технологии. Во-первых, примеры не содержат указания на среду разработки (кроме компонент для Windows 8 phone, но это выходит за рамки статьи), во-вторых, они скорее предназначены для профессионалов, имеющих опыт программирования на C++ под Android NDK и Java. Огромную трудность представляет отладка и поиск ошибок, половина из которых приводят к "падению" платформы. Для программиста с малым опытом в Android SDK и C++ JNI поиск источника ошибки будет непреодолимой преградой, если учесть, что сама ошибка может быть не в собственном коде, а в мобильной платформе.

В этой статье я попытаюсь объяснить по шагам процедуру создания внешних компонент на трех простых примерах. Но следует предупредить начинающих, что даже собрав и запустив эти примеры, на каждом следующем шаге в процессе самостоятельного освоения, вы будете сталкиваться с большими преградами. "Серебряной пули" на этом пути не существует! Мобильная разработка требует специфического опыта. К освоению технологии лучше приступать, если вы сталкивались с написанием нативных (NativeAPI) компонент для стационарной платформы 1С, знаете как и в какой последовательности платформа вызывает API компоненты, какие внешние интерфейсы и зачем должна реализовать компонента - эти вопросы здесь рассматриваться не будут. Также вам необходим опыт разработки приложений под Андроид. Особое внимание уделите средствам взаимодействия управляемого и неуправляемого кода (JNI). В награду, если у вас получится создать несколько мобильных компонент, вы окажетесь на голову выше не только ваших коллег 1С-ников, но и многих разработчиков Android, которые часто ограничиваются Java, Android SDK и frontend'ом. В отличие от них, вы будете знать такие сложные темы, как JNI, NDK, многопоточность, устройство ядра.

 

Архитектура

Мобильная платформа предоставляет разработчикам внешних компонент интерфейс IComponetnBase (файл ComponentBase.h). Он является базой функционирования как мобильной так и десктопной внешней компоненты и состоит из интерфейсов:

  • IInitDoneBase - шлюз для получения функциональности платформы: загрузка/выгрузка, управление памятью, генерация внешних событий
  • ILanguageExtenderBase - описатель типа компоненты, предоставляет возможности для расширения встроенного языка 1С
  • LocaleBase - управление локализацией компоненты

При начале работы с компонентой 1С вызывает несколько классических экспортных C-функций из динамической библиотеки компоненты:

  • GetClassNames - возвращает имена объектов вашей компоненты, это то, что пишется после на месте <объект> в коде 1С: 
  • Новый("AddIn.<псевдоним>.<объект>");
  • GetClassObject - создает ваш объект компоненты, реализующий IComponentBase
  • DestroyObject - удаляет объект
  • SetPlatformCapabilities - получает версию платформы (для мобильной платформы в настоящий момент версия не важна)

Таким образом, наша задача - реализовать методы интерфейса IComponentBase. Минимальную компоненту можно сделать на C++, используя API ядра Linux. Но, к сожалению, их множество очень ограничено, поэтому трудно обойтись без JNI. С его помощью можно создавать и вызывать функции объектов java и, за некоторыми исключениями, написать компоненту полностью. Но перевести весь java-код в JNI очень трудоемко и чревато трудно обнаруживаемыми ошибками. Это может пригодится только, если вы хотите защитить свой код. В обычной практике лучше использовать часть на C++ как промежуточный слой, а главную реализацию сделать на Java.

Разработчики платформы предоставляют нам доступ к движку Java через API getJniEnv() и интерфейс IAndroidComponentHelper. Последний обеспечивает доступ к контексту мобильного приложения через GetActivity() - функцию, возвращающую активность приложения. Класс java, отвечающий за взаимодействие с кодом на C++ реализует интерфейс Runnable. Это - признак многопоточности, т.е. компонента запускается в отдельном потоке (thread) приложения. Одно из следствий этого - невозможность взаимодействия с интерфейсом приложения и создания собственных активностей.

Обратные вызовы платформы из Java-кода функций C++ выполняются через Java native call. Часто в технологии внешних компонент эти вызовы используются для генерации внешних событий.

В примерах я покажу, как создать простейшую компоненту на C++ (пример 1), как вызвать методы классов Java стандартных библиотек Андроида (пример 2) из C++ кода. Пример 3 представит приложение, реализующее все участки архитектуры.

 

Среда разработки

 

В принципе, для создания мобильных внешних компонент необходим компилятор C++ и Java под Android SDK. Для них существует много RAD и вы можете использовать любые по своему вкусу. Содержание этого раздела отражает лишь мой личный опыт использования MS Visual Studio 2017 и Android studio. Но кто-то захочет предпочесть NetBeans, Eclipse и др. - выбор широк.

Для разработки на VS2017 + Android studio на вашем компьютере должны быть:

  1. Операционная система Windows 10 pro или выше.
  2. Платформа 1С:Предприятие 8.3, необходимо скачать архив свежего релиза мобильной платформы (рекомендуем не ниже 12го!), распаковать и установить сборщик мобильных приложений. (Этот этап и настройку сборщика не описываем, полагаем программисты 1С мобильных приложений знают, как это делать).
  3. С сайта ИТС скачать и распаковать в отдельную папку примеры внешних компонент, нам впоследствии понадобятся из них отдельные заголовочные файлы для C++ проекта.
  4. Со страницы https://visualstudio.microsoft.com загружаем небольшой установщик Visual studio community edition. Эта версия свободная и может использоваться индивидуальными разработчиками для создания коммерческих продуктов. (Если у вас есть платная версия - конечно используйте ее).
  5. Запускаем установщик, после того, как он подготовит среду, ожидаем экран, похожий на этот: Если вы планируете использовать студию только для разработки мобильных компонент, вам достаточно включить флажок "Mobile development with C++". Запускаем установку и ожидаем ее окончания. Все компоненты студия загружает из интернет, поэтому позаботьтесь о хорошем канале.
  6. Загружаем установщик Android studio: https://developer.android.com/studio. Запускаем и устанавливаем продукт.
  7. Запускаем Android studio, чтобы она загрузила и установила необходимые компоненты, в первую очередь Android SDK.

 

Пример 1: "Задержка"

Внешняя компонента без использования JNI

Реализация первого примера очень простая, буквально пара строчек кода, которые я приведу в конце раздела (не считая реализации архитектуры компоненты конечно). Вначале сосредоточимся на создании проекта. В Visual studio создаем новый проект с типом C++ cross platform mobile - android - dynamic shared library:

После открытия проекта Visual studio создаст два файла с именем проекта: SharedObject1.h и SharedObject1.cpp. Я их удаляю - мы будем использовать заготовки из шаблона внешних компонент 1С.

На этом рисунке показаны из шаблона, которые вам необходимо включать в проект каждой компоненты. Вносить изменения в них не рекомендуется. Теперь настроим свойства проекта. На закладке General я изменяю имя выходного файла с учетом архитектуры процессора (выделено жирным), чтобы их можно было помещать в архив компоненты без переименования. В качестве компилятора можно использовать любой, я предпочитаю GCC, по отзывам генерирующий более эффективный код для ARM процессоров:

Версию языка (закладка Language с разделе C/C++) установим 11-ю, чтобы использовать преимущества современного C++ при разработке.

Теперь необходимо создать основной класс компоненты, который будет вызываться из 1С кодом:

Компонента = Новый("AddIn.Sample.Infostart2018");

Он наследуется от IComponentBase. Начинающий разработчик может взять за образец файлы AddInNative.h и AddInNative.cpp. В определении класса следует модифицировать перечисления Props и Methods и приватную часть класса. Наш пример будет выполнять задержку в ходе работы приложения на заданное число миллисекунд, логично для этого сделать метод: в перечислении Methods добавим значение eMethDelay. В файле AddInNative.cpp прописываем в статические массивы g_MethodNames и g_MethodNamesRu английское и русское имя метода. Сигнатуры методов задаются в GetNParams, GetParamDefValue и в HasRetValue. Пусть метод Delay принимает один параметр - целое число - количество миллисекунд задержки, соответственно GetNParams должен вернуть 1, HasRetValue - false. Реализацию метода пишем в CallAsProg. В ОС Андроид задержку можно реализовать, вызвав API ядра Linux - sleep или воспользоваться стандартной библиотекой C++ (здесь нам пригодилось использование версии 11 языка). Выберем последний вариант как более универсальный:

long lDelay = numericValue(paParams);
if (lDelay > 0)
  std::this_thread::sleep_for(std::chrono::milliseconds(lDelay));

После компиляции проекта для процессоров ARM и x86 создадим манифест компоненты:

<?xml version="1.0" encoding="UTF-8"?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle" name="ru_infostart_education">
  <component os="Android" path="libru_infostart_education_ARM.so" codeType="c++" type="native" arch="ARM"/>
  <component os="Android" path="libru_infostart_education_x86.so" codeType="c++" type="native" arch="i386"/>
  <component os="Android" path="infostart.apk" codeType="java" type="native" arch="ARM"/>
  <component os="Android" path="infostart.apk" codeType="java" type="native" arch="i386"/>
</bundle>

Если мы хотим ограничиться только первым или вторым примерами, apk-составляющие в архив можно не включать. Независимо от архитектуры устройства, имя разворачиваемой компоненты будет ru_infostart_education - оно нам потребуется в третьем примере, когда мы будет из java делать обратный вызов в библиотеку C++. Помещаем в архив динамические библиотеки so и этот манифест - и компонента готова.

 

Пример 2: "Информация об устройстве"

Внешняя компонента с вызовами JNI

 

Задача следующего примера - продемонстрировать вызовы сущностей объектов java из C++. Для этого попробуем получить имя производителя и модели устройства с помощью класса Build. В компоненте реализуем свойство ePropDevice только для чтения. Для настройки сигнатур свойств IComponentBase предоставляет ряд методов, которые должны быть читателю известны по технологии внешних компонент для настольной платформы. Сосредоточимся на коде:

IAndroidComponentHelper* helper = (IAndroidComponentHelper*)m_iConnect->GetInterface(eIAndroidComponentHelper);
pvarPropVal->vt = VTYPE_EMPTY;
if (helper)
{
	WCHAR_T* className = nullptr;
	convToShortWchar(&className, L"android.os.Build");
	jclass ccloc = helper->FindClass(className);
	delete[] className;
	className = nullptr;
	std::wstring wData{};
	if (ccloc)
	{
		JNIEnv* env = getJniEnv();
		jfieldID fldID = env->GetStaticFieldID(ccloc, "MANUFACTURER", "Ljava/lang/String;");
		jstring	jManufacturer = (jstring)env->GetStaticObjectField(ccloc, fldID);
		std::wstring wManufacturer = ToWStringJni(jManufacturer);
		env->DeleteLocalRef(jManufacturer);
		fldID = env->GetStaticFieldID(ccloc, "MODEL", "Ljava/lang/String;");
		jstring	jModel = static_cast<jstring>(env->GetStaticObjectField(ccloc, fldID));
		std::wstring wModel = ToWStringJni(jModel);
		env->DeleteLocalRef(jModel);
		if (wManufacturer.length())
			wData = wManufacturer + L": " + wModel;
		else
			wData = wModel;
		env->DeleteLocalRef(ccloc);
	}
if (wData.length())
	ToV8String(wData.c_str(), pvarPropVal);

Фактически это - классический вызов статических свойств класса java через JNI с той разницей, что указатель на окружение виртуальной машины извлекается не из функции main, а из getJniEnv() или IAndroidComponentHelper. Вспомогательные функции ToWStringJni и ToV8String выполняют преобразования строк и параметров, их код вы найдете в примере к статье. В коде C++ внешней компоненты следует строго следовать правилам программирования JNI, по собственному опыту сформулирую наиболее важные моменты:

  • возвращайте как можно раньше указатели сборщику мусора с помощью DeleteLocalRef и DeleteGlobalRef
  • локальные указатели преобразовывайте в глобальные, если их следует передавать в другие процедуры, а также если в процессе их "жизни" используются методы интерфейсов 1С (например, передается внешнее событие ExternalEvent)
  • при работе с java-строками GetStringChar, а не GetStringUTFChar, не забывайте о ReleaseStringChars. Помните, что в Андроид размер переменной char равен 16 битам

 

Пример 3: "Состояние экрана"

Внешняя компонента с кодом java

 

Создадим внешнюю компоненту, отслеживающую событие разблокировки экрана устройства и посылающую об этом оповещение в 1С. В андроиде все оповещения получает класс BroadcastReceiver, который перед регистрацией в контексте приложения предварительно необходимо настроить, указав в отслеживаемые намерения (Intent) и возможно другие параметры. Настройка выполняется в коде или в манифесте приложения. Во внешней компоненте доступен только первый вариант, так как манифест создается сборщиком приложений автоматически. Логика работы компоненты будет реализована на java, а код C++ будет вызывать сущности из apk и  передавать внешние события в 1С. Создание объектов и вызов сущностей из созданной вами компоненты на java точно такое же как в примере 2 для стандартных библиотек - через JNI. Чтобы объекты apk были доступны из C++, они должны быть публичными (public). Для создания java-приложения компоненты сделайте в Android studio проект без активностей, я также удаляю из него лишние ресурсы (папка res), но это не обязательно. Ни ресурсы ни манифест проекта для компоненты значения не имеют и в ней не используются. В проект добавляем класс, реализующий интерфейс Runnable, например так:

И реализуем его как класс внешней компоненты. Для генерации внешних событий будет необходимо вызывать функцию из нашей динамической библиотеки. Имя ее мы задали в манифесте компоненты - "ru_infostart_education", а имя экспортной функции, вызываемой по правилам языка C должно состоять из префика Java_, имени пространства имен в apk (у нас это будет ru.infostart.education) и имени нативной java функции, которую нужно задекларировать в классе. Первые два аргумента зависят от типа функции (статический член класса или нет), остальные аргументы должны соответствовать декларации. Подробнее об этом смотрите в правилах вызова нативных функций из java. После сборки apk в Android studio, его следует переименовать в infostart.apk и поместить в архив.

Подробнее покажем взаимодействие класса LockState с C++ кодом. В нем объявим такой член:

static native void OnLockChanged(long pObject);

Соответствующая функция C в коде компоненты должна быть следующей:

extern "C" JNIEXPORT void JNICALL Java_ru_infostart_education_LockState_OnLockChanged(JNIEnv* env, jclass jClass, jlong pObject)

в ней реализуем генерацию внешнего события в 1С через ExternalEvent. Требует пояснения аргумент pObject - это указатель на интерфейс 1С платформы, который передается в класс LockState в его конструкторе. Он нужен, чтобы вернуть его обратно в экспортную функцию, так как функции типа extern с C++ не могут принадлежать какому-то классу и мы не можем в них получать адреса интерфейсов, который хранит AddInNative. Другое решение данной проблемы - глобальная переменная в коде C++ компоненты, но оно с точки зрения объектно-ориентированного подхода хуже. Приведем код начала класса LockState:

public class LockState implements Runnable {

  // in C/C++ code the function will have name Java__ru_infostart_education_LockState_OnLockChanged
  static native void OnLockChanged(long pObject);

  private long m_V8Object; // 1C application context
  private Activity m_Activity; // custom activity of 1C:Enterprise
  private BroadcastReceiver m_Receiver;

  public LockState(Activity activity, long v8Object)
  {
    m_Activity = activity;
    m_V8Object = v8Object;
  }

  public void run()
  {
    System.loadLibrary("ru_infostart_education");
  }

  public void show()
  {
    m_Activity.runOnUiThread(this);
  }

Член m_Activity необходим для получения контекста приложения, с его помощью можно зарегистрировать BroadcastReceiver. В методе run выполняется загрузка so-библиотеки в управляемый код. Метод show стандартен, он позволяет выполнить код компоненты в контексте вашего приложения.

Полный код этого и предшествующих примеров, а также конфигурацию 1С для их вызовов участники INFOSTART 2018 Education могут получить на форуме конференции. Для всех - ссылка на эти же примеры в приложении.

****************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2018 EDUCATION. Больше статей можно прочитать здесь.

В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.

Выбрать мероприятие.

Скачать файлы

Наименование Файл Версия Размер
Примеры к статье

.htm 1,08Kb
01.02.19
170
.htm 1,08Kb 170 Скачать бесплатно

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. user623969_dusa 31.01.19 13:21 Сейчас в теме
почему си на андроиде? потому что внешние компоненты на си легче писать??
2. Xershi 981 31.01.19 20:16 Сейчас в теме
Возьму на заметку.
Как раз подхожу к этапу разработки:
https://forum.infostart.ru/forum15/topic202825/
3. ni032mas 100 01.02.19 08:32 Сейчас в теме
Отличная статья, спасибо. Я все время думаю, зачем это все? Получается, чтобы написать хорошее мобильное бизнес приложение на платформе 1С нужны: C++, Java и 1C разработчики, это как минимум дорого. А найти три в одном не простая задача для HR. Плюс ко всему приложение на 1С проигрывает нативным по скорости работы, по отзывчивости, по возможности кастомизации интерфейса. А еще есть куча багов от 1С, порой которые ставят крест на всем проекте. Сам уже несколько лет забил на мобильную платформу и начал писать нативно под Android.
neikist; chemezov; rhtr; it_tungus; +4 Ответить
4. KostyaBu 20 04.02.19 19:47 Сейчас в теме
Уважаемые коллеги Прошу помощи пишу внешнюю компоненту которая достает из буфера обмена скопированные данные.
В разработке компонента более менее разобрался добавил свою процедуру которая успешно возвращает в 1с " Привет мир".
Однако при инициализации ClipboardManager(а) Сервис с помощью которого можно обратится к буферу: m_ClipboardManager = (ClipboardManager)
m_Activity.getSystemService(Context.CLIPBOARD_SERVICE) Компонента отваливается вместе с 1с молча падает. Однако подобный пример только с датчиками движения, как на итс работает.

Итак вопрос. Нужны ли какие разрешения для создания CLIPBOARD_SERVICE и в чем хитрость работы именно этого сервиса, другой с датчиками ведь успешно запускается,

Благодарен любой подсказке.
5. IgorKissil 285 08.02.19 12:43 Сейчас в теме
(4) Реализовал буфер в своей компоненте: https://infostart.ru/public/779912/ С получением сервиса и операциями copy/paste не нашел никаких проблем - вы что-то делаете не так. Трудности будут с получением callback'а об изменении буфера, потребуются знания многопоточности и одна хитрость. Но тоже, как видите, преодолимо.
KostyaBu; +1 Ответить
6. KostyaBu 20 08.02.19 17:01 Сейчас в теме
(5) Прежде всего хотел выразить благодарность что вы откликнулись. Увидел что вы уже все реализовали и я скачал. спасибо! Но очень хочется разобраться времени много потрачено нужно разобраться.

напишу кусок из Вашего примера дописка в инициализации класса:

private long m_V8Object; // 1C application context
private Activity m_Activity; // custom activity of 1C:Enterprise
private BroadcastReceiver m_Receiver;
private String text;
private ClipboardManager m_ClipboardManager = null;


// private ClipData.Item item= null;;

public LockState(Activity activity, long v8Object)
{
m_Activity = activity;
m_V8Object = v8Object;
m_Context = activity.getBaseContext();

m_ClipboardManager =(ClipboardManager) m_Context.getSystemService(Context.CLIPBOARD_SERVICE); (Здесь падает)

}

хотя сервис доступа к сенсорам получаю без проблем как в примере Степ каунтер.
m_SensorManager = (SensorManager) m_Context.getSystemService(Context.SENSOR_SERVICE);

Заранее благодарен за ответ!
7. IgorKissil 285 08.02.19 17:37 Сейчас в теме
(6) Зачем вам getBaseContext? Используйте контекст активности или приложения
KostyaBu; +1 Ответить
8. KostyaBu 20 08.02.19 20:47 Сейчас в теме
(7)
я его написал от безисходности т.к

m_Activity.getSystemService(Context.CLIPBOARD_SERVICE);
тоже падает (вся система вместе с 1с закрывается)
9. KostyaBu 20 08.02.19 20:51 Сейчас в теме
(7)
такое чувство. что на CLIPBOARD_SERVICE есть какое то ограничение. а с m_SensorManager = (SensorManager) m_Context.getSystemService(Context.SENSOR_SERVICE); как в примере от 1с проходит все гладко но Вы в своей компоненте доказали что я где- то что то не понимаю ((. Осталось понять что.
10. user1169242 11.03.19 15:44 Сейчас в теме
Коллеги. Прошу совета. Задолбался уже искать причину.
void connect() { 
    Initialize(); 
    StartAPKMethod(); 
} 

void disconnect() { 
    StopAPKMethod(); 
} 

void StartAPKMethod(){ 
    if (obj){ 
        JNIEnv* env = getJniEnv(); 
        jmethodID methID = env->GetMethodID(cc, "start", "()V"); 
        env->CallVoidMethod(obj, methID); 
    } 
} 
void StopAPKMethod(){ 
    if (obj) { 
        JNIEnv* env = getJniEnv(); 
        jmethodID methID = env->GetMethodID(cc, "stop", "()V"); 
        env->CallVoidMethod(obj, methID); 
        env->DeleteGlobalRef(obj); 
        env->DeleteGlobalRef(cc); 
        obj = nullptr; 
        cc = nullptr; 
    } 
}
Показать

Если сделать так:
for(int i=0; i<100; ++i){
   connect();
   disconnect();
}


То приложение стабильно падает. Собственно пример синтетический. На самом деле приложение периодически падает при закрытии мобильного приложения 1с. Очевидно все дело в уничтожении объектов, но куда копать и почему оно падает не всегда - понять не могу
11. ineshyk 07.05.19 22:57 Сейчас в теме
Скачал Демку 1С, залил на телефон. При запуске пишет ошибка подключения внешней компоненты
25. user602678_maxipunchik 48 30.06.20 09:49 Сейчас в теме
(11)
Во время публикации приложения в настройках http-сервера необходимо добавить типы MIME для следующих расширений: .so, .apk, .dylib, .a. Тип MIME: application/octet-stream.
12. Ignat87 02.08.19 15:04 Сейчас в теме
Ребята, помогите. В VS 2019 собрал пустое приложение (i386 b ARM) из шаблона ИТС для мобильных платформ, но на участке кода ПодключитьВнешнююКомпоненту("ОбщийМакет.TestVK", "TestVK", ТипВнешнейКомпоненты.Native) платформа просто падает без описания ошибок.

Я новичек в этом деле, в чем проблема - не пойму. Сделал вроде все правильно. Прикреплю файл с проектом, может кто подскажет, в чем проблема.
Прикрепленные файлы:
Компонента и ее исходник.rar
13. refostart 14.08.19 16:51 Сейчас в теме
Хотелось бы уточнить, есть ли какой-то способ что-то логировать в Java-коде? Написание почти с нуля в лоб внешних компонент весьма проблематичная задача.
14. IgorKissil 285 15.08.19 04:38 Сейчас в теме
(13)Посмотрите шагомер от 1С, файл jnienv.cpp. Логирование делается как описано здесь: https://developer.android.com/ndk/reference/group/logging Ну и почитайте https://developer.android.com/studio/debug/am-logcat
chemezov; refostart; +2 Ответить
15. ripreal1 446 07.11.19 08:59 Сейчас в теме
Столкнулись с проблемой, что компонента не может вызывать java классы, если она была инициализирована на сервере. Расследование показало, что причина кроется в методе IAndroidComponentHelper->FindClass(), который возвращает null, При вызове компоненты с клиента все работает отлично. Отрывок кода на C++:

Код использую типовой:

IAndroidComponentHelper* helper = (IAndroidComponentHelper*)cnn->GetInterface(eIAndroidComponentHelper);
if (helper)
	{
		WCHAR_T* className = nullptr;
		convToShortWchar(&className, L"org.biterp.prmqmobile.MainApp");
		jclass ccloc = helper->FindClass(className); // Метод возвращает NULL
		delete[] className;
		className = nullptr;
		if (ccloc)
		{
			JNIEnv* env = getJniEnv();
			cc = static_cast<jclass>(env->NewGlobalRef(ccloc));
			env->DeleteLocalRef(ccloc);
			jobject activity = helper->GetActivity();
			// call of constructor for java class
			jmethodID methID = env->GetMethodID(cc, "<init>", "(Landroid/app/Activity;J)V");
			jobject objloc = env->NewObject(cc, methID, activity, (jlong)cnn);
			obj = static_cast<jobject>(env->NewGlobalRef(objloc));
			env->DeleteLocalRef(objloc);
			methID = env->GetMethodID(cc, "show", "()V");
			env->CallVoidMethod(obj, methID);
			env->DeleteLocalRef(activity);
		}
	}
Показать


Кому-нибудь удалось выывать Java код для компоненты с сервера?
16. IgorKissil 285 07.11.19 10:12 Сейчас в теме
(15)Верно. Мобильные компоненты работают только на клиенте. Потому что есть мобильный клиент. Как вы думаете, где выполняются его Функции и процедуры с директивой &НаСервере? Правильно, на сервере предприятия с среде windows или Linux.
17. ripreal1 446 07.11.19 12:40 Сейчас в теме
(16) Я пытаюсь запустить не на мобильном клиенте, а на автономном мобильном приложении. Вроде сами разработчики платформы говорили, что аннотации &НаСервере оставлены там только ради обратной совместимости и весь код исполняется в рамках одного приложения. Как-то странно, что "На Сервере" не работает.
18. lokli 20.11.19 11:02 Сейчас в теме
Добрый день. Разбираю ваши исходники, пытаюсь разобраться в данном вопросе. Подскажите, в каком направлении копать, что бы передавать в 1С данные из бродкаста (например, как при работе со сканером или с буфером обмена)?
bildovich; +1 Ответить
19. KAV2 98 12.04.20 09:30 Сейчас в теме
20. KAV2 98 12.04.20 09:46 Сейчас в теме
Подскажите пожалуйста, зачем вызывается runOnUiThread(this) в методе Show?

обычно, runOnUiThread() вызывается следующим образом:
runOnUiThread(new Runnable() {

                        Тут что-то делаем в отдельном UI-потоке.
});


Но в вашем примере UI-поток создается, но в нем ничего не делается.
21. KAV2 98 12.04.20 14:02 Сейчас в теме
(20) Вопрос снимаю, разобрался.

Строка runOnUiThread(this) как раз и вызывает метод Run, который будет выполниен в UI-потоке.
22. evgeny43 15 22.04.20 16:57 Сейчас в теме
Добрый день
Ругается на русские буквы при указанных настройках проекта во время компиляции , не подскажите что сделать ?

Ошибка:
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка converting to execution character set: Illegal byte sequence
{ L"�������" };
^ MyDllForJava D:\C#andAndroid\C++\vncomps\VNCOMPS\VNCOMP83\templateMobile\AddIn­Native.cpp 25
23. evgeny43 15 23.04.20 15:48 Сейчас в теме
(22)Решение найдено: сам файл класса был в кодировке 1251 и с помощью нотепада я перевел его в utf-8 .
Хочу заметить , что параметры командной строки для компилятора положительного эффекта не возымели .
24. evgeny43 15 24.04.20 18:30 Сейчас в теме
Добрый вечер коллеги. Не смог решить проблемы преобразования jstring в wchar_t.
extern "C" JNIEXPORT void JNICALL Java_ru_MyDLLForJava_education_CallAndWorkJava_BarcodeDecode­Data(JNIEnv * env, jclass jClass, jlong pObject,jstring pString)
{
wchar_t* g_Date = JavaToWSZ(env, pString);
WcharWrapper s_Date(g_Date);
delete[] g_Date;
IAddInDefBaseEx* pAddIn = (IAddInDefBaseEx*)pObject;
pAddIn->ExternalEvent(s_EventSource, s_EventName, s_Date);
}

-g_Date итог - получается частичная кроказябра .


Подскажите пожалуйста мб , кто уже решал данную проблему .
Не откажусь и от предложения как предать из java байты и преобразовать их к wchar_t в С++
Оставьте свое сообщение

См. также

Внешняя компонента для работы по Web-socket протоколу Промо

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

5 стартмани

30.03.2018    23050    32    Ditron    68    

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

Разработка внешних компонент Мобильная разработка v8 v8::Mobile 1cv8.cf Абонемент ($m)

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

1 стартмани

22.06.2020    836    3    SanyMaga    0    

Перехват сканирования Android Native API

Разработка внешних компонент Мобильная разработка v8::Mobile Абонемент ($m)

Native компонента для перехвата сканирования шк и передачу в мобильную 1С.

1 стартмани

29.04.2020    2207    11    evgeny43    16    

Мобильная платформа. Уникальный идентификатор устройства Android при помощи внешней компоненты. Не IMEI

Разработка внешних компонент Мобильная разработка v8::Mobile Абонемент ($m)

Идентифицируем устройства, на которых установлены копии нашего приложения.

3 стартмани

23.04.2020    1572    1    kinan    3    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019) Промо

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8 v8::Mobile БУ УУ Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    39442    245    informa1555    200    

Мобильная платформа. Шифрование строк в Android при помощи внешней компоненты

Разработка внешних компонент Защита и шифрование v8::Mobile Молдова Абонемент ($m)

Внешняя компонента для мобильной платформы на Android. Шифруем строки.

3 стартмани

15.04.2020    1403    0    kinan    0    

Android Java и NativAPI C++ внешняя компонента для широковещательных сообщений (отправка и прием). Подключаем сканер ШК и клавиатуру к "1С мобильное приложение"

Оптовая торговля Розничная торговля Сканер штрих-кода Разработка внешних компонент Мобильная разработка v8::Mobile Оптовая торговля, дистрибуция, логистика Абонемент ($m)

Подключаем сканер ШК и клавиатуру к "1С мобильное приложение", на терминале сбора данных "ATOL Smart.Lite android 7.0". Работаем с буфером обмена. В архиве к теме; 1. исходник компоненты (папка package готовый zip); 2. исходник "AccessibilityService" для перехвата клавиатуры (папка package готовый apk); 3. cf - тестовая конфигурация

1 стартмани

15.04.2020    1952    15    SanyMaga    19    

Мобильная платформа. Реакция на внешнее событие в Android при помощи внешней компоненты

Мобильная разработка Разработка внешних компонент v8::Mobile Молдова Абонемент ($m)

Внешняя компонента для мобильной платформы на Android. Пришиваем платформе уши, чтобы лучше слышать.

3 стартмани

06.04.2020    2393    4    kinan    13    

TextRadar - нечеткий поиск в тексте Промо

Разработка внешних компонент Поиск данных v8 1cv8.cf Абонемент ($m)

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

1 стартмани

19.09.2018    15371    18    TSSV    18    

Обработка голосового ввода текста с использованием (intent)

Мобильная разработка v8::Mobile 1cv8.cf Абонемент ($m)

Обработка для голосового ввода текста с использованием дополнительных возможностей ОС Android.

1 стартмани

26.02.2020    1998    1    algabas    7    

Пример реализации HTML-формы календаря для мобильного приложения

Работа с интерфейсом Мобильная разработка v8::Mobile Абонемент ($m)

Реализация функциональной мобильной формы календаря, которая красиво трансформируется в список задач.

5 стартмани

13.02.2020    2581    10    ingeneerz@gmail.com    0    

Быстрая печать этикеток (ZPL, EPL, TSPL, EZPL, GEPL, TSPL-EZ)

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Качественная и быстрая печать на внутреннем языке принтеров этикеток.

4 стартмани

02.02.2020    4403    21    Johny_v    5    

Беспроводные метки NFC Промо

Мобильная разработка v8::Mobile Абонемент ($m)

Технический прогресс не стоит на месте, появляющиеся новые технологии со временем дешевеют и становятся доступны практически всем желающим. Как пример можно привести мобильные телефоны. Середина 80-ых - начало 90-ых были переносные таксофоны с ручками или кирпичи стоимостью несколько тысяч $, конец 90-ых - большого размера трубки, с торчащими антеннами со стоимостью от 100$ Такую же аналогию можно провести с NFC метками, используемыми в учетных целях.

1 стартмани

16.05.2017    20222    46    PloAl    18    

Simple UI: простой конструктор мобильных приложений для устройств на Android.Самый быстрый способ создания рабочего места на смартфоне или ТСД. Обновление от 30.05.2020: июньский пак дополнений

Мобильная разработка v8 УУ Абонемент ($m)

Simple UI – это бесплатная платформа для создания мобильных рабочих мест на Android. Конструктор позволяет создавать мобильные клиенты для учетных систем и самостоятельные приложения на телефонах, ТСД (терминалах сбора данных), планшетах, электронных киосках и других устройствах. При этом не нужно разбираться в мобильной разработке, Android SDK ведь основная цель платформы – максимально упростить процесс разработки и поддержки, сделать его визуальным, собирать приложения из готовых блоков с минимумом кода. Причем код обработчиков можно писать на языке учетной системы либо задавать логику обработки событий с помощью команд REST, SQL и визуального конструктора. Проект постоянно развивается изыскивая новые способы упрощения разработки и повышения функционала и является пожалуй самым быстрым способом как создать MVP-проект так и продакшн-систему под конкретное внедрение или тиражный продукт.Тестировалось на 1С: Предприятие 8.3 релиз 8.3.13.1865.

5 стартмани

14.11.2019    10845    94    informa1555    71    

Получение AndroidID в мобильном приложении

Мобильная разработка v8::Mobile Россия Абонемент ($m)

Получаем Android DeviceID в мобильном приложении/клиенте, используя стороннее приложение.

1 стартмани

05.11.2019    6211    3    sam441    11    

ODa - Android приложение для подключения к любой конфигурации 1С, используя OData протокол

Мобильная разработка v8 1cv8.cf Абонемент ($m)

В платформе 1С реализована прекрасная возможность работы с открытым веб-протоколом OData, который предоставляет любой другой платформе интерфейс доступа - возможность запрашивать и обновлять данные из базы 1С. Далее в статье будут описаны особенности работы мобильного приложения ODa, которое без программировании на стороне Android'a позволит разработчикам публиковать базы 1С, что даст возможность обычным пользователям взаимодействовать с объектами метаданных, используя нативные элементы интерфейса платформы Android.

1 стартмани

22.10.2019    8217    8    Kosigo    11    

Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент. Промо

Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Данная разработка создана для использования сборок .Net в 1С через преобразование объектов и классов в COM-объекты, которые можно использовать в 1С. Достигается это путем создания класса, реализующего методы интерфейса IReflect public class AutoWrap: IReflect.

1 стартмани

28.11.2013    79218    231    Serginio    71    

Маленькая и скромная мобильная внешняя компонента

Разработка внешних компонент v8 Абонемент ($m)

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

1 стартмани

21.10.2019    7976    4    ripreal1    25    

Native внешняя компонента для оповещения по UDP или TCP

Разработка внешних компонент v8 Абонемент ($m)

Native внешняя компонента для оповещения по UDP или TCP, которая реализует возможность в 1С передавать сообщения с сервера на клиента. Исходный код компоненты также представлен.

1 стартмани

06.10.2019    7422    13    vdv2701    26    

Мой помощник и бухгалтер

Учет доходов и расходов Мобильная разработка v8::Mobile Домашние учет и финансы Россия УУ Абонемент ($m)

Домашняя бухгалтерия, записная книжка, контакты, напоминания, сканер штрих-кода, матрица Эйзенхауэра - все в твоём телефоне.

1 стартмани

26.09.2019    4362    2    user-sergey    10    

Приложение Android для идентификации/распознавания образов (с обучением с одного раза, One-Shot Learning) с возможностью работы с 1С через веб-сервис Промо

Мобильная разработка v8 Абонемент ($m)

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

1 стартмани

19.06.2018    13651    4    informa1555    15    

Компонента аутентификации и шифрования с помощью биометрической информации для Андроид

Разработка внешних компонент Мобильная разработка Защита и шифрование v8::Mobile Абонемент ($m)

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

5 стартмани

17.09.2019    4725    1    IgorKissil    7    

Пример простого и приятного внешнего HTML интерфейса для мобильного приложения

Работа с интерфейсом Мобильная разработка v8::Mobile Абонемент ($m)

Реализация простого и приятного внешнего HTML интерфейса для мобильного приложения. Делимся исходниками, чтобы разработчики мобильных приложений разрабатывали больше приятных интерфейсов для приложений.

5 стартмани

05.09.2019    6135    55    Baksheev-Nikita    13    

Внешняя компонента Sundries: несколько полезных системных функций

Разработка внешних компонент v8 Абонемент ($m)

Звук, пауза, буфер обмена, раскладки клавиатуры и т.д.

3 стартмани

30.08.2019    4396    4    sivin-alexey    10    

Tool1CD Beta в деле Промо

Разработка внешних компонент v8 Абонемент ($m)

Пс, парень! Не хочешь немного сырых байтов?

1 стартмани

09.05.2018    23456    28    baton_pk    26    

Мобильное приложение 1С для помарочной инвентаризации маркируемой (алкогольной) продукции

Терминал сбора данных Мобильная разработка Розничная торговля Розничная торговля v8::Mobile Розничная и сетевая торговля (FMCG) УУ Абонемент ($m)

Мобильное приложение 1С для помарочной инвентаризации маркируемой (алкогольной) продукции на ТСД под Android. Получение данных марок (штрихкодов), используя БПО для мобильного приложения. Разработка на платформе 8.3.13.1809. Мобильная платформа 8.3.13.64. Версия сборщика 2.0.8.19.

1 стартмани

18.07.2019    6206    16    savostin.alex    5    

Внешняя компонента для принтеров Bixolon

Разработка внешних компонент v8::Mobile Абонемент ($m)

Представлена компонента мобильной платформы 1С для ОС Android, поддерживающая принтеры этикеток и чеков семейства Bixolon. Тестировалась на релизе мобильной платформы 8.3.14.53.

5 стартмани

08.07.2019    3368    2    IgorKissil    4    

Мобильное приложение "Сбор заказов" версия 2.0.1

Мобильная разработка Монитор заказов v8 v8::Mobile 1cv8.cf Украина УУ Абонемент ($m)

Приложение «Сбор заказов» разрабатывалось и разрабатывается для хранения и накопления данных от торговых представителей и автоматического обмена данными с программой учёта на базе платформы 1С:Предприятие. Мобильное приложение написано на технологии мобильной платформы 1С:Предприятие. Механизм обмена данных происходит посредством почтового сервера. В дальнейшем будет реализован механизм непосредственного доступа приложения к учётной системе через прямое интернет-соединение. FTP-соединение не работает как надо, так что будем довольствоваться тем, что есть... :)

4 стартмани

06.06.2019    6122    2    yarsort    10    

Мобильное приложение "Отчет по проделанной работе" Промо

Мобильная разработка Учет рабочего времени Учет рабочего времени v8 Россия УУ Абонемент ($m)

Приложение выполняет фиксацию рабочего времени у клиентов, а также заявок на работы, пригодится как шаблон для разработки своего или как готовое решение для работников в сфере услуг, которые фиксируют время у клиентов. В приложении 2 документа: первый "отчет за день", второй "заявка" и полезный инструмент "Отчет задачи", который в свою очередь создан для просмотра, анализа и закрытия заявок. Тестировал на Iphone 6s.

10 стартмани

01.12.2017    19906    10    olejnikov_m    6    

Мобильное приложение 1С: Список покупок и анализ расходов

Мобильная разработка Финансовый учет и бюджетирование (FRP) Финансовый учет и бюджетирование (FRP) v8 v8::Mobile Домашние учет и финансы Россия УУ Абонемент ($m)

В публикации рассмотрено небольшое домашнее мобильное приложение для составления списка покупок и анализа расходов. В приложении реализованы: работа с штрихкодами (сканирование встроенной камерой), поиск наименования товара по штрихкоду из интернета, загрузка чеков из ФНС по QR-коду, вывод QR-кода ранее загруженного чека и др.

1 стартмани

06.06.2019    8887    28    vasilievil    5    

Event Management - мобильное приложение для управления мероприятиями (Android)

Мобильная разработка Производство готовой продукции (работ, услуг) Производство готовой продукции (работ, услуг) v8::Mobile Развлечения, искусство, спорт УУ Абонемент ($m)

Event Management - мобильное приложение для управления мероприятиями. Отлично подойдет event-агентствам, свадебным организаторам, а также тем, кто проводит консультации, тренинги и т.д. Работает на Android (проверено на версии 5.1).

4 стартмани

31.05.2019    5119    3    yuriy_lokhonya    1    

Шаблон http-сервиса для вашего проекта

Внешние источники данных WEB Мобильная разработка v8 v8::Mobile 1cv8.cf Абонемент ($m)

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

3 стартмани

04.05.2019    17119    68    MarkoSokolov    47    

Внешние компоненты. Мобильное приложение 1С Промо

Разработка внешних компонент Мобильная разработка v8::Mobile 1cv8.cf Абонемент ($m)

Пример применения технологии внешних компонент для мобильной платформы 1С (Android)

1 стартмани

17.02.2017    41035    118    flyer    35    

Управление ТСД Zebra с помощью внешней компоненты для мобильной платформы

Разработка внешних компонент Мобильная разработка v8::Mobile Абонемент ($m)

Представлена внешняя компонента для управления сканерами терминалов Zebra из мобильных приложений 1С.

2 стартмани

15.04.2019    6761    19    IgorKissil    4    

Обработка нажатия аппаратных кнопок на ТСД в мобильной платформе

Разработка внешних компонент Терминал сбора данных Розничная торговля Розничная торговля v8::Mobile Абонемент ($m)

Обработка и передача события нажатия аппаратных клавиш на Android в мобильную платформу 1С.

1 стартмани

11.04.2019    8217    36    dewersia    31    

Андроид активити, разработанное для запуска и сбора информации из мобильного приложения 1С 8.3

Мобильная разработка v8::Mobile 1cv8.cf Автомобили, автосервисы Абонемент ($m)

Активити доступно из кода мобильного приложения 1С 8.3. Может использоваться как часть приложения при приемке автомобиля на предприятиях автосервиса. По сути является модальным диалогом, для внесения данных по осмотру автомобиля при приемке/передаче.

1 стартмани

10.04.2019    4598    1    hiEnergy    1    

NativeDraw: Компонента рисования для 1С [V2.6.2] Промо

Разработка внешних компонент Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Рисуйте в формах 1С, также предлагается небольшое количество нерисовальных функций

1 стартмани

13.07.2015    44457    419    ПерваяСистема    147    

Подкасты сайта "Эхо Москвы" в мобильном приложении 1С

Мобильная разработка v8::Mobile Россия Абонемент ($m)

Данная разработка показывает возможности мобильного приложения от 1С на примере получения данных с сайта радиостанции "Эхо Москвы" и последующего проигрывания мультимедиа.

1 стартмани

09.03.2019    4496    2    NovPas    6    

Альтернатива для "ПоказатьВыборИзСписка" и "ПоказатьВопрос" для приложений на Мобильной Платформе (УФ)

Мобильная разработка v8::УФ v8::Mobile 1cv8.cf Абонемент ($m)

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

1 стартмани

04.02.2019    5597    0    HorusTheOne    0    

Инструкция по применению мобильного приложения 1С:Штрихкоды

Мобильная разработка Практика программирования Сканер штрих-кода v8::Mobile Абонемент ($m)

После выпуска обзора на настраиваемое мобильное приложение для сканирования штрихкодов у заинтересованных лиц появилось множество вопросов о том, как этим пользоваться.

1 стартмани

18.01.2019    7334    2    inord777    0    

Компоненты распознавания и печати штрих-кодов Промо

Разработка внешних компонент Сканер штрих-кода v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA. P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.

10 стартмани

10.07.2015    66220    83    igorberezhnov    95    

Сканер штрих-кодов Сервер + Клиент

Мобильная разработка Сканер штрих-кода Розничная торговля Розничная торговля v8::Mobile 1cv8.cf Россия Абонемент ($m)

Мобильное приложение для магазинов одежды, продавец сканирует товар, и ему мобилка выдает остаток +сумму+ склад+ цвет+ размер+ свойство товара.

1 стартмани

18.01.2019    5537    1    enot_tut    0    

Мобильное приложение для Android по учету выполненных работ/услуг и отслеживанию состояния расчетов с клиентами

Мобильная разработка Производство готовой продукции (работ, услуг) Производство готовой продукции (работ, услуг) v8::Mobile УУ Абонемент ($m)

Мобильное приложение для Android по учету выполненных работ/услуг. Позволяет вести почасовой учет выполненных работ/услуг, их закрытие, а так же отражение оплаты за выполненные работы и услуги. Позволяет сформировать отчеты о выполненных работах и услугах и о состоянии расчетов с клиентами, а так же отправлять результаты формирования отчетов в pdf формате на электронную почту.

1 стартмани

31.12.2018    5477    0    alevpe_1c    12    

Мобильное приложение: Терминал сбора данных (Автоматизация работы склада в режиме он-лайн)

Терминал сбора данных Мобильная разработка Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8::ОУ v8::Mobile ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

Мобильное приложение предназначено для автоматизации работы склада в режиме он-лайн. Программа работает на ТСД (или на смартфоне) под управлением Android. Для работы необходим постоянный доступ к веб-публикации центральной базы данных через интернет.

1 стартмани

10.12.2018    14688    66    prof-it60    22    

Hello world на metadata.js Промо

Инструментарий разработчика WEB Мобильная разработка v8 1cv8.cf Абонемент ($m)

Про браузерные offline-first приложения можно написать миллионы слов. Сэкономлю своё и ваше время и перейду сразу к делу. В статье не будет рекламы и агитации за новые технологии, не будет критики традиционных или попсовых решений. Рассмотрим по шагам разработку простейшей программы на metadata.js. Постараюсь сделать акцент не на том «как это сделано», а «почему сделано именно так»

1 стартмани

11.08.2016    56043    111    unpete    208    

Управление сканером "Beluga" из мобильного приложения 1С

Разработка внешних компонент Мобильная разработка v8::Mobile Абонемент ($m)

Внешняя компонента для терминалов сбора данных MT65.

5 стартмани

26.11.2018    5960    8    IgorKissil    3    

Внешняя компонента для выполнения регулярных выражений

Разработка внешних компонент v8 Абонемент ($m)

Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8. Написана на C++. Используется движок boost::regex (v 1.69, v 1.68 - для Android). Версия синтаксиса Perl Compatible Regular Expressions.

1 стартмани

12.11.2018    10685    28    KAV2    62    

Применение цифровой подписи при организации учёта ТМЦ и ГСМ

Защита и шифрование Управление бизнес-процессами (BPM) Мобильная разработка v8::Mobile v8::Бизнес-процессы 1cv8.cf Абонемент ($m)

Статья о том, как внедрение мобильного приложения в бизнес-процессы компании сократило оборот бумажных документов, а простая электронная подпись - заменила аналоговую.

1 стартмани

25.10.2018    7032    2    ikekoval    2    

Полезные приемы при работе с Excel из 1С (Версия 3.1) Промо

Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    179789    429    Zerocl    65    

Интерфейсы мобильных приложений. Примеры

Работа с интерфейсом Мобильная разработка v8::Mobile Абонемент ($m)

Примеры реализаций одних из самых распространенных элементов навигации и пример реализации формы списка.

2 стартмани

17.10.2018    10058    117    Baksheev-Nikita    19    

Сканирование штрихкода медицинского полиса единого образца с помощью мобильного приложения

Сканер штрих-кода Мобильная разработка v8::Mobile 1cv8.cf Здравоохранение, медицина, стоматология Россия Абонемент ($m)

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

5 стартмани

15.09.2018    9886    5    Agregadus    2