Контроль наличия подключенных устройств #807358


#0 by Mikhail Volkov
При наличие подключенных устройств к компьютеру в Сервис/Параметры добавляется вкладка Свойства независимо от версии 1С. Как то можно программно контролировать есть подключенное устройство, включено оно, или нет? Ну забыл кассир кассу включить, и пытается чек отбить. Надо выдать предупреждение, что касса не включена. Особенно в терминале, если порт не пробросился.
#1 by lodger
"пытается чек отбить" - "Надо выдать предупреждение" ну так. когда пытается - ком объект даст ошибку подключения. обработать код ошибки. сообщить юзеру.
#2 by Mikhail Volkov
Зачем, куда Com-объект? Контроль порта нужен, есть что на нем, или нет? Система это делает, но как?
#3 by Сияющий в темноте
естб wmi,где можно все спросить,но права админа нужны в терминале,сложнее,так как нужно по сети на машину заходить,хотя списое проброшенных портов можно увидеть, нл если порт физический,то даже если кассу не вкоючили  прлброс все равно будет
#4 by Mikhail Volkov
Админские проверки может дадут результат, но хотелось проверять доступность непустого порта (с подключенным оборудованием) средствами 1С. Никак?
#5 by Остап Сулейманович
1. Вкладку настройки внешних устройств добавляет внешняя компонента. 2. Внешняя компонента чаще всего имеет средства проверки состояния оборудования. Тем более компоненты кассовых аппаратов.
#6 by piter3
тестустройства проводить
#7 by Йохохо
зачем проверять порт, если есть возможность проверить кассу? ЗЫ "Ну забыл кассир кассу включить" зачем кассу выключать?
#8 by Остап Сулейманович
+ На ИТС можно почитать "Требования к разработке драйверов для фискальных регистраторов". Там есть ответы на все ваши вопросы. Пример обязательного метода внешней компоненты: (ValuesArray)     IDispatch* [IN] Массив значений для настройки подключения BOOL Выполняет пробное подключение и опрос устройства. При успешном выполнении подключения в описании возвращается описание устройства. При отрицательном результате возвращается описание возникшей проблемы при подключении. BSTR [OUT] Описание результата выполнения теста "
#9 by piter3
Только вот тут проблема есть,пока вы проверки делаете то пробить чек по моему нельзя
#10 by Сияющий в темноте
если фискальный регистратор,то проще запросить его состояние командой драйвера,и узнать,что,например,в нем нет бумаги или что-то еще странное
#11 by Остап Сулейманович
Открыть Проверить Пробить чек Закрыть
#12 by Tarlich
а вы не видели  есть проверить все торговое оборудование , может вызвать данную функцию и смотреть что вернет -))
#13 by piter3
Тест относительно длительная процедура
#14 by Галахад
Чего-то непонятно. 1С и сама проверяет подключение торгового оборудования при каждом открытии формы Чека.
#15 by Mikhail Volkov
Да, проверяет. В Альфа-Авто это все делает "черный ящик" СЗУО - Сервер защиты и управления оборудованием. Но обращение к нему чревато необратимой ошибкой "Порт недоступен"! Это происходит когда комп с ФР еще не включен (или ФР не включено питание), не вошел в терминал, не вошел в Альфа-Авто, не подключил ФР к Альфа-Авто. Самое печальное, когда все эти условия будут выполнены, то ошибка "Порт недоступен" не сбросится, если порт уже будет испорчен другим пользователем неудачной попыткой подключения ФР. Сперва боролись организационно: 1-м в Альфа-Авто входит кассир с компа с ФР. Все остальные ждут кассира, курят бамбук. Трудно выполнимо. Ослабили, входить в Альфа-Авто можно, но кассой не пользоваться, ждать разрешения... Вот и хочу сделать предварительный контроль без обращения СЗУО, и выдавать это разрешение. Хотел что-то попроще админское (но без прав админа не проверить)... Наверное без этого не обойтись? Глянул, с ходу не нашел примера проверки доступности подключенного устройства. Буду изучать...
#16 by Галахад
Какие-то ужасы. Ну можно впилить типовую проверку. Там вроде все прозрачно.
#17 by piter3
Может софт поменять:))))
#18 by Mikhail Volkov
Что-то на ИТС не нашел "Пример обязательного метода внешней компоненты". Можно поточнее ссылку? Покопался в старой ТиС, нашел свою обработку по снятию X/Z отчета, так все просто было: Мне что-то подобное нужно: занять порт, если ФР.ResultCode вернет 0 - все хорошо, освобождаем порт. Но где, как указать IP-адрес компа с ФР?
#19 by Vaflya
ну так описание к обслуживающему драйверу берете и смотрите что там есть, обычно есть МодельУстройства или ВерсияПрошивки, там много
#20 by isa2net
это подойдет?
#21 by Остап Сулейманович
Искать нужно : "Требования к разработке драйверов для фискальных регистраторов"
#22 by Сияющий в темноте
Если Альфа Авто так хреново работает,то проще в ней переписать работу с кассой,т.к.всё равно так не методы 1с а свой кривоколесый велосипед
#23 by NorthWind
да нигде не надо. Под нужной учетной записью Windows настраиваете нужный вам регистратор - локальный или удаленный - неважно. И все, под тем же пользователем вы можете пытаться логиниться на него средствами драйвера. IP удаленной машины не ваща забота, это все сохранено в настройках драйвера.
#24 by Mikhail Volkov
Да! Только ты нашел: "В Program Files ATOLDrivers8Samples примеры и там ECR = new ActiveXObject ("AddIn.FPrnM45");"? У себя смотрел c:Program Files (x86)ATOLDrivers8SamplesFprnM1CV80 обработку Пример - не нашел в нем ECR = new ActiveXObject ("AddIn.FPrnM45");!? Это теперь вместо ФР = СоздатьОбъект("AddIn.FprnM45");? Так оно, для пользователей, которым сисадмин настроил профиль в Сервис/Параметры/Свойства уже прописан IP-адрес:6220 пользователю остается нажать кнопочку "Проверка связи", и если в Результате: 0 - ошибок нет (пишет: АТОЛ 11Ф, №... ФИСК), то пользователь может спокойно подключать кассу и отбить чек. С гарантией, что это не приведет к необратимой ошибке: -3 Порт недоступен, после которой придется сервер перезагружать! Пока это лишь рекомендация для пользователей: делать проверку связи с ФР перед каждым отбитие чека. Потому что касса по 2-3 раза на дню отваливается. Ее желательно автоматизировать: как только пользователь ставит в документе галку "Для пробития на фискальном регистраторе".
#25 by NorthWind
ну автоматизируйте, кто не велит-то? Берете руководство к драйверу и пишете эту "проверку связи". Как я понимаю, достаточно попытаться сделать DeviceEnabled = 1, после чего проверить состояние.
#26 by isa2net
Я это из примера на jscript код выдрал, в 1c? конечно, СоздатьОбъект
#27 by Mikhail Volkov
Это 1С7, для 8-й нашел примеры в Драйвер ККМ. Руководство программиста "C:Program Files (x86)ATOLDrivers8DocDrivers8_FprnM_PM.pdf" Процедура ПриНачалеРаботыСистемы Но ККМ не на сервере терминалов, а на локальном компьютере. Надо наверное его IP-адрес указать. Но как? В принципе ККМ = Новый("AddIn.FPrnM8"); - это Com-объект, когда к другой базе цепляюсь по Com-соединению, указываю СтрокаПодключения: ТекCOMОбъект = БазаCOM.Connect(СтрокаПодключения); в ней путь (для файловой базы). А здесь как указать?
#28 by isa2net
Так это у вас натив объект по идее, он подцепит все настройки которые вы прописали в драйвере. // занимаем порт
#29 by Mikhail Volkov
Это да, но у меня пока "Объект не найден!", ККМ = Новый("AddIn.FPrnM8"); - не создается!? Почему? Не зарегистрирована FPrnM1C.dll, или что?
#30 by isa2net
бинарник 1с 32 битный запускаете?
#31 by Mikhail Volkov
FPrnM8 заменил на FPrnM45 - заработало!? Для проверки порта и эта пойдет, но почему с FPrnM8 не работает? В итоге получилось: Но ФР.АдресХоста - только IP-адрес нужен, по имени компа не понимает!? 1С умеет имя в IP-адрес преобразовывать?
#32 by isa2net
127.0.0.1
#33 by Mikhail Volkov
Не, нужен IP-адрес того компа, к которому подключен ФР. Сейчас я знаю какой, но его могут на другой комп переставить...
#34 by NorthWind
вообще говоря, имя в свойствах драйвера я прописывал и работало. По типу CAS-01:6220. Но я всё равно не понимаю, нафига вам это явно указывать, если у вас все это уже настроено в драйвере... По идее, вам в самом простом случае вообще достаточно тупо DeviceEnabled вызвать безо всяких приготовлений, потому как устройство у вас - одно и оно уже настроено под этим пользователем.
#35 by piter3
ну хочет человек по хитрому,пусть попробует)
#36 by Mikhail Volkov
В подробно объяснял: борьба с ошибкой "Порт недоступен", чтобы лишний раз сервер не перезагружать. Полагаться на настройки под основного пользователя ФР нельзя (он может еще дома спит), приходится указывать настройки явно. Согласен ФР.Password = 30; - лишнее, и прочие за комментированные строчки. А имя компа в IP-адрес преобразовывать можно в самой функции пингования: Правда при этом черное окно мигает, убрать его можно?
#37 by NorthWind
у меня есть скрипт на VBS, где пинг реализован средствами WMI. Могу дать. Правда, по общению с вами мне что-то кажется, что вы же все равно не будете переводить с VBS на 1С... Ниже скрипт. Set WshShell = WScript.CreateObject("Wscript.Shell") While Not InFile.AtEndOfStream Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '" & strHost & "'") For Each objStatus in colPings If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then OutFile.WriteLine strHost & vbTab & Time & vbTab & "недоступен" Next OutFile.Close WEnd InFile.Close
#38 by Mikhail Volkov
Готовый брал , добавил преобразование имени в IP_Адрес:
#39 by Mikhail Volkov
Функция ПроверкаСвязиФР создавалось лишь для проверки, что комп с ФР включен, и порт доступен, можно подключать ФР к 1С, и отбивать чеки на нем. Но возникла следующая ситуация: пользователь в ПКО ставит галку "Для пробития на фискальном регистраторе", сразу идет эта проверка - все ОК, открывается Фронт кассира, на нем жмет кнопку "Отбить чек", запускает функцию ВыполнитьКомандуОборудования. И она выдает код ошибки: -11 "Устройство не включено"!? Как ошибка формируется посмотреть не могу, выдает Рарус_Компонента.ЗаказатьВыполнениеДействияСинхронно. Решил для отладки перед этим свою ПроверкаСвязиФР вставить. Она выдает "Порт занят" - это понятно, занят самим ФР. А в функции ПроверкаСвязиФР как-то можно определять кем занят порт: самим ФР или чем-то другим?
#40 by Mikhail Volkov
Сумбурно написал? Переписал свою функцию, чтобы состояние "Порт занят" как ошибку не выдавала: да вот сомнения, что порт будет занят, но не ФР, а чем-то другим?
#41 by Сияющий в темноте
у раруса включение устройства,это действие меняющен состояние обьекта устройства и к самому устройству относится опосредовано
#42 by Mikhail Volkov
> к самому устройству относится опосредовано Как это понимать? Команду глТорговоеОборудование.ВключитьОборудование выполняет, показывает статус Включено. А как чек отбить выдает код ошибки: -11 "Устройство не включено"!?
#43 by NorthWind
а вы не хотите этот вопрос задать ТП раруса? Если у вас альфа - авто куплена, то чего вы мучаетесь? Это не ваша головная боль. Нехай апгрейд этого СЗУО дают, может есть версия без косяков.
#44 by Mikhail Volkov
У них один ответ - переустановка СЗУО из того же дистрибутива. Сколько можно?
#45 by Mikhail Volkov
+ Похоже проблема админская
#46 by Mikhail Volkov
В обработке ТорговоеОборудование функции ВключитьОборудование есть такой фрагмент: Я конечно его за комментировал, но опасаюсь, что в СЗУО есть нечто подобное: где-то стоит признак, что ФР уже подключен, а он отвалился, в итоге подключения ФР не происходит. Думаю свое альтернативное подключение делать, в чем оно заключается? Функция ПроверкаСвязиФР работает по принципу занимаем порт/освобождаем порт. А если не освобождать порт, то ФР останется подключенным, или нужны еще какие-то команды? Какие?
#47 by Mikhail Volkov
Сегодня выдало "ФР: Ошибка выполнения команды "ПробитьЧек" КодОшибки: -3 800 Описание: В ККМ нет денег для выплаты". Рарус-1С советуют: Отключите контроль наличных в настройках драйвера ККМ Атол. За более подробной информацией обращайтесь в Атол, например, Подскажите, как отключить контроль наличных в 1С?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С