#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. Внешняя компонента чаще всего имеет средства проверки состояния оборудования. Тем более компоненты кассовых аппаратов.
#7
by Йохохо
зачем проверять порт, если есть возможность проверить кассу? ЗЫ "Ну забыл кассир кассу включить" зачем кассу выключать?
#8
by Остап Сулейманович
+ На ИТС можно почитать "Требования к разработке драйверов для фискальных регистраторов". Там есть ответы на все ваши вопросы. Пример обязательного метода внешней компоненты: (ValuesArray) IDispatch* [IN] Массив значений для настройки подключения BOOL Выполняет пробное подключение и опрос устройства. При успешном выполнении подключения в описании возвращается описание устройства. При отрицательном результате возвращается описание возникшей проблемы при подключении. BSTR [OUT] Описание результата выполнения теста "
#10
by Сияющий в темноте
если фискальный регистратор,то проще запросить его состояние командой драйвера,и узнать,что,например,в нем нет бумаги или что-то еще странное
#12
by Tarlich
а вы не видели есть проверить все торговое оборудование , может вызвать данную функцию и смотреть что вернет -))
#14
by Галахад
Чего-то непонятно. 1С и сама проверяет подключение торгового оборудования при каждом открытии формы Чека.
#15
by Mikhail Volkov
Да, проверяет. В Альфа-Авто это все делает "черный ящик" СЗУО - Сервер защиты и управления оборудованием. Но обращение к нему чревато необратимой ошибкой "Порт недоступен"! Это происходит когда комп с ФР еще не включен (или ФР не включено питание), не вошел в терминал, не вошел в Альфа-Авто, не подключил ФР к Альфа-Авто. Самое печальное, когда все эти условия будут выполнены, то ошибка "Порт недоступен" не сбросится, если порт уже будет испорчен другим пользователем неудачной попыткой подключения ФР. Сперва боролись организационно: 1-м в Альфа-Авто входит кассир с компа с ФР. Все остальные ждут кассира, курят бамбук. Трудно выполнимо. Ослабили, входить в Альфа-Авто можно, но кассой не пользоваться, ждать разрешения... Вот и хочу сделать предварительный контроль без обращения СЗУО, и выдавать это разрешение. Хотел что-то попроще админское (но без прав админа не проверить)... Наверное без этого не обойтись? Глянул, с ходу не нашел примера проверки доступности подключенного устройства. Буду изучать...
#18
by Mikhail Volkov
Что-то на ИТС не нашел "Пример обязательного метода внешней компоненты". Можно поточнее ссылку? Покопался в старой ТиС, нашел свою обработку по снятию X/Z отчета, так все просто было: Мне что-то подобное нужно: занять порт, если ФР.ResultCode вернет 0 - все хорошо, освобождаем порт. Но где, как указать IP-адрес компа с ФР?
#19
by Vaflya
ну так описание к обслуживающему драйверу берете и смотрите что там есть, обычно есть МодельУстройства или ВерсияПрошивки, там много
#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, после чего проверить состояние.
#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, или что?
#31
by Mikhail Volkov
FPrnM8 заменил на FPrnM45 - заработало!? Для проверки порта и эта пойдет, но почему с FPrnM8 не работает? В итоге получилось: Но ФР.АдресХоста - только IP-адрес нужен, по имени компа не понимает!? 1С умеет имя в IP-адрес преобразовывать?
#33
by Mikhail Volkov
Не, нужен IP-адрес того компа, к которому подключен ФР. Сейчас я знаю какой, но его могут на другой комп переставить...
#34
by NorthWind
вообще говоря, имя в свойствах драйвера я прописывал и работало. По типу CAS-01:6220. Но я всё равно не понимаю, нафига вам это явно указывать, если у вас все это уже настроено в драйвере... По идее, вам в самом простом случае вообще достаточно тупо DeviceEnabled вызвать безо всяких приготовлений, потому как устройство у вас - одно и оно уже настроено под этим пользователем.
#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
#39
by Mikhail Volkov
Функция ПроверкаСвязиФР создавалось лишь для проверки, что комп с ФР включен, и порт доступен, можно подключать ФР к 1С, и отбивать чеки на нем. Но возникла следующая ситуация: пользователь в ПКО ставит галку "Для пробития на фискальном регистраторе", сразу идет эта проверка - все ОК, открывается Фронт кассира, на нем жмет кнопку "Отбить чек", запускает функцию ВыполнитьКомандуОборудования. И она выдает код ошибки: -11 "Устройство не включено"!? Как ошибка формируется посмотреть не могу, выдает Рарус_Компонента.ЗаказатьВыполнениеДействияСинхронно. Решил для отладки перед этим свою ПроверкаСвязиФР вставить. Она выдает "Порт занят" - это понятно, занят самим ФР. А в функции ПроверкаСвязиФР как-то можно определять кем занят порт: самим ФР или чем-то другим?
#40
by Mikhail Volkov
Сумбурно написал? Переписал свою функцию, чтобы состояние "Порт занят" как ошибку не выдавала: да вот сомнения, что порт будет занят, но не ФР, а чем-то другим?
#41
by Сияющий в темноте
у раруса включение устройства,это действие меняющен состояние обьекта устройства и к самому устройству относится опосредовано
#42
by Mikhail Volkov
> к самому устройству относится опосредовано Как это понимать? Команду глТорговоеОборудование.ВключитьОборудование выполняет, показывает статус Включено. А как чек отбить выдает код ошибки: -11 "Устройство не включено"!?
#43
by NorthWind
а вы не хотите этот вопрос задать ТП раруса? Если у вас альфа - авто куплена, то чего вы мучаетесь? Это не ваша головная боль. Нехай апгрейд этого СЗУО дают, может есть версия без косяков.
#46
by Mikhail Volkov
В обработке ТорговоеОборудование функции ВключитьОборудование есть такой фрагмент: Я конечно его за комментировал, но опасаюсь, что в СЗУО есть нечто подобное: где-то стоит признак, что ФР уже подключен, а он отвалился, в итоге подключения ФР не происходит. Думаю свое альтернативное подключение делать, в чем оно заключается? Функция ПроверкаСвязиФР работает по принципу занимаем порт/освобождаем порт. А если не освобождать порт, то ФР останется подключенным, или нужны еще какие-то команды? Какие?
#47
by Mikhail Volkov
Сегодня выдало "ФР: Ошибка выполнения команды "ПробитьЧек" КодОшибки: -3 800 Описание: В ККМ нет денег для выплаты". Рарус-1С советуют: Отключите контроль наличных в настройках драйвера ККМ Атол. За более подробной информацией обращайтесь в Атол, например, Подскажите, как отключить контроль наличных в 1С?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- При подключении к веб хранилищу Ошибка установки соединения
- ЗУП 2.5 Регламентированный отчет "Расчет по страховым взносам"
- Ошибка при переходе с ЗУП 2.5 на ЗУП 3.0
- УТ11 контроль свободного остатка
- (ЗУП 3.1) остатки отпусков - отмена доп.отпуска
- БП 2.0. НДС нерезидента. В разделе 8 указаны некорректные ИНН/КПП.
- Обмен УТ11-БП3. Выгрузка заказов клиентов
- Как на СКД в диаграмме значения графика выводить вертикально?
- Как в СКД в параметрах указать КонецПериода,день
- Как убрать доступность сортировки по полю динамического списка управляемой формы?
- 1С 8.3. Можно ли на клиенте ф = ПолучитьФорму(), а потом поработать с реквизитами ф?
- УТ 11.3 Группы финансового учета номенклатуры
- 1С 8.3.10.2561 Отбор в динамическом списке
- Отчет на базе универсального, изменить шрифт
- Нужно заполнить вторую таблицу по выбранной строке первой таблицы
- FTPСоединение: Превышено время ожидания
- Обновление формы списка в обычных формах
- Вызов процедуры на стандартном макете СКД
- История ОКВЭД в 1с Бухгалтерия 3.0
- СКД. Теряется строка. Различный результат консоли и скд