1с менеджер виртуальных устройств не открывается

Обновлено: 06.07.2024

Виртуальная машина сэкономит вам время и силы на правильное развертывание и администрирование вашего сайта или внутреннего информационного ресурса на базе продуктов «1С-Битрикс».

Курс предназначен для администраторов и пользователей продуктов «1С-Битрикс», устанавливающих для ознакомления либо переносящих готовые проекты на виртуальную машину BitrixVM. Аналогичным способом можно переносить проекты с удаленного сайта на виртуальную машину, между виртуальными машинами и т.д. В курсе рассматриваются процедуры установки всех необходимых приложений для работы продукта на виртуальной машине BitrixVM.

Описание установки VMWare Player не входит в данное руководство. По всем вопросам установки этой программы обращайтесь к документации VMWare Player.

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

Баллы опыта

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


уроке.

Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.

iPhone:
FBReader
CoolReader
iBook
Bookmate

Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome

iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса.

Разработаем простое мобильное приложение на 1С для Android. Для тестирования можно использовать физическое устройство (свой смартфон или планшет), но гораздо удобнее использовать виртуальное. Для этого нужно установить эмулятор, например Genymotion.

Genymotion

Если уже есть установленный VirtualBox, то можно скачать без него. Иначе скачиваем с VirtualBox, это нижняя ссылка. Затем нужно запустить скачанный файл и установить VirtualBox и Genymotion. Здесь не должно возникнуть сложностей.

После этого нужно запустить Genymotion. В открывшемся окне нужно добавить новое виртуальное устройство:

Genymotion

Слева можно настроить отборы, справа выбрать какое устройство будем создавать. Например, выберем версию Android 7.0, устройство Custom Phone:

Genymotion

Нажмем справа внизу кнопку Next и будет открыто окно для настройки создаваемого устройства. Уменьшим разрешение экрана до 480х800 (чем выше разрешение, тем сильнее будет тормозить эмулятор), 240 HDPI, а также уменьшим количество процессоров до 2-х и память до 1024 МБ:

Genymotion

Нажмем кнопку Install и начнется скачивание образа виртуального устройства:

Genymotion

После скачивания образа в списке появится новое устройство, которое можно запустить, выбрав в меню команду Start:

Genymotion
Genymotion

Можно сразу в настройках включить русский язык: Settings – Language & Input – Language, добавить новый язык и поставить его на первое место:

Genymotion

Иногда бывает, что виртуальная машина не запускается, при этом Genymotion не пишет каких-то внятных ошибок. Чтобы увидеть ошибку нужно запустить VirtualBox, выделить созданную нами виртуальную машину и нажать Запустить:

VirtualBox

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

Установка мобильной платформы

Теперь нужно установить мобильную платформу. Если у Вас нет доступа к мобильной платформе, то можно скачать учебную версию, но она имеет ряд ограничений. Если доступ есть, то можно скачать здесь.

Распаковываем скачанный архив с мобильной платформой и из папки Android копируем файл 1cem-x86.apk в какое-нибудь другое место. Это 32-х разрядная мобильная платформа для процессоров архитектуры x86. В этой же папке есть файл 1cem-arm.apk. Это 32-х разрядная мобильная платформа для процессоров архитектуры ARM. Про разницу между архитектурами x86 и ARM можно почитать здесь. Но так как у меня процессор intel, то я буду использовать файл 1cem-x86.apk.

Переменные среды

adb

Мобильная платформа будет установлена на виртуальную машину и в списке приложений появится значок 1С:

Мобильная платформа

При запуске будет открыт список приложений (конфигураций), который пока пуст:

Мобильная платформа

В эмуляторе Genymotion можно установить мобильную платформу просто перетянув файл мобильной платформы из проводника Windows на экран эмулятора:

Genymotion

Настройки - Безопасность

Номер сборки

После этого в настройках появится пункту меню Для разработчиков:

Для разработчиков

И уже в нем нужно разрешить отладку по USB:

отладка по USB

Сразу после тестирования нужно запретить отладку по USB! Иначе на Ваш смартфон могут быть установлены вирусы!

Разработка мобильной конфигурации

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

Приложение для мобильной платформы

Добавим произвольную общую форму:

общая форма

И в модуле формы в обработчике ПриСозданииНаСервере добавим следующий код:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )

начальная страница

А также изменим имя конфигурации:

имя конфигурации

Обновим конфигурацию базы данных.

Параметры

Использовать "Android Debug Bridge"

Публиковать

Платформа предупредит о том, что нужны полномочия администратора, но так как мы не будем публиковать на веб-сервере, то можно проигнорировать это.

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

Каталог

После это нужно нажать на кнопку Опубликовать.

Мобильное приложение

Мобильная конфигурация

Привет, мир

Если нажать ОК и выйти из приложения кнопкой назад, то мы попадем в список всех приложений (конфигураций) мобильной платформы, где пока что есть только одна, разработанная нами конфигурация:

Мобильная платформа

Сборка мобильного приложения

Выполним сборку мобильного приложения, чтобы запускать его не через мобильную платформу, а как отдельное приложение.

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

Сборщик мобильных приложений

Также для сборки потребуется установленная Java и Android SDK.

Java можно скачать тут. С установкой не должно возникнуть проблем. Путь к Java также желательно добавить в системную переменную среды Path, если он автоматически не был добавлен туда. Чтобы проверить установлена ли Java и какой версии можно в командной строке выполнить команду java -version:

Java

Для установки Android SDK можно скачать Android Studio и через него установить все необходимое. Android Studio можно скачать по этой ссылке, проблем с установкой также не должно быть. При установке нужно будет выбрать путь для установки Android SDK, здесь нужно выбирать путь только на латинице, желательно покороче и без пробелов, например: C:\AndroidSDK.

Для сборки на мобильной платформе 8.3.19 нужна версия SDK API 29. Чтобы скачать нужную версию SDK нужно запустить Android Studio и в стартовом окне нажать на гиперссылку More Actions и выбрать пункт SDK Manager:

SDK Manager

В открывшемся окне, на закладке SDK Platforms нужно отметить нужную версию API и нажать ОК. Будут скачаны файлы выбранной версии SDK. 31 версия (последняя на 17.08.2021) была установлена вместе с Android Studio.

SDK Platforms

Настройка параметров сборщика

В открывшемся окне нужно нажать на кнопку Создать:

Настройка параметров сборщика

Будет открыто окно для заполнения путей к компонентам:

Настройка параметров сборщика

После этого нужно выполнить настройку параметров поставщика:

настройка параметров поставщика

Так как будем собирать для Android, то на закладке Общие параметры нужно установить флаг Для ОС Android:

настройка параметров поставщика

Появится закладка Параметры для ОС Android. Здесь нужно указать Префикс идентификатора приложения для ОС Android (например ru.test) и создать Ключ подписи приложений:

настройка параметров поставщика

Для создания ключа нужно нажать на кнопку с плюсом:

Ключ подписи приложений

Будет открыто окно где нужно ввести параметры ключа и нажать Сформировать ключ:

Ключ подписи приложений

Хеш ключа будет заполнен в поле Хеш SHA-1 ключа подписи.

Теперь нужно загрузить мобильную платформу в сборщик. Для этого нужно перейти в раздел Мобильные версии, добавить новый элемент и выбрать архив с мобильной платформой. После загрузки будет создан новый элемент справочника, в котором будут указаны параметры мобильной платформы, в том числе версия API, которую нужно использовать при сборке (именно поэтому мы скачивали 29 версию API SDK):

Мобильные версии

В свойствах конфигурации нужно заполнить поставщика и версию:


Записать в файл

В сборщике в разделе Мобильные конфигурации нужно нажать на кнопку Загрузить конфигурацию, выбрать файл с записанной мобильной конфигурацией и нажать Загрузить:

Загрузить конфигурацию

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

Мобильные конфигурации

После загрузки конфигурации будет предложено создать группу справочника Мобильные приложения. Можно согласиться и заполнить параметры как на рисунке:

Мобильные приложения
Мобильные приложения

В поле Мобильная платформа нужно выбрать элемент справочника Мобильные платформы. А на закладке Конфигурации и представления в поле Источник нужно выбрать группу с мобильной конфигурацией.

После этого в этой группе (справочника Мобильные приложения) нужно создать новый элемент и нажать на кнопку Собрать приложение:

Собрать приложение

Начнется процесс сборки приложения, по окончании которого на закладке Результаты сборки можно будет сохранить собранное приложение на диск:

Результаты сборки

Для установки мобильного приложения на виртуальную машину нужно в командной строке ввести команду adb install F:/ru.test.test-x86.apk

adb

На виртуальной машине в списке приложений появится новое приложение. Уже не в составе мобильной платформы, а как отдельное приложение:

приложение


Во многих компаниях в качестве основной платформы автоматизации используется 1С. Так повелось и у нас. Однако процесс становления платформы был произведен без должного подхода, в связи с чем сначала у нас было 5 ключей защиты на 95 лицензий, затем появилось еще 3 физических ключа на предоставление еще 50 клиентских лицензий для 3-х юридических лиц. Ситуация дурацкая, так как каждый ключ по нормальному требует отдельных хост, а подходящих для этого серверов становилось все меньше, а маячащее увеличение количества пользователей и, следовательно, покупки новых ключей, заставило меня задуматься над альтернативным решением, позволяющим избежать лишней информационной нагрузки на наши сервера и вообще сделать систему с ключами более гибкой и, желательно, более устойчивой.

Выбор системы

Система виртуализации

В качестве системы визуализации был выбран esxi 5.1. Выбран за неплохую поддержку переброски USB устройств и потому что кроме ESX я разбираюсь только в Hyper-V, переброску устройств который не поддерживает.

Для переброски USB устройств в ESX, железо гостевой системы должно быть не ниже версии 7. Тогда появится возможность добавить USB контроллер и примаппить USB устройство в гостевую систему. Еще есть момент по поводу поддержки. Официально VMware поддерживает только определенный список устройств. И он не очень то большой. Однако рядовые ключи защиты Aladdin, похоже, будут поддерживаться. Список поддерживаемых устройств есть на официальном сайте здесь. А описание требований и положений по береброске USB в гостевую систему есть также на официальном сайте, в базе знаний здесь.

image

Есть и альтернативные способы проброски USB ключей в виртуальную среду, да и в физическую тоже. Это устройства и ПО так называемое USB over IP. Программные продукты в данном случае не очень интересно рассматривать, а вот железные в этом случае неплохо себя показывают. Самый яркий представитель, всем известный AnywhereUSB с 14-ю портами. Устанавливается в стойку, имеет два интерфейса и два входа питания (имеет ли реально два блока питания, я не знаю :)). Устройство всем хорошо, но стоит в среднем 60 тысяч рублей, что плохо укладывалось в наш бюджет.

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

Операционная система и драйвера HASP

image

В качестве ОС я выбрал Debian. Почему? Да просто так. По сути в этой конфигурации можно взять любой любимый дистрибутив. Но Debian мне всегда нравится стабильностью и хорошим репозиторием.

Настройка и проверка


Какой-то дополнительной настройки все это не требует. Ключ начинает работать практически из коробки.
Проверяем. Для проверки работоспособности в комплекте имеется программа haspdemo . При успешной идентификации ключа и начала работы, программа выведет что-то подобное в консоль:

This is a simple demo program for the HASP4 key
Copyright © Aladdin Knowledge Systems Ltd.

LOCALHASP_ISHASP: Result: 1

Using Passwords 15213 — 28875
LOCALHASP_HASPSTATUS: API version number is 8.0
port number 201
Key type: HASP4 M4
LOCALHASP_HASPGENERATION: OK, HASP4 is connected.
LOCALHASP_HASPNETSTATUS: connected key is HASP4 Net 20
MEMOHASP_HASPID: 436444258 (decimal), 0x1a039c62 (hex)

LOCALHASP_ENCODEDATA: OK.
53 C1 F1 AF | EC 16 C3 15 | 35 31 E4 7F | 9B D0 90 9F [S. 51. ]
AA BA 8C 80 | 1E 22 29 E2 | 92 7E 04 56 | DA 70 7B 63 [. ")..

NETHASP_READBLOCK: Failed: Return status: 10

Главное поле: LOCALHASP_ISHASP : Result: 1 . Сообщающее, что все впорядке. Далее написано и про то, какой ключ вставлен.

This is a simple demo program for the HASP4 key
Copyright © Aladdin Knowledge Systems Ltd.

LOCALHASP_ISHASP: Failed: status = -100

При том по сути все равно что происходит с ключом, он может быть не вставлен, служба может быть не запущена или еще что-то. Я пока видел только два значения LOCALHASP_ISHASP. Это либо : Result: 1 , либо : Failed: status = -100 . И последнее всегда соответствовало неработоспособности, а первое всегда означало, что все ОК. Документации к этому пакету я не нашел, по этому узнать какие еще есть статусы не получилось.

С ключом разобрались. Надо не забывать, что в мониторе ключей ваш новоиспеченный ключ появится только тогда, когда с него будет взята хотя бы одна лицензия. Тогда aladdin monitor покажет ту информацию, которую он обычно показывает: это типа ключа, количество взятых лицензий, всего лицензий, кто именно забрал лицензию и таймаут.
Форсировать это достаточно просто, достаточно указать в клиентском nethasp.ini руками новый менеджер лицензий. Но о настройке клиента чуть-чуть позже.

С этого момента можно считать первоначальную задачу выполненной. Теперь мы можем создать параллельно несколько виртуалок, в количестве, соответствующем количеству имеющихся физических ключей. Ресурсы такие виртуалки потребляют, естественно, копеечные.

Проблемы и решения

Единая точка отказа

Первая проблема, которая создается и у всех на виду, это создание точки отказа. Если до этого ключи были распределены по различным серверам и отказ больше одного ключа практически исключен, то в данном случае отказ работы физического сервера может повлечь за собой отказ от работы всей системы 1С, т.к. клиенты будут отваливаться в течение, по-моему, 600 секунд и через непродолжительное время отвалятся все и не смогут вернуться в систему. Что последует за таким инцидентом можно не рассказывать. Вариантов решения два и направлены в разном направлении. Первое решение это использование отказоустойчивой конфигурации ESX. Однако это целесообразно, если в вашей компании эта система уже развернута и уже выполнен ряд требования для поддержания работоспособности при отказе любого компонента. Другое решение более тривиальное:
Мы создаем группу A записей в DNS нашей компании. Например, key1, key2, key3 и так далее. Вносим DNS имена в nethasp.ini клиентов, распространяем файл с помощью групповой политики. Таким образом мы получаем достаточно гибкую структуру доступа. В этом случае после обнаружения существенной проблемы с виртуальным сервером esx, можно оперативно переместить ключи на любые другие сервера, в т.ч. на рабочие станции любых сотрудников. Параллельно заменяем A записи на новые. В течение некоторого времени кеш на клиентах закончится и они снова смогут взять себе новую лицензию и продолжить работу.
Рекомендую прописать обратные DNS записи для ключей, иначе aladdin monitor не будет показывать имя хоста, а покажет только ID менеджера лицензий, что не очень удобно.
Если в вашей компании и во все используется широковещательный метод доставки ключей, то все упрощается и при перемещении ключа на другой хост в пределах широковещательного домена ни как не скажется на работе.

Отваливаются ключи

Есть такая, достаточно распространенная проблема. Ключи отваливаются. При том никакой особенной связи замечено не было. Это происходит на разные контроллерах, даже на разных хостовых системах. Когда я переносил ключи и временно разместил их в другом месте под управлением VMware Player, отваливание ключей происходило часто. Выражается это достаточно тривиально. При запросе haspdemo , появляется строка LOCALHASP_ISHASP : Failed: status = -100 . Хотя ключ вставлен и обнаруживается. dmseg показывает не до конца понятные строки: usb 2-2.1: usbfs: USBDEVFS_CONTROL failed cmd aksusbd rqt 192 rq 139 len 8 ret -110
Решается проблема также тривиально, как и выглядит — рестартом сервиса. Но осадочек остается и пока это не выполнить, сервер раздавать ключи не будет. Так как хочется, что бы система работала безотказно, было решено написать скрипт, который бы сам восстанавливал работу менеджера лицензий. Так, с помощью друга, был написан скрипт, который запускает haspdemo и пытается понять, нормальный ли статус возвращается или нет:
[ "`haspdemo | sed -n 's/^LOCALHASP_ISHASP.* \(\-\?7*\)$/\1/p'`" == "-100" ] && service haspd restart
Далее этот скрипт вставляется в запуск по CRON каждую минуту и все. Даже если в вашей системе не будет наблюдаться проблема отваливающихся портов, данный скрипт, думаю, не помешает.

Проблема обнаружения ключа клиентом

И такая есть проблема. Заключается она в том, что клиент после потери ключа может не захотеть взять новый ключ. Также это проблема может выражаться и в других проявлениях. Например, если вы заменили пути к ключам в файле nethasp.ini, то клиентское приложение может вполне бодро продолжать сообщать о том, что ключей никаких нет и не видел никогда. Если к такой реакции быть не готовым, то проблема становится очень неприятной и начинаешь судорожно проверять работу всей системы и крыть матом 1С-ников, ибо все работает, но вот ГлавБух или, как назло, Генеральный, войти в 1Ску сейчас не может по непонятной причине и ты чувствуешь себя идиотом, вместо того, что бы быстро решить проблему. Однако помогало пока довольно простое решение. Необходимо очистить кеш 1С из профиля пользователя. В свое время я находил отдельный файл, который отвечает за эту информацию, на забыл какой :(

Ключи могут просто перестать работать

Против отказа оборудования ни кто не застрахован. И эти жалкие ключи тоже могут перестать работать. И самое важное в данном случае узнать об этом как можно раньше. Для этого мы будем использовать систему мониторинга Zabbix. Безусловно, разворачивать ее только для мониторинга за ключами бессмысленно, однако если заббикс уже стоит, то почему бы не прикрутить к нему и мониторинг за состоянием ключей.
Для этого нам нужно прописать собственный скрипт в файл настроек агента. Ищем файл конфигурации установленного zabbix_agent, называется он zabbix_agentd.conf. Открываем его и добавляем строку
UserParameter=hasp.status,haspdemo | grep "^LOCALHASP_ISHASP" | sed 's/^.* \(\-\?6*\)$/\1/g'

Бонус

  • NH_SERVER_ADDR. Здесь мы указываем список DNS имет или IP адресов серверов с менеджером лицензий через запятую.
  • NH_USE_BROADCAST. Ставим значение в Disabled.
  • NH_TCPIP_METHOD. По-умолчанию используется метод UDP. Можно поменять на TCP, но в целом в этом нет серьезной необходимости.

Еще момент по поводу отображения ключей в aladdin monitor. Вопреки расхожему мнению, свободными лицензиями являются не только те лицензии, которые отсутствуют в виде занятых в aladdin monitor, но и те, у которых в поле Timeout стоит 0. Значения обычно пропадают в течение 36-и часов, но все равно лицензии считаются свободными.

Читайте также: