<?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='\
Добавил tlb файл для регистрации компоненты, если у кого появляется ошибка 0x80004002 (интерфейс не поддерживается)
А чем лучше чем scanopos.dll?
Gamm:
— неограниченное количество сканеров
— управляемый буфер
— ведение логов
scanopos теряет внешние события при массовом сканировании в момент нагрузки на базу (проведение документов и др.).
Добавил распознование штрихкодов из графических файлов.
В данный момент находится в тестовом режиме.
Автоматически ищется штрихкод на картинке, он может быть перевернут.
Возможности хорошие, но
Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0 это отпугивает. Ставить на все машины Framework не хочется. Было бы неплохо если бы была версия без .NET.
А с usb сканнерами работает? Вообще, хорошая вещь, только Рарус дрова тоже недавно разработал, они хоть и платные, но сканнер и card reader можно юзать бесплатно. Там тоже с несколькими сканнерами можно работать.
(6) — дадите железяку попользовать на время — сделаю и для юсб и для кард-ридера… Люблю с железками работать… Им говоришь, а они тебе отвечают :)))
Прошу прощения. Но что то ума не хватает (Я не волшебник а только учусь), Внедрил вашу обработку в ТиС 7.7
Она все работает показывает и с буфером проблем нет, а вот выдавать в документы и справочники ничего не хочет.
Понять не могу в чем дело?
Подскажите пожалуйста!!!
(8) Так надо в эти документы и справочники, в обработку внешнего события внести изменения соответствующие.
(9) Спасибо все получилось!!!
Для получения демо-версии или покупки обращайтесь по контактам, указанным в профиле.
Выложил в открытый доступ снова 😉
Спасибо! Прога отличная!
Нужен совет на локальном компе все идет, а на сервер не могу установить 😥 1с77 не видит сом-порт и не может подключить сканер.
(13) А что за сервер?
Оно работает! Спасибо большое!!!
Установил, скачал — всё работает, только есть проблемы:
1) при сканировании первый раз ничего не происходит, точнее событие возникает но данные пустые, а все последующие разы ОК
2) если закрыть 1С, то при следующем запуске 1С вообще события не генерируются, полная перезагрузка системы помогает
Не подскажите в чем дело, может что не так вызывается?
Столкнулся со странной проблемой: подключаюсь к windows терминалу из linux через rdesktop, пробрасываю порты, все приложения в терминале, включая 1с через стандартную компоненту работы со сканером ШК, видят com-порт, а barcodescanner — нет! Пишет: «ошибка открытия порта». На сервере настроен мапинг ком-портов. Подскажите, какие специфические «фичи» использует эта библиотека при открытии ком-порта? При подключении из windows все работает нормально, но хотелось бы иметь возможность работать из linux.
Присоединяюсь к вопросу (17).
пробую
Кто-нибудь пробовал запускать компоненту на управляемых формах, работает? И отдельный вопрос по сканированию из картинки (собственно ради этого компонента и нужна): кто-нибудь проводил тесты, сканирует?
перепрошиватть пробовали?
ой, не в эту тему, извините
тема давняя, как решили вопроса то?
кто помнит?(
А возможно добавить поддержку сканеров подключаемых с тонких клиентов через ser2net?
http://ser2net.sourceforge.net/ Используется для проброса com-портов в локальной сети. Через протокол telnet можно подключиться к удаленному порту, читать все данные поступающие от сканера и генерировать внешние события с этими данными.
Это решит проблему использования сканеров из linux. Через rdesktop все равно они нормально не будут работать.
Вот исходники проекта
каким-либо образом можно из внешнего процесса (другой программы) добавить в буфер BarcodeScanner.NET дополнительные «штрихкоды».
Или перефразирую, можно ли писать из другой программы в порт открытый BarcodeScanner.NET ?
(1с 7.7)
Подскажите : метод СканироватьКартинку() возвращает Булево, но не совсем пойму, сам распознанный штрихкод где взять?
Требования какие к скану? у меня не находит ШК.