Имя: Пароль:
1C
1C 7.7
v7: Подключение сканера в пустую конфигурацию
0 aptomilov
 
13.01.23
12:21
Пустая конфигурация с одном документом  
подключил успешно внешнюю компоненту  
ПутьКДрайверу ="C:\totalcmd\Scaner1C.dll";
ЗагрузитьВнешнююКомпоненту(ПутьКДрайверу);


Повешал внешнее событие на форму документа  
но оно не срабатывает  
куда глянуть

просто в поле сканер сканирует без проблем
платформа х86
1 Builder
 
13.01.23
12:28
(0) Сканер клавиатурный или COM ?
Для клавиатурных используй драйвера и компоненту Атола версии 6.6
2 Бизон
 
13.01.23
12:30
так вроде в глобальном модуле что-то было, толи перехват события...
3 aptomilov
 
13.01.23
12:34
(1) сканер то клавиатурный конечно  
библитечка как раз оттуда вроде я ей обычно подключаю сканеры везде
4 aptomilov
 
13.01.23
12:35
а тут чо то раз и не сработал не хочет перехватывать
5 Builder
 
13.01.23
12:36
(4) А в Сервис-Параметры настроил?
6 aptomilov
 
13.01.23
12:39
(5)Пустая конфигурация с одном документом
7 Builder
 
13.01.23
12:40
(6) И че? Там настройки от ВК, включаются после ее загрузки.
8 aptomilov
 
13.01.23
12:46
(7)  о точно но как то они не сильно помогают
выбираю клавиатуру но магия не происходит
и после перезапуска  встает опять ком 1
9 Builder
 
13.01.23
12:52
(8) Там атол все настройки в реестр пишет вроде.
10 MWWRuza
 
гуру
13.01.23
12:54
(8)(9) Ага. Если в реестр, то надо как минимум один раз запустить "от имени администратора".
11 Builder
 
13.01.23
12:58
(10) Да вроде настройки сканера в ветке юзеров норм сохраняются и без прав и без запуска под админом.
12 Garykom
 
гуру
13.01.23
13:02
(11) после WinXP уже нет
13 MWWRuza
 
гуру
13.01.23
13:16
С другой стороны, если уж заморочились с загрузкой ВК, то что мешает перевести сканер в режим эмуляции COM-порта - ? А то потом начнется, "язык не тот", "регистр символов не тот", "GS1 не читается", "сжираются часть символов по непонятным причинам", и т.п. проблемы клавиатурных сканеров.
Кроме того, в режиме COM прекрасно работает родная 1С компонента ScanOpos.dll... И ни какой АТОЛ не нужен. Единственное, для правильной работы СканОпос, в сканере должен быть настроен суффикс ентер. Т.е., строка ШК должна заканчиваться переводом строки. Зато, ни каких проблем клавиатурных сканеров не будет.

PS Хотя, если ШК только простые линейные, без заморочек с маркировкой и т.п., то можно и клавиатурный режим использовать.
14 АгентБезопасной Нацио
 
13.01.23
13:17
а разве от клавиатурного сканера срабатывает внешнее событие?
15 Garykom
 
гуру
13.01.23
13:19
(14) ВК-драйвер перехватывает в буфере клавиатуры и вызывает
16 MWWRuza
 
гуру
13.01.23
13:20
(14) В компоненте ScanOpos - нет. В драйвере от АТОЛ можно настроить такой режим, заданием соответствующих префиксов/суффиксов.
Что тоже та еще процедура, ИМХО сложнее, чем в режим СОМ переключить.
17 Builder
 
13.01.23
13:43
(12) Ну хз, у нас в одном месте десяток компов на Win7 + 7.7 со сканерами, атол все настройки сохраняет.
1С не запускалась под админом.
18 vladmenleo
 
13.01.23
13:44
(0) Надо дернуть из стандартного тиса как минимум обработки ТорговоеОборудование и ТорговоеОборудованиеПараметрыМодели + Из глобала переменные и процедуры связанные со сканером типа
Перем глСканерВкл              Экспорт;
Перем глСканер                 Экспорт;

Перем глСканерМодель           Экспорт;
Перем глСканерОбработка        Экспорт;
Перем глСканерКомпонента       Экспорт;
Перем глСканерПрогИд           Экспорт;

Перем глСканерПрефикс          Экспорт;
Перем глСканерЕстьПрефикс      Экспорт;
в приначалеработысистемы добавить
глСписокКонтроль = СоздатьОбъект("СписокЗначений");
    ОткрытьФормуМодально("Обработка.ТорговоеОборудование", "Подключить");
добавить в глобал процедуры
Функция глОборудованиеКоманда(Вид, Обработка, Параметры) Экспорт
    Рез = "";
    
    Если ПустоеЗначение(Обработка) = 1 Тогда
        // внутренняя обработка
        Если Метаданные.Обработка("Обслуживание" + Вид ).Выбран() = 1 Тогда
            ОткрытьФормуМодально("Обработка.Обслуживание" + Вид, Параметры);
        Иначе
            Параметры.Установить("ОписаниеРезультата", "Отсутствует обработка обслуживания");
        КонецЕсли;
    Иначе
        Если ФС.СуществуетФайл(глКаталогОписаний + Обработка) = 0 Тогда
            Параметры.Установить("ОписаниеРезультата", "Отсутствует обработка обслуживания");
        Иначе
            ОткрытьФормуМодально("Отчет", Параметры, глКаталогОписаний + Обработка);
        КонецЕсли;
    КонецЕсли;
    
    Возврат Рез;
КонецФункции // глОборудованиеКоманда

Функция глСканерВключен() Экспорт
    Возврат глСканерВкл;
КонецФункции // глСканерВключен

Функция глСканерПосылкаДанных(Флаг) Экспорт
    Рез = 0;
    Если глСканерВкл = 1 Тогда
        Параметры = СоздатьОбъект("СписокЗначений");
        Параметры.Установить("Процесс", "посылка_данных");
        Параметры.Установить("Флаг"   , Флаг);
        Параметры.Установить("Объект" , глСканер);
        
        РезТекст = глОборудованиеКоманда("Сканер", глСканерОбработка, Параметры);
        Если ПустоеЗначение(РезТекст) = 0 Тогда
            Сообщить(РезТекст);
        Иначе
            Если Параметры.Получить("Результат") = 0 Тогда
                Сообщить("Сканер штрихкода: ошибка при установке режима");
                Сообщить(Параметры.Получить("ОписаниеРезультата"));
            Иначе
                Рез = 1;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    Возврат Рез;
КонецФункции // глСканерПосылкаДанных

Функция глСканерОчиститьВход() Экспорт
    Рез = 0;
    Если глСканерВкл = 1 Тогда
        Параметры = СоздатьОбъект("СписокЗначений");
        Параметры.Установить("Процесс", "очистить_вход");
        Параметры.Установить("Объект" , глСканер);
        
        РезТекст = глОборудованиеКоманда("Сканер", глСканерОбработка, Параметры);
        Если ПустоеЗначение(РезТекст) = 0 Тогда
            Сообщить(РезТекст);
        Иначе
            Если Параметры.Получить("Результат") = 0 Тогда
                Сообщить("Сканер штрихкода: ошибка при очистке очереди");
                Сообщить(Параметры.Получить("ОписаниеРезультата"));
            Иначе
                Рез = 1;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    Возврат Рез;
КонецФункции // глСканерОчиститьВход

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    
    Если Событие = "BarCodeValue" Тогда
        Если глСканерВключен() = 1 Тогда
            глСканерПосылкаДанных(1);
        КонецЕсли;
    Иначе
        // Тут может быть обработка событий от других устройств типа ккм
    КонецЕсли;
    
КонецПроцедуры // ОбработкаВнешнегоСобытия()
Ну может еще что
19 aptomilov
 
13.01.23
13:52
я тему не очень правильно указал  
я на 8 ке пытаюсь оформить работу сканера.

щас пока завис на админских правах
одмины никак не дают )
20 Garykom
 
гуру
13.01.23
13:53
(19) эээ на 8-ке все на так и в тоже время намного проще
просто возьми dllку правильную
21 aptomilov
 
13.01.23
13:54
(20)
я только что на этой длл ке настроил этот же сканер на упп на том же компе - все отлично работает
22 vladmenleo
 
13.01.23
15:32
(19) вот оно че, Михалыч!
23 vladmenleo
 
13.01.23
15:34
(20) Так в УПП наверно есть БиблиотекаПодключаемогоОборудования, а в твоей пустой конфе? может в этом дело?
24 aptomilov
 
16.01.23
10:27
(23) ну да там наверное есть какая то обработка и наверное она используется
может кто знает как ее заюзать в пустой базе
25 vladmenleo
 
16.01.23
10:46
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший