<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Ставим дрова атола и тестим оборудование, затем во всех новых конфах полуавтоматический режим подклюния при помощи помошника. автор явно перемудрил
(1) С USB-сканерами, а тем более с PS/2-сканерами такое не сработает. Помощник 1С их не увидит.
(2) Неужели 8-ка такая сырая? 🙂
В 7-ке все нормально с клавиатурными сканерами
(3) Да. Сканирование товара в 1С 8 идет только при нажатии клавиши F7. С клавиатурными сканерами можно обойти это либо с помощью префиксов, либо создавать в документах текстовое поле и передавать туда всегда фокус, а на изменение поля вешать обработчик ввода ШК, либо вешать обработку внешнего события…
Какие еще F7 что за выдумки… никогда о таком не слыхал, а вот драйвер атола для сканеров стал платным это жирный минус.
(4) Во всех типовых конфигурациях 1С обработка внешнего события включена включена начиная с самых первых релизов. Что за колесо изобретаем?
(3) Никаких отличий в работе сканеров не замечал. И в 77 и в 8 они одинаково работают не зависимо от интерфейса.
(4) бред
Что-то не в ту степь автор попер…
(8) обоснуй !
Автор все правильно описал, только я немогу догнать нахрена для USB сканера эмулировать COM порт? Почему все именно так и делают, причем упорно. Ведь действительно ручной ввод штрих кода в 1С (в типовых конфигурациях … ну уж на «1С Розница» точно) можно произвести нажав F7. И достаточно как в USB, так и в PS/2 сканере прописать префикс кода 150 (это и есть клавина F7) ка 1С начинает читать штрихкоды без использования каких-либо dll.
Темболее для того, чтобы сэмулированный COM порт пробросить на сервер терминалов потребуются дополнительные пассы руками, а для правильно настроенного «клавиатурного» сканера ничего уже не надо и так все работает.
блин … обосновать я просил Borisych
собственно выше все сказано
изивини, если грубо выразился
но в (4) все, что написано после слова «либо», попадает под (8)
во всяком случае в моей практике такой необходимости не возникало, типовые механизмы отлично отрабатывают без дополнительного вмешательства в код
но в (4) все, что написано после слова «либо», попадает под указанное в комменте №8
Да я смотрю тут про F7 все не в теме … на «Рознице» так работает у меня, только что отктыл «Управление торговлей» — работает, уверен на УПП тоже работать будет — учите мат часть.
И именно таким же способом прикрутил работу со сканером к «клюшкам» у себя — на форме кнопка, для нее назначается клавиша F7, по нажатию выскакивает окно для ввода текстового поля, ну и ищем по базе и добавляем в таб. часть — просто и элегантно.
offtop, но все равно интересно: «Выбор оптимального размера скидки» — муть какая-то. Кто поддерживает моё мнение?
Минусы я не ставлю, но видимо «Надо, Федя, надо» 🙂
линк забылВыбор оптимального размера скидки
(14) Ф7 — это ручной ввод. К сканеру отношения не имеет.
2 Borisych извини — сам недосмотрел — посчитал что пост к автору статьи. Каюсь.
(17) «ручной ввод» чего 😉 не штрих кода ли ? А я именно этим и пользуюсь, причем заметь без каких-либо внешних dll и дров от Атола (которые сейчас платные). Плюс ко всему это работает не зависимо от платформы операционной системы — у меня есть одна машина на линухе к которой подключен именно такой сканер — воткни и работает и никаких дополнительных драйверов и пасов руками.
(19) Я про это и говорю 🙂
(1) Драйвера Атола-уже небесплатные.
(RG-Soft ) Не в каждую коробку со сканером кладут диск с драйверами.
У многих(для COM) интерфейс позволяет работать с ScanOPOS.dll от 1С.
USB,надо отметить, тоже бывает 2-х вариантов-разрыв клавиатуры и эмуляция COM.И подключение,соотвественно,разное.
>Устанавливая этот драйвер, система создает виртуальный COM-порт. Далее настройка идет как уже было описано.
Часто система присваивает этому порту номер за пределами понимания драйвера(5,6,7 etc.),тогда в этой системе нужно предварительно помянять номер порта.
откуда лучше всего начинать разбираться со сканером штрих -кода?
впервые столкнулся..где почитать?
ValeriTim
(10) Это конечно всё хорошо, но только при сознании новой номенклатуры F7 не работает, а эмуляция СОМ добавляет шрих-код автоматом((
Столкнулся с такой проблемой:
Сканер в разрыве клавиатуры. При сканировании в 8.2 в терминале часто вместо штрихкода посылается какой-то бессмысленный набор символов. При этом, если в той же терминальной сессии открою, например, блокнот и посылаю туда результаты сканирования — всё нормально. в чём может быть проблема?
Я бы добавил, что usb-шные сканеры могут быть HID-устройствами, в этом случае они никакого com-порта не эмулируют, а просто работают как клавиатура. Я, кстати, предпочитаю именно такие сканеры ШК. Преимущества:
1. не нужно наличие com-порта на компьютере — сейчас все чаще отсутствует com-порт вообще, либо занят фискальником. Да и вообще проблемы с com-портом возникают не так уж и редко, особенно в терминале.
2. работает везде, причем без установки драйверов — в любой операционке и в любой программе.
А по поводу драйверов от Атола — по-моему ничего противозаконного нет в том, чтобы использовать драйвера от 2008 года. Я не прав?
(22)
здесь .
Сканер штрих кода рекомендую LS1203. Он подключается в USB и работает как HID клавиатура и как виртуальный COM порт.
Обрабатывать его можно с помощью ScanOPOS в режиме ком порта.
Как подключить сканер к 1С:Предприятию 8.1/8.2 можно посмотреть
А в целом идея такова (как пример LS1203):
В публикации не описан вариант, когда сканеры, подключаемые через USB, определяются системой фактически как клавиатурные.
Есть, правда, сомнительное утверждение: «Такой же способ подойдет и для USB-сканера в том случае, если не удается поставить драйер эмуляции COM-порта».
Так вот: если USB-сканер — HID-устройство, то в режиме эмуляции COM-порта он работать не будет. А если предполагается, что USB-сканер должен работать в режиме RS-232, то драйвер эмулятора надо ставить по-любому.
Не знаю туда или нет пишу но надеюсь кто что подскажет
Мне привезли сканер штрих кода usb китайский без опозновательных знаков дрова есть на диске вроде работает через терминал распознает код но в 1с7.7 комплексная работать отказывается обсалютно нечего не выдает
Может кто сталкивался с китайцами как их можно подключить
да и еще кое что мне сказали что это типа аналог метрологика вроде но какого именно не уточнили покупал через ebay у китайцев которые по английски даже не говорят
Поздно я все это ваше прочитала. Автор прав: как раз столкнулась с проблемой сканера штрихкода и работы 1с через клавишу F7 (у меyя как раз сканер cino F780 BT USB) А конфигурация УТ 8.11. Сканер устрановился нормально, но читать коды подряд не хотел никак. И никто не дает нормальной консультации по этому поводу. Вот только здесь и прочитала что делать. С одним лишь нюансом: не написали где и как настроить «необходимо настроить префикс сканера» — и что это такое.
http://users.v8.1c.ru/version.jsp?id=ScanOpos&ver=8.0.11.1 — поставила. Сканер не работает теперь вообще….
Хотя забрела уже в такие дебри…и драйвера с имуляуией COM-порта поставила и компоненту сканер штрих-кодов
Придется наверное все удалять и начинать сначала с установки сканера к ноуту…
Может кто чего подскажет?..
(10) ValeriTim, Добрый человек, расскажи где и как это делается….подробненько, плиз, как для блондинки..
пардон ребятки, у меня 1с 8.2.11
(30) Берешь книжецу с описанием твоего сканера и штрихкодами настройки и внимательно втыкаешь в нее — все остальное уже написано выше
Все зависит от версии 1с предприятия и конфигурации. А также usb или com. Устанавливаются драйвера в систему, далее в 1 с подключить оборудование с помощью компоненты 1С.
Да все дело в том, что инструкция к сканеру на ненашем языке — это раз.
Порт юсб, я установила драйвер для сканера с эмуляцией компорта и установила компоненту 1с. Но все равно не работает. У меня до этого стоял сканер как эмуляция клавиатуры ….И я теперь не знаю как посмотреть какой именно драйвер тянет 1с..и как убрать оттуда лишние драйвера.
Программа пишет следующее: При подключении оборудования произошла ошибка:
«Не удалось подключить устройство «‘1С: Сканеры штрихкода’ на <<Пользователь>>(ASUS-ПК)»: Не удалось занять устройство.
Проверьте настройки порта. (999)».
Где это посмотреть??
(10) ValeriTim,
Как именно настраивать сканер с префиксом 150 (нажатие клавиши F7)&
В таблице кодов ASCII моего сканера Metrologik 9520 максимальный код 127. Про какой 150 вы тут говорите?
(35) Makushimo,
Лень было ждать ответа, разобрался сам.
Итак, коллеги, надеюсь кому пригодится
я делал на сканере Metrologic Voyager 9520
Все делаем с помощью настроечных штрихкодов из инструкции:
1.Восстановить значения по умолчанию — штрихкод (3999998)
2.Эмуляция USB-клавиатуры — штрихкод (3316400)
3.Вкл. двухзначное добавление — штрихкод (3101217)
4.Начало/конец программирования — штрихкод (3999999)
5.Конфигурируемый префикс№1 — штрихкод (3903500)
6.Кодовый байт «1» — штрихкод (31)
7.Кодовый байт «5» — штрихкод (35)
8.Кодовый байт «0» — штрихкод (30)
9.Выкл. двухзначное добавление — штрихкод (3101207)
10 Начало/конец программирования — штрихкод (3999999)
После этого сканер перед отправкой штрихкода будет посылать команду нажатия кнопки F7
Логика настройки для других сканеров возможно точно такая же.
p.s. вот лень производителям в инструкции писать все подробно и понятно не только для них. -)))
Думаю будет полезно таким же чайникам, как я.
(36) Makushimo,
Внесу небольшое уточнение.
«3.Вкл. двухзначное добавление» и «9.Выкл. двухзначное добавление» необязательно.
Из инструкции по сканеру Metrologic Voyager 9520:
Чтобы добавить префикс (*) сканируйте следующие коды:
1. Enter/Exit Programming
2. Congigurable Prefix #1
3. Code Byte 0
4. Code Byte 4
5. Code Byte 2
6. Enter/Exit Programming
Соответственно * это (042), а в текущей задаче F7 — (150)
(37) AVillain,
пробовал так делать, не получалось
заработало только когда включаю 2-значное число
Может у разных сканеров по разному
подключил сканер через эмуляцию Com порта
У пользователя 1с, который работает со сканером все ок, а вот у остальных пользователей выходит ошибка подключения торгового оборудования..
подскажите как сделать так чтобы этот сканер был привязан только к одному пользователю, а не ко всем..
(39) Alexey55,
Если другие пользователи работают с базой с других компов, то такой ошибки не возникает.
Если другие пользователи работают с базой с других компов и ошибка возникает, то удали у этих пользователей на их компах сканер из списка оборудования.
Огромное спасибо за инструкцию! ПОМОГЛА!
Добрый день.
Помогите пожалуйста разобраться с работай сканера ШК (USB эмуляция СОМ) и ридера МК MSR120 (USB эмуляция СОМ). Ситуация такая 1С ТиС на терминальном сервере Windows 2008 x64. Оборудование подключено через атоловские драйвера (бесплатная версия). Проблема наблюдается в одновременной работе сканера и ридера, подключеных на одной рабочей станции и в одном сеансе.
Более подробно, если подключен только один сканер, то все работает отлично. Но когда подключаю ридер в настройках 1С, то в поиске оборудования результат вижу, далее активирую что устройство включено, проверяю работает. Потом закрываю настройки открываю документ сканирую результата нет. Открываю настройки у ридера не активны пункты устройство включено и включать при запуске. Т.е. для второго устройства постоянно сбрасываются настройки что оно включено.
Кто нибудь сталкивался с таким? Подскажите как можно настроить одновременную работу двух устройств в терминале?
(36) Makushimo, класс, спасибо!!!
Добрый день всем. Первый раз столкнулся со сканером ШК. Почитал эту тему и комменты, вроде сразу стало понятно, что и как делать. Но при этом остался один вопрос: есть ли все-таки какие-то преимущества варианта подключения USB-COM? Или пусть себе работает, как USB-HID? Порылся еще и наткнулся вот на это:
http://www.store.ru/solution/OID_7c7b6e4f-015a-4f2a-9c4f-9993edf56109
И теперь уже точно все понятно. Может, кому-то еще пригодится статейка.
Большое спасибо, очень элегантный способ изменения функциональности без внесения правок в конфигурацию!
А в системе торгового учета Класс365 как настройку сканер штрих-кода сделать?
После перехода на УТ для Беларуси 3.1.5 возникли проблемы со сканером, а именно. Сканер настроен в эмуляцию клавиатуры. Префикс F7 запрограммирован на сканере, т.е. подключаемое оборудование в 1С не используется. При считывании ШК видно что окошко для ввода ШК всплывает, т.е. эмуляция нажатия F7 срабатывает, но сам ШК туда не передается и окошко сразу закрывается. При пользовании отладчиком видно, что ШК считывается. Куда копать?
Опытным путем выяснилось: Версия 3.1.5 работает под 8.3; Версия 3.1.4 работала под 8.2 и там сканер работал нормально. Когда запустил 3.1.4 из под 8.3 возникла таже беда.
Для китайских сканеров упрощенная настройка, нет выбора символов префикса, но….
по умолчанию код ADD STX FRONT, добавляет префикс Ctrl-B.
Остается только поменять настройки вызова формы поиска штрих кода на Ctrl-B.
Проверено на сканерах YHD.
Проблема такая. В толстом клиента сканер с настроеным префиксом Ф7 работает отлично, в тонком клиенте при сканировании ничего не вводит. В отладчике показывает пустую строку. Вроде как просто срабатывает Ф7, открывается окно ввода штрихкода, но в момент открытия, после префикса вводятся символы дальше, «в холостую», а когда уже форма открыта, просто уже срабатывает суффикс, ЭНТЕР и посылается пустая строка. Кто как обходил?
1C УНФ
Запрограммировала сканер на F7, получаю такой номер штрихкода «F72000000016153», но программа не находит такой штрихкод и не открывает окно ввода штрихкода
(50) Shergar,
Вы запрограммировали, чтобы вводился символ клавиши F и символ клавиши 7, а не символ клавиши F7.
(51) Спасибо, уже нашла символ F7, но увы не программируется, в отличие от символа Enter
Сканер RADALL RD-H2
(37)
(37)
(36)
Не могу для своего китайского чуда запрограмировать f7
(54)Используйте старые драйвера атол.
Пробовали версию 6,11.4 пишет устройство выключено. Когда захожу в «Найти оборудование находит клавиатура 21 потом штрих который я считываю и суфикс #13.
Написан демонстрационный режим, но почитав тематику данную вроде говорят что в демонстрации работает только задержка на 10 секунд!
Установил 6.4 версию! Всё вроде работает но как убрать задержку? на 10 секунд? DTO6_2010_04_23
(57) У вас демо режим, используйте DTO6_2009_02_11(Атол v6.5)
Спасибо всё получилось!
Други, такая ситуация. Есть 2 компа и 2 сканера с эмуляцией com порта. Com порты выбраны разные. Компы коннектятся по RDP к 1С. Порты пробрасываются для каждого пользователя нормально. Но 1с работает только с одним сканером, второму же выдает ошибку по порту 999. То есть оба сканера вместе не работают, только какой-нибудь один. Есть ли возможность заставить их работать вместе.
Вопрос: к одному компу подключены 2 сканера (COM). Оба работают, всё ок. НО. При сканировании одного ШК — в ТЧ в 1С добавляется 2 товара. То есть как будто 2 раза сканировали… (((
Отключаем один сканер — и снова всё ок. То есть двойной скан — очевидно из-за 2х сканеров.
Куда копать?
(62)
А они что, на одном виртуальном порту или на двух разных?
Двойной скан может быть, как мне видится, когда система одним драйвером получает данные сканера и транслирует в систему. Если идентификаторы двух устройств идентичны для системы, то она, полагаю, может просто дублировать входящий поток столько раз, сколько зарегистрировано устройств. Но если это два отдельных сканера на двух разных портах и подключены к 1С как два разных устройства, то такого, но мой взгляд, быть не должно.
Если сканер в разрыв, то обработка внешнего события не срабатывает. Есть кривой вариант повесить в глобальный модуль обработку ожидания с интервалом 1-3 сек, записывать значение в текст, и проверять текст на наличие в нем данных