World Two

180
Рейтинг

Prometeus2011



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

  •   Был(а) на сайте: сегодня в 09:30

Друзья
  • Name Surname
  • чингачгук
Подписчики 13

Группы

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

Рейтинг 180

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

Инструменты и обработки Программист Архив с данными Платформа 1С v8.3 Windows Абонемент ($m) Разработка внешних компонент

Внешняя компонента под ОС семейства windows, реализующая функционал по проверке соответствия json-пакета заданной схеме ("Валидация").

1 стартмани

09.01.2023    1680    2    Prometeus2011    2       

16

Управление Selenium Web Driver из 1С (или парсинг из 1С по-взрослому)

Инструменты и обработки Программист Архив с данными Платформа 1С v8.3 Абонемент ($m) WEB-интеграция

Нет-нет, да и появляются заказы на парсинг сайтов. Обычно, для этих целей использую net. + Selenium nuget package. Однако, если клиент использует стек технологий 1С, то предпочтительней было бы не пороть отсебятину, а применять уже знакомую пользователям парадигму работы с ИТ-продуктами - без каких-либо лишних прослоек, вроде net. или JS. И вот я задался вопросом: "а можно ли?".

1 стартмани

29.12.2021    3453    9    Prometeus2011    4       

14

Внешняя компонента - универсальный, надежный перехватчик клавиатурных событий

Инструменты и обработки Программист Архив с данными Платформа 1С v8.3 Windows Абонемент ($m) Разработка внешних компонент

Перехват нажатия клавиш в 1С реализован с привязкой к фокусу формы. Если форма (или главное окно процесса 1С) теряет фокус, то перехват перестает работать. Чтобы решить эту проблему, была разработана соответствующая внешняя компонента.

1 стартмани

29.11.2021    7541    19    Prometeus2011    14       

36

Перестроение индексов и сбор статистики во выбранным таблицам SQL

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

Обработка позволяет произвести потабличное наглядное перестроение индексов и обновление статистики базы данных 1С, развернутой на базе СУБД sql.

1 стартмани

26.01.2018    11656    31    Prometeus2011    10       

6

Интерфейс для истории данных (платформенное версионирование) в режиме обычных форм

Отчеты и формы Системный администратор Внешняя обработка (ert,epf) Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m) Журнал регистрации

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

1 стартмани

12.01.2018    25126    83    Prometeus2011    12       

20

Мобильное приложение для склада с функцией голосового ввода

Инструменты и обработки Программист Руководитель проекта Архив с данными Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Android Логистика, склад и ТМЦ Абонемент ($m) Мобильная разработка

Несложное приложение под Андроид предназначенное для выполнения операций по наборке и приемке товаров на складе, а также выполнения других складских операций. Мобильная часть решения написана под терминалы сбора данных на Android. Транспорт данных - POST - запрос на HTTP сервис. Серверная часть - сервис на базе 1С сервера.

2 стартмани

08.08.2017    24665    19    Prometeus2011    21       

32

Мобильное приложение для контрольно-пропускного пункта + схема работы КПП

Инструменты и обработки Для всех Архив с данными Платформа 1С v8.3 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Оптовая торговля Абонемент ($m) Терминал сбора данных

Решение позволяет на посту выезда из оптовой базы (магазина) контролировать идентичность данных товарного чека (накладной) и данных соответствующей накладной в ИБ организации. Для исключения подделок чеков и контроля ассортимента и количества вывозимого товара. Мобильная часть решения написана под терминалы сбора данных на Android. Транспорт данных - POST - запрос на HTTP сервис. Серверная часть - сервис на базе 1с сервера.

2 стартмани

19.05.2017    18083    4    Prometeus2011    11       

7

Конвертация данных объекта "Расписание регламентного задания" платформы 1C в формат CRON

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

Алгоритм на основании расписания выполнения регламентного задания, описываемого данными объекта "Расписание регламентного задания", строит логически приближенное расписание в формате CRON.

1 стартмани

10.10.2016    13000    5    Prometeus2011    1       

3

Комментарии

ВКЭмуляция сканера штрихкодов через ловкость рук#1 14.03.23 16:49
Вероятно, задача в Винде может быть решена посредством Autohotkey.
Вот пример скрипта для версии 1.1:
//========================//
Send {sc041}
Sleep 100
Send {LCtrl Down}
Sleep 100
Send {A}
Sleep 100
Send {sc041}
//========================//
(041 - сканкод для F7)
ВКВнешняя компонента - универсальный, надежный перехватчик клавиатурных событий#13 21.02.23 15:23
(12) Здравствуйте! Если открывающий и закрывающий символы равны, то это вызывало логическую ошибку в алгоритме.
Пофиксил.
Новая версия лежит прямо в репозитории - можно качать без СМ.
ВКВнешняя компонента JSON-валидатор#2 27.01.23 10:26
(1) Примерно месяц назад, тоже не знал, что есть схемы для описания JSON).
В организации, для которой приходится сейчас писать софт, очень развесистая структура микросервисов, связанных между собой через REST. Организация занимается непростым и динамичным бизнесом - на стыке торговли и оказания услуг, который постоянно кипит... Вместе с бизнесом бурлят микросервисы и штат программистов. В такой среде часто возникают ошибки, которые отлавливаются специальным отделом тех. контроля. Чтобы предельно быстро понять, где укоренилось зло - валидация пакетов помогает.
Ну и схемы данных можно собрать в одном месте, однако на это требуется воля, которой пока нет.
Ситуация, конечно, не рядовая.
ВКВнешняя компонента JSON-валидатор#0 05.01.23 23:52
Внешняя компонента под ОС семейства windows, реализующая функционал по проверке соответствия json-пакета заданной схеме ("Валидация").
ВКМобильная платформа: вспомогательные функции во внешней компоненте#1 31.12.22 10:57
Очень вымораживает отсутствие на мобильной платформе нормального распараллеливания потоков.
Представленный здесь подход (с тру-асинхронными запросами), как лайт вариант, закроет практически всё потребности к асинхронной работе в рамках мп.
Ну почти.
Кстати, другой вариант-разработка отдельного приложения-брокера со своей СУБД. А основное мп получает данные уже от него. Это, например, требуется, если надо обмениваться данными с системой удалённого контроля устройства, а делать это Система умеет только синхронно. Плюс это решит проблемы с остановкой фоновых заданий в мп, когда то не запущено.
Но все-же: 5 см... Многовато, на мой взгляд.)
Разработка прям не сложная) Там std, boost и андроид сами почти всё делать умеют.
ВКВнешняя компонента для мобильного приложения#44 01.11.22 12:10
(43) Здравствуйте!
Как реализуется подмена координат?
Если с помощью включения на устройстве отладочных функций разработчика и установкой специального софта, то там, кажется, это работает только с GPS-координатами.
Отсюда вывод - если не идут координаты от NETWORK_PROVIDER, то это подозрительно...
Можно просканировать устройство на наличие установленных пакетов программ обхода.
Для этого права системного приложения не нужны.

Код на java вот:

Код
 public boolean isAppPackageInstalled(Context context)
    {
        List<ApplicationInfo> packages;
        PackageManager pm;

        pm = context.getPackageManager();
        packages = pm.getInstalledApplications(0);
        for (ApplicationInfo packageInfo : packages) {
            if(packageInfo.packageName.equals("ru.somecompany.someapp"))
                return true;
        }
        return false;
    }


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

Ответ - да, можно.
Нет, делать не буду).
Мы реализуем контроль наших 100500 устройств через сторонний софт и проблем с этим не возникает.
ВКВнешняя компонента для мобильного приложения#41 30.09.22 18:01
(40)
Все проверил: это я допустил ошибку при сборке последнего релиза.
Прошу прощения...

Архив заменил.
Чтобы снова не скачивать компоненту, замените в архиве файлы:
- app-release.apk
- MANIFEST.XML
на прилагающиеся.
И... должно заработать.

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

app-release.apk
MANIFEST.XML
ВКВнешняя компонента для мобильного приложения#39 30.09.22 9:36
(38)

1. Возможно, вы переименовали apk-пакет, когда собирали компоненту:
Расположенная в cpp классе "SendData" библиотеки "Hermes_ХХХ.so" константа
Код
const wchar_t* CATCHER_CLASS_NAME = L"ru.somecompany.dreamcatcher.catcher";

определяет имя вашего пакета, который будет использоваться для вызова Android-методов.
Если по указанному в этой константе имени пакет найти не удается, то не создается и java-объект, из которого и вызывается метод "GetLocationNow".
Чтобы проверить гипотезу попробуйте ПОСЛЕ неудачного вызова ГЕО_ПолучитьСейчас() дернуть какой-нибудь другой метод, например, метод Архитектура(). Он тоже должен провалиться с такой-же ошибкой.
Для понимания, ошибка JNI генерится в методе GetLocationNow так:
Код
void SendData::GetLocationNow(tVariant* paParams, tVariant* pvarRetValue)
{
   if (obj)
   {
      JNIEnv* env = getJniEnv();
      jmethodID methID = env->GetMethodID(cc, "GetLocationNow", "(ZZ)Ljava/lang/String;");
      jstring stringObject = static_cast<jstring>(env->CallObjectMethod(obj, methID, (&paParams[0])->bVal, (&paParams[1])->bVal));
      wstring std_wstr = ToWStringJni(stringObject);
      ToV8String(std_wstr.c_str(), pvarRetValue, loc_iMemoryManager);
      env->DeleteLocalRef(stringObject);

   }
   else
   {
      DiagToV8String(pvarRetValue, loc_iMemoryManager, false, L"JNI Error");
   }

   return;
}



2. Возможно, что-то с платформой. Каждый релиз мобильной платформы 1с сопровождается ворохом новых ошибок в самых неожиданных местах. Например, в платформах, начиная с версии 8.3.2х ВК в серверном контексте не работает.
В любом случае - проблема в том, что компонента по какой-то причине не может создать нужный ей для работы JAVA-объект на основании JAVA-класса из APK-пакета в составе компоненты.
Создается он в cpp классе "SendData":
Код
void SendData::Initialize(IAddInDefBaseEx* cnn, IMemoryManager *in_iMemoryManager)
{
   loc_iMemoryManager = in_iMemoryManager;

   if (!obj)
   {
      helper = (IAndroidComponentHelper*)cnn->GetInterface(eIAndroidComponentHelper);
      if (helper)
      {
         WCHAR_T* className = nullptr;

                        convToShortWchar(&className, CATCHER_CLASS_NAME);

         jclass ccloc = helper->FindClass(className);             //ПОИСК JAVA-КЛАССА ИЗ ПАКЕТА - ДЛЯ СОЗДАНИЯ JAVA-ОБЪЕКТА

         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");
            //jmethodID methID = env->GetMethodID(cc, "<init>", "(Landroidx.core.app.ActivityCompat;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);
         }
      }
   }
}
ВКВнешняя компонента для мобильного приложения#36 21.09.22 12:56
(35) Здравствуйте!

Для получения координат используется функционал системного Android-сервиса "Context.LOCATION_SERVICE".

Код:

Код
if (loc_manager == null) {

            loc_manager = (LocationManager) m_Activity.getSystemService(Context.LOCATION_SERVICE);

        }

        boolean isGpsProviderEnabled = false;
        boolean isNetworkProviderEnabled = false;

        if (gps_provider)
        {

            if (loc_manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
                isGpsProviderEnabled = true;
            }
            if (isGpsProviderEnabled){
                if (gps_loc_listener == null) {
                    gps_loc_listener = new gpsLocListener();
                }
                if (loc_manager != null) {
                    Log.w("Hermes",LocationManager.GPS_PROVIDER);
                    loc_manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gps_loc_listener, Looper.getMainLooper());

                }
            }
        }

        if (net_provider)
        {
            if (loc_manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
                isNetworkProviderEnabled = true;
            }
            if (isNetworkProviderEnabled){
                if (net_loc_listener == null) {
                    net_loc_listener = new netLocListener();
                }

                if (loc_manager != null) {
                    Log.w("Hermes",LocationManager.NETWORK_PROVIDER);
                    loc_manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, net_loc_listener,Looper.getMainLooper());
                }
            }
        }


Вероятно, следует уточнить, есть-ли на вашем устройстве такой системный сервис.
ВКВнешняя компонента для мобильного приложения#34 07.06.22 11:50
(33) Здравствуйте! Нет.