обработчик для оборудования не загружен

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Пользователь ПП
RSS
Добрый день. обновили сегодня релиз конфигурации до последней и перестала работать одна из касс, пишет
Обработчик для оборудования GUID {08255EB8-3E69-4844-A591-3B7F6F15DC26} не загружен.
Требуется обновление схемы устройств и перезапуск 1С-Предприятия.

так писало и для уже настроенного оборудования, так и для новосозданного.
версия EquipmentSetup.exe от 16.12.2015
драйвер ФР установлен 4.10.288
оборудование Штрих-ФР-К
релиз 1с предприятия 8.3.6.2152
конфигурация не изменялась, стоит на поддержке
скрин ошибки http://pix.my/vunge1Gc

в меню сервис - параметры не появляется закладка драйвер ФР, хотя он установлен
тест драйвера оборудование проходит
Декоративное изображение 124
Пользователь ПП
вобщем изучив как работает этот механизм нашел странный дефект, при выполнении функции ТорговоеОборудование.ОбновитьТаблицуОбработчиков() в переменной ТаблицаЭкземпляровОборудования в строке этой ТЗ у нужного нам оборудования имя компьютера обрезается до 15 символов, а проверка идет по полному наименованию компьютера ( тут СтрокаТаблицы.Компьютер = ИмяНашегоКомпьютера) изза чего ничего не работало. сменил имя компьютера на более короткое и все заработало. странно канеш зачем это меняли, раньше все работало и с длинными именами компьютера
Сотрудник 1С-Рарус
Цитата
Василий МД пишет:
вобщем изучив как работает этот механизм нашел странный дефект, при выполнении функции ТорговоеОборудование.ОбновитьТаблицуОбработчиков() в переменной ТаблицаЭкземпляровОборудования в строке этой ТЗ у нужного нам оборудования имя компьютера обрезается до 15 символов, а проверка идет по полному наименованию компьютера ( тут СтрокаТаблицы.Компьютер = ИмяНашегоКомпьютера) изза чего ничего не работало. сменил имя компьютера на более короткое и все заработало. странно канеш зачем это меняли, раньше все работало и с длинными именами компьютера

Добрый день.
Спасибо за подсказку.
Описание проблемы передано разработчикам.
На начальном этапе установлено, что ранее было задано ограничение реквизита в справочнике = 30 символов, и пока это порядок не изменялся. На каком этапе происходит обрезание длины до 15 символов, пока не удалось выяснить. Необходимо детальное разбирательство в этом вопросе.

Не могли бы Вы предоставить Имя компьютера, с которым возникала ошибка?
Пользователь ПП
имя компьютера было: microsof-80ggtrt
компьютер был в домене
Сотрудник 1С-Рарус
При попытке воспроизвести ошибку в момент задания более длинного имени для рабочей станции получили предупреждение от системы Windows (см. скриншот ниже). Т.е. не рекомендуется задавать имена длиннее 15 символов. Также наши системщики напоминают что есть и другие ограничения (также придуманные не нами, а в Microsoft) :
- не следует в качестве первого символа использовать цифру
- не следует использовать не латинские символы
- рекомендуется всегда использовать различные имена для пользователей и компьютеров
(например, petrov  и petrov-pc)

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

Пользователь ПП
предупреждение это хорошо, но ОС на том компьютере windows XP SP3 и это имя было назначено самой ОСью при установке. потом сидеть изучать код в поисках причины не подключения оборудования в альфа-авто
то что в одном случае у вас берется нетбиос имя, а для проверки совсем другое, это другой вопрос. разбираться дальше в проблеме нет интереса, проблему я для себя решил + создал тему для остальных кто напорится на такую же проблему
Пользователь ПП
Цитата
Василий МД написал:
в переменной ТаблицаЭкземпляровОборудования в строке этой ТЗ у нужного нам оборудования имя компьютера обрезается до 15 символов, а проверка идет по полному наименованию компьютера ( тут СтрокаТаблицы.Компьютер = ИмяНашегоКомпьютера) из-за чего ничего не работало.
Ошибка сформулирована очень неопределенно. Кроме GUID оборудования желательно указывать ИмяНашегоКомпьютера. Тогда причина ее возникновения была бы понятна. А так хоть сколько делай:
Цитата
Требуется обновление схемы устройств и перезапуск 1С-Предприятия.
не поможет!
У меня по другой причине имена компьютеров поменялись, все работают в терминальном режиме вроде как под одним именем компьютера, которое у сервера. Схема компьютеров Альфа-Авто в терминале не работает, в справочнике Компьютеры лишь один Сервер. Оборудование по базе Альфа-Авто вроде тоже все на сервере, а на самом деле на локальных компьютерах. Поэтому возникают трудности с подключением оборудования. Например, если пытаются подключить онлайн-кассу с другого компьютера, когда компьютер с ФР еще не включен, или не вошел в терминал (свой порт с ФР не пробросил на сервер), то эта попытка будет неудачной. И самое печальное порт будет испорчен. Даже после при подключении с компьютера с ФР будет ошибка "Порт недоступен". Эта ошибка необратима, ее не сбросит перезагрузка СЗиУО ( Windows службы защиты), только перезагрузка всего сервера может ее сбросить.
Определить настоящее имя компьютера позволяет функция http://expert.chistov.pro/public/392980/ ПолучитьИмяКомпьютераТО(). Применив его в функции ПервоначальнаяИнициализация(), в ПараметрыСеанса.Компьютер будет правильное значение. Но приводит к упомянутой ошибке. Требуется не обновление схемы устройств, а переустановка оборудования по своим локальным компьютерам (либо временно до переустановки в переменную ИмяНашегоКомпьютера подставлять имя компьютера из справочника оборудования).
Но восстановление правильных имен компьютеров не решают автоматически проблему ошибки "Порт недоступен". Бывают случаи, когда пытаются подключить оборудование с нужного компьютера, но оборудование забыли включить (питание), или по какой-то причине порт не пробросил на сервер. Любая 1С (даже версии 7.5) определяет доступность порта с подключенным оборудованием, и в Сервис/Параметры добавляет вкладку Свойства. Как реализовать такую проверку программным способом я пока не нашел. Может подскажет кто из знающих специалистов? Буду благодарен...
Пользователь ПП
Цитата
Михаил Волков написал:
Любая 1С (даже версии 7.5) определяет доступность порта с подключенным оборудованием, и в Сервис/Параметры добавляет вкладку Свойства. Как реализовать такую проверку программным способом я пока не нашел.
Нашел, вкладка Свойства добавляется при подключении внешней компоненты FprnM1C.dll:
Код
// Возвращает Истина, если порт ФР доступен, или занят самим ФР
// Драйвер ККМ. Руководство программиста C:\Program Files (x86)\ATOL\Drivers8\Doc\Drivers8_FprnM_PM.pdf
Функция ПроверкаСвязиФР(IP_Адрес = "", ТекстСообщения = "", ПортЗанят = Истина) Экспорт

   Если ПустаяСтрока(IP_Адрес) Тогда
      ТекстСообщения = "Не указан IP-адрес ФР";
      Возврат Ложь;
   КонецЕсли;
   
   Попытка
      ФР = Новый("AddIn.FprnM45");
   Исключение
      ФР = ЗагрузитьВнешнююFPrnM1C(ТекстСообщения);
   КонецПопытки;
   Если СтрЧислоВхождений(IP_Адрес, ".") < 3
   И Не ДоступностьIP_Адреса(IP_Адрес, ТекстСообщения) Тогда
      Возврат Ложь;
   КонецЕсли;
   Если ФР = Неопределено Тогда
      Возврат Ложь;
   КонецЕсли;
   ФР.АдресХоста = IP_Адрес + ":6220";
   ФР.DeviceEnabled = 1;   // занимаем порт
   Результат = ФР.ResultCode;
   Если Результат <> 0 И Не(ПортЗанят И Найти(ФР.ResultDescription, "Порт занят") > 0) Тогда
      ТекстСообщения = "Ошибка проверки связи с ФР: " + ФР.ResultDescription;
      Возврат Ложь;
   КонецЕсли;
   ФР.DeviceEnabled = 0;   // освобождаем порт
   Возврат Истина;

КонецФункции // ПроверкаСвязиФР()

// Загрузка внешней компоненты FPrnM1C.dll
// драйвера ФР АТОЛ
Функция ЗагрузитьВнешнююFPrnM1C(ТекстСообщения = "")
   Попытка
      ЗагрузитьВнешнююКомпоненту("c:\Program Files (x86)\ATOL\Drivers8\Bin\FprnM1C.dll");
      Попытка
         ФР = Новый("AddIn.FprnM45");   // Создание объекта (FPrnM8 - не работает!?)
      Исключение
         ТекстСообщения = "Объект AddIn.FprnM45 не найден!";
         Возврат Неопределено;
      КонецПопытки;
   Исключение
      ТекстСообщения = "Внешняя компонента драйвера FPrnM1C.dll не найдена";
      Возврат Неопределено;
   КонецПопытки;
   Возврат ФР;
КонецФункции
Функция ПроверкаСвязиФР() решила проблему необратимой ошибки "Порт недоступен".
Но теперь возникла следующая ситуация: пользователь в ПКО ставит галку "Для пробития на фискальном регистраторе", сразу идет проверка статуса ФР "Включено" (если нет, то эта проверка связи ФР) - все ОК, открывается Фронт кассира, на нем жмет кнопку "Отбить чек", запускает функцию ВыполнитьКомандуОборудования(). И она выдает код ошибки: -11 "Устройство не включено"!? Как формируется эта ошибка посмотреть не могу, ее выдает "черный ящик" Рарус_Компонента.ЗаказатьВыполнениеДействияСинхронно(). Предполагаю, что выполнив в обработке ТорговоеОборудование команду ВключитьОборудование(), состояние ФР запомнилось СЗУО, и более не проверяется. Тем не менее ФР по какой-то причине успел отвалиться (или "не совсем" подключился). А подключить ФР заново уже не получается. В функции ВключитьОборудование() есть такой фрагмент:
Код
// Не то что включено, а даже еще и зарезервировано под текущую сессию - просто отлично!
    Возврат НомОшибки;// Оборудование уже и так включено, возвращаем ОК (НомОшибки=0) вот и все.
Возврат за комментировал, но возможно СЗУО реагирует на такую ситуацию так же?
Сотрудник 1С-Рарус
Цитата
Любая 1С (даже версии 7.5) определяет доступность порта с подключенным  оборудованием, и в Сервис/Параметры добавляет вкладку Свойства. Как  реализовать такую проверку программным способом я пока не наше
Это абсолютно неверно! Ни одна версия платформы 1С никогда не имела никаких функций для работы с COM-портами. На закладке сервис-параметры добавляются формы загружаемых внешних компонент. Например, компоненты драйвера сканера штрихкодов или фискального регистратора
Пользователь ПП
Цитата
Игорь Стовпец написал:
На закладке сервис-параметры добавляются формы загружаемых внешних компонент. Например, компоненты драйвера сканера штрихкодов или фискального регистратора
Добавлю к сказанному Вами: в случае фискального регистратора на этой вкладке появляется возможность проверки состояния COM-порта кнопкой "Проверка связи".

Представленная выше мною функция ПроверкаСвязиФР() имитируется нажатие этой кнопки, и проблема необратимой ошибки "Порт недоступен" в основном решена.

По поводу ошибки с кодом -11 "Устройство не включено" возник вопрос о совместном использовании оборудования. Анализируя события по оборудованию в ЖР (журнале регистрации) заметил, что ФР отваливается (возникает эта ошибка) после завершения работы некоторых пользователей, в ЖР фиксируется событие: "Оборудование.Выключить, ОК Состояние: Выключено". Возникло подозрение, что при выходе из Альфа-Авто пользователь отключает все оборудование не только в своей сессии, но и у остальных пользователей тоже. Такое возможно?
Сотрудник 1С-Рарус
В терминальном режиме возможно всё что угодно. Данное ПО при проектировании не было рассчитано на работу в терминальном режиме изначально
Пользователь ПП
Цитата
Игорь Стовпец написал:
В терминальном режиме возможно всё что угодно.
А разве в сетевом варианте режима работы невозможно совместное использование оборудования? Я даже в тестовой копии Альфа-Авто опасаюсь завершать работу раньше времени. Любой сеанс или экземпляр Альфа-Авто может дать команду "Оборудование.Выключить" СЗУО, и он ее исполнит. В результате в рабочей Альфа-Авто возникает ситуация: при статусе ФР "Включено" при отбитии чека ошибка "Устройство не включено"!?
Для меня СЗУО "черный ящик", поэтому спрашиваю о возможности такого?
Исключить терминальный режим для кассира пока нельзя. Она как большинство сотрудников работает в одну смену, а дежурные менеджеры - в две. Кассовую смену кассиру приходится закрывать с домашнего компьютера.  
Сотрудник 1С-Рарус
Цитата
Михаил Волков написал:
Цитата
Игорь Стовпец  написал:
В терминальном режиме возможно всё что угодно.
А разве в сетевом варианте режима работы невозможно совместное использование оборудования? Я даже в тестовой копии Альфа-Авто опасаюсь завершать работу раньше времени. Любой сеанс или экземпляр Альфа-Авто может дать команду "Оборудование.Выключить" СЗУО, и он ее исполнит. В результате в рабочей Альфа-Авто возникает ситуация: при статусе ФР "Включено" при отбитии чека ошибка "Устройство не включено"!?
Для меня СЗУО "черный ящик", поэтому спрашиваю о возможности такого?
Исключить терминальный режим для кассира пока нельзя. Она как большинство сотрудников работает в одну смену, а дежурные менеджеры - в две. Кассовую смену кассиру приходится закрывать с домашнего компьютера.  
Добрый день.
В программный продукт Альфа-авто ред.5 изначально не включен функционал для работы оборудования в терминальном режиме.
Поэтому даже, если Вам и удалось настроить работу оборудования в терминальном режиме, то мы не можем гарантировать стабильную и корректную работу.
Пользователь ПП
Цитата
Светлана Рожок написал:
В программный продукт Альфа-авто ред.5 изначально не включен функционал для работы оборудования в терминальном режиме.
Извиняюсь, не обратил внимание, что тема посвящена в основном RDP. Вопрос о совместном использовании оборудования перенес https://rarus.ru/forum/forum7/topic11493/?PAGEN_1=47#message73209 в другую тему.

В эту тему добавлю функцию для правильного определения ПараметрыСеанса.Компьютер в RDP:
Код
// Получить имя компьютера торгового оборудования при терминальном подключении
// http://expert.chistov.pro/public/392980/
Функция ПолучитьИмяКомпьютераТО() Экспорт

   WSS = Новый COMОбъект("WScript.Shell");
   WSSE = WSS.Environment("Process");

   ИмяКомпьютера = СокрЛП(WSSE.Item("ClientName"));
   Возврат ИмяКомпьютера;
КонецФункции // ПолучитьИмяКомпьютераТО()
Вставил в функцию ПервоначальнаяИнициализация() обработки СтартСистемы Альфа-Авто 4.1 в начальный фрагмент:
Код
   Пользователь = ПараметрыСеанса.Пользователь;
   ИмяПользователя = ИмяПользователя();
   ПолноеИмяПользователя = ПолноеИмяПользователя();
   
   // Переопределим текущий компьютер (в клиентской сессии пользователя он может
   // отличным от того что был определен в УстановкаПараметровСеанса)
   Состояние("Обновляем информацию о компьютере ...");
   Имя = мвДоработки.ПолучитьИмяКомпьютераТО();   //+МВ 10.10.2017
   Комп = Справочники.Компьютеры.НайтиПоНаименованию(Имя,Истина);
   Если Комп.Пустая() Тогда
      Комп = Справочники.Компьютеры.СоздатьЭлемент();
      Комп.УстановитьНовыйКод("");
      Комп.Наименование = Имя;
      Комп.Записать();
   КонецЕсли;
   ПараметрыСеанса.Компьютер = Комп.Ссылка; // Вот теперь тут правильное значение для клиентской сессии
А так же
Код
// Возвращает Истина, если пингуется IP-адрес
// http://www.forum.mista.ru/topic.php?id=435364
Функция PingIP_Адреса(IP_Адрес = "", ТекстСообщения = "") Экспорт

   Если ПустаяСтрока(IP_Адрес) Тогда
      Возврат Ложь;
   ИначеЕсли IP_Адрес = НРег(СокрЛП(ИмяКомпьютера())) Тогда
      Возврат Истина;
   КонецЕсли;
   objShell = Новый COMОбъект("WScript.Shell");
   objScriptExec = objShell.Exec("ping.exe -n 1 " + IP_Адрес);
   strPingResults = НРег(objScriptExec.StdOut.ReadAll());
   Результат = Найти(strPingResults, "ttl=") > 0;
   ТекстСообщения = ?(Результат, ТекстСообщения, ?(СтрЧислоВхождений(IP_Адрес, ".") >= 3, "IP-адрес", "Компьютер") + ": '" + ВРег(IP_Адрес) + "' - недоступен!");
   IP_Адрес = ?(СтрЧислоВхождений(IP_Адрес, ".") >= 3, IP_Адрес, ?(Найти(strPingResults, "[") = 0, "", Сред(strPingResults, Найти(strPingResults, "[") + 1, Найти(strPingResults, "]") - Найти(strPingResults, "[") - 1)));
   Возврат Результат;

КонецФункции // PingIP_Адреса()
Она не только проверяет доступность компьютера в сети, но и преобразует имя компьютера в его IP-адрес. Раньше ее использовал вместо функции ПроверкаСвязиФР(), но оказалось недостаточной. Может кому пригодиться кто не может обходиться без RDP.
Интересующийся
Вопрос: возникает вышеуказанная ошибка (Обработчик для оборудования GUID {08255EB8-3E69-4844-A591-3B7F6F15DC26} не загружен.
Требуется обновление схемы устройств и перезапуск 1С-Предприятия.) при попытке запуска фискального регистратора, ситуация возникла после обновления с версии 5.1.10.5 на 5.1.13.4, установщик оборудования с версией 5,1,12,03 (с версией 5.1.13.4 не было установщика) был установлен сначала сверху (не помогло), потом заново. Проблема не решилась - сделал откат версии. прошу помочь. Имя компьютера 6 латинских символов.
Сотрудник 1С-Рарус
Цитата
Михаил Третьяков написал:
Вопрос: возникает вышеуказанная ошибка (Обработчик для оборудования GUID {08255EB8-3E69-4844-A591-3B7F6F15DC26} не загружен.
Требуется обновление схемы устройств и перезапуск 1С-Предприятия.) при попытке запуска фискального регистратора, ситуация возникла после обновления с версии 5.1.10.5 на 5.1.13.4, установщик оборудования с версией 5,1,12,03 (с версией 5.1.13.4 не было установщика) был установлен сначала сверху (не помогло), потом заново. Проблема не решилась - сделал откат версии. прошу помочь. Имя компьютера 6 латинских символов.
Добрый день.
- Попробуйте переустановить систему управления оборудованием. Поместите все файлы СУО для Альфа-авто ред. 5 в отдельную папку (LocalProtectAlfa),
- Перезапустите службу Агент сервера 1С.
Интересующийся
Забыл сказать - база файловая на другом компьютере. По поводу отдельной папки - делал так, старую переименовывал, и ставил СУО в папку по умолчанию. Компьютер пользователя перезагружал. ошибка остается. Прошу дать свежую версию СУО.
Сотрудник 1С-Рарус
Цитата
Михаил Третьяков написал:
Забыл сказать - база файловая на другом компьютере. По поводу отдельной папки - делал так, старую переименовывал, и ставил СУО в папку по умолчанию. Компьютер пользователя перезагружал. ошибка остается. Прошу дать свежую версию СУО.
Нужно путь к папке с СУО указать в конфигурации в форме Рабочие места (компьютеры).
Интересующийся
Цитата
Светлана Рожок написал:
Цитата
Михаил Третьяков  написал:
Забыл сказать - база файловая на другом компьютере. По поводу отдельной папки - делал так, старую переименовывал, и ставил СУО в папку по умолчанию. Компьютер пользователя перезагружал. ошибка остается. Прошу дать свежую версию СУО.
Нужно путь к папке с СУО указать в конфигурации в форме Рабочие места (компьютеры).
там указан путь по умолчанию, указан верно
Сотрудник 1С-Рарус
Цитата
Михаил Третьяков написал:
Цитата
Светлана Рожок  написал:
Цитата
Михаил Третьяков  написал:
Забыл сказать - база файловая на другом компьютере. По поводу отдельной папки - делал так, старую переименовывал, и ставил СУО в папку по умолчанию. Компьютер пользователя перезагружал. ошибка остается. Прошу дать свежую версию СУО.
Нужно путь к папке с СУО указать в конфигурации в форме Рабочие места (компьютеры).
там указан путь по умолчанию, указан верно
Извините, я не совсем поняла. Вы переименовываете старую папку, и оставляете ее в стороне, а используете новую с наименованием по умолчанию?
Я же рекомендую вам установить систему управления оборудованием для Альфа-авто ред. 5 в отдельную папку (LocalProtectAlfa), и эту папку нужно указать с форме Рабочие места (компьютеры).
Пользователь ПП
Цитата
Михаил Волков написал:
Код
   objShell = Новый COMОбъект("WScript.Shell");
   objScriptExec = objShell.Exec("ping.exe -n 1 " + IP_Адрес);
   strPingResults = НРег(objScriptExec.StdOut.ReadAll());
В результате абракадабра (хотя фрагмент "ttl=" остался нетронутым). Как сменить кодировку?
Пользователь ПП
Цитата
Михаил Волков написал:
В результате абракадабра (хотя фрагмент "ttl=" остался нетронутым). Как сменить кодировку?
Вроде https://forum.mista.ru/topic.php?id=861697#25 нашел:
Код
   objShell = Новый COMОбъект("WScript.Shell");
   objScriptExec = objShell.Exec("cmd.exe /q /k echo off");
   objScriptExec.StdIn.WriteLine("chcp 1252>nul");
   objScriptExec.StdIn.WriteLine("ping.exe -n 1 " + IP_Адрес);
   objScriptExec.StdIn.WriteLine("exit");
   strPingResults = НРег(objScriptExec.StdOut.ReadAll());
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С