Не попадаю во ВнешнееСобытие при сканировании штрих-кода. |
Я |
15.02.19 — 14:01
Добрый день.
UPP 1.3.115.2
Обработка обслуживания, которая шла в комплекте, требует драйвер 8.1.6.1
Скачал его, установил.
Добавил его в «подключение и настройка торгового оборудования». Там написано что все ок, на вкладке «Тест устройства» нужный ком отображается, при сканировании штрихкодов сам штрихкод появляется. Но вот при сканировании штрихкодов в моих обработках (и типовых тоже) программа не попадает во «Внешнее событие».
Месяц назад работали атолоские драйвера от аж 2008 года, все было хорошо. Сейчас они работать перестали. Ставлю драйвера атоловские новые с сайта атол.ру — начинает все работать (но с десятисекундной задержкой, так как версия бесплатная, а за нормальную надо платить).
Помогите решить проблему с драйверами от 1С, пожалуйста.
1 — 15.02.19 — 14:33
Никто не сталкивался с подобными проблемами?
2 — 15.02.19 — 14:34
а если 1совские драйвра?
3 — 15.02.19 — 14:40
(2) Драйвер 8.1.6.1 как раз 1совский. Установил его, перезагрузил компьютер. В самой УПП добавил его, выбрав нужную обработку. Написано что все хорошо, что драйвер установлен и нужной версии. Тест оборудования проходит, по COMу штрихкод считывает.
Но при сканировании в обработке не попадает во внешнее событие. Причем код точно не причем, с атоловским драйвером все работает (но с задержкой).
4 — 15.02.19 — 14:46
(3) подключение оборудования к форме делал? как в типовых документах? и вообще, в типовых он нормально отрабатывает?
5 — 15.02.19 — 14:49
(4) Нет, в этом и проблема. В типовых тоже не работает.
А подключение к форме такое же как и в типовых, да.
6 — 15.02.19 — 16:27
Неужели ни у кого не было подобной проблемы?
7 — 15.02.19 — 16:28
может разрядность платформы не та?
8 — 15.02.19 — 16:29
(6) твоя форма, ловит хотя бы само событие ? Оно прописано в свойствах формы ?
9 — 15.02.19 — 17:11
(7) 32 разрядная платформа. На 64битной у рисунка Штрихкод не формируется поле ТипКода, ну да это ерунда. Не критично.
(8) Еще раз. На типовых формах не работает сканер, раньше работал. На моих формах не работает сейчас, раньше тоже работал. Причем здесь свойства формы? (ну конечно прописано) .
10 — 15.02.19 — 17:33
(9) тест проходит ?
Суфикс/префикс задан ?
11 — 15.02.19 — 17:33
как узнал, что событие не проходит ?
Может проходит, но не определяет как нужный шк 7
12 — 16.02.19 — 12:23
(10) Тест успешно проходит. Показывает у нужного кома сканируемый штрихкод.
Суфиксы и префиксы не задаю в самом коде. И тут не задаю тоже.
(11) Точка останова стоит на первой строке события. Ну и плюс у меня если код не подходит, программа ругаться должна.
Сейчас я сканирую те же самые штрихкоды что и при атоловских драйверах. При атоловских драйверах все ок (но с задержкой), при 1совских ничего не работает.
13 — 18.02.19 — 10:28
Разобрался. Настроил разделитель в самом сканере, стал попадать во внешнее событие.
Вопрос решен.
14 — 20.02.19 — 09:16
Теперь если сканер штрихкодов отключен, все документы (даже типовые) где используется сканер штрихкодов не открываются с ошибкой:
{ВнешняяОбработка.СканерШтрихкода.МодульОбъекта(268)}: Ошибка при вызове метода контекста (Занять)
Если Объект.Драйвер.Занять(1) = 0 Тогда
по причине:
Ошибка вызова метода внешней компоненты
Это мне придется править руками стандартную 1совскую обработку или я где-то в настройках какую-то галочку не поставил?
Ясное дело, что в сервисе можно галку снять у торгового оборудования, но предполагается что сканер постоянно туда-сюда дергают и галки каждый раз вручную переключать не вариант.
НачинающийВ1С
15 — 20.02.19 — 09:56
В общем, засунул кусок 1ссовского кода, где возникает ошибка, в попытку, проблема вроде решилась. Но чувствую что решение какое-то корявое.
Попытка
Если Объект.Драйвер.Занять(1) = 0 Тогда
Объект.Драйвер.УстройствоВключено = 1;
Объект.Драйвер.ПосылкаДанных = 1;
Объект.Драйвер.ОчиститьВход();
Объект.Драйвер.ОчиститьВыход();
Если Объект.Драйвер.УстройствоВключено <> 1 Тогда
Отключить(Объект);
Результат = мОшибкаПриПодключении;
КонецЕсли;
Иначе
Отключить(Объект);
Результат = мОшибкаПриПодключении;
КонецЕсли;
Исключение
Отключить(Объект);
Результат = мОшибкаПриПодключении;
Конецпопытки;
Ошибка подключения сканера cipher 1070
|
Добрый день! через некоторое время сканер снова начинает работать и затем снова сбивается, то есть как будто работает через раз. Драйвер установлен 8.0.8.22, ScanOPOS.dll зарегистрирована, обработка в 1с 1CScanOPOSScan_v2.epf версии 2.22 В чем может быть ошибка, уже который день работать не можем, не понятно в чем проблема. |
|
|
Добрый день! |
|
|
Здравствуйте еще раз! ScanOPOS.dll зарегистрировали ту, что с драйвером 1С была в комплекте. Что же мы делаем не так? Помогите пожалуйста! |
|
|
Эта уже ошибка кода 1С. |
|
|
Скажите, а может ли ошибка возникать, из-за того что в базу пытались подключить еще и штрих-сканеры атол? 1070 и атол не работают вместе? или от этого не зависит? Заранее спасибо. |
|
|
Конфигурация точно типовая, изменения не вносились. |
|
|
К БД не важно. Я уже не помню, но вроде бы к 10.3 подключение идет в разрезе ПК. Т.е. Если к одному ПК подключали но разными пользователями, то будет беда. Если на разных ПК, то нормально. Сейчас подключение идет как в разрезе ПК, так и в разрезе пользователя. Так что на 11 конфе можно на одном ПК подключить 2 сканера к разным пользователям. |
|
|
Сергей_техподдержка Администратор Сообщений: 1166 |
#8 0 30.01.2017 12:32:46
НЕ может быть такого! |
||
|
Добрый день! |
|
|
Залина Каскинова Пользователь Сообщений: 6 |
#10 0 30.01.2017 12:32:47
Попробовали перенести данные в ред.11, ни кто в ней никогда не работал, ничего не понятно(( |
||
При очередном обновлении БП пришлось поставить платформу 8.3.8.2088. После этого сначала перестал работать ТСД, решил вопрос обновлением обработки обслуживания, теперь не работает сканер штрихкода. При открытии любого документа выдает : {ВнешняяОбработка.СканерШтрихкода.МодульОбъекта}: Ошибка при вызове метода контекста (Занять) Если Объект.Драйвер.Занять = 0 Тогда по причине: Ошибка вызова метода внешней компоненты Сканер штрихкода (общий), драйвер ScanOpos 8.1.6.1, обработка 1CScanOPOSScan_v2.epf. Конфа УТ 10.3. Что делать?
От админа запусти, попробуй.
Под админом вроде работает. Теперь всем юзерам 1с под админом запускать?
для УТ пропиши в Версии 1С конкретный прошлый релиз.
Потом кто нить при помощи старых ярлыков будут и в БП заходить под старым релизом. Я на всякий случай удалил 8.2. Хотелось бы настроить все на 8.3.
Попробуй компоненту зарегистрировать отдельно. Выгрузи в файл из макета и зарегистрируй.
Тэги:
Комментарии доступны только авторизированным пользователям
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

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

Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.