<?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С — ломает выложить? 😉
ну и заодно поподробнее бы объяснили про «уровень защиты»…
А какие сканеры этот штрихкод поддерживают? Мне не попадались такие…
(3) почти все
Этот штрих код лучше распознавать специальными сканерами с поддержкой 2D штрих-кодов. Мы используем Symbol DS6707. Он имеет поддержку распознавания кириллицы.
Круто!
Однозначно плюс.
При чтении в 1С 8.1 пишет, что метод объекта «Создать» не обнаружен. В примере в 7.7 тоже самое. В чем может быть проблема?
А компонента регистрируется нормально?
(3) Налоговики уже принимают регл. отчетность обрамленную PDF417, релиз бухии 81, 1.6.16.4 использует внешнее приложение, эта приблуда обрабатывает выданную 1С печ. форму и цепляет на нее ШК PDF417.
Описанное здесь решение гораздо элегантнее и быстрее, выбранного фирмой 1С.
кто видел как работает регл. отчетность в релизах от 1.6.16.4 думаю согласятся.
Ответ на (2) «ну и заодно поподробнее бы объяснили про «уровень защиты»…»
PDF417 за счет избыточности кодирования дополнительных данных предусматривает имспользование полиноминального Reed-Solomon кодирования для восстановления информации. Количество дополнительных кодовых слов зависит от уровня коррекции ошибок (уровни коррекции от 0 до 8 !!!).
Ответы на (3) «А какие сканеры этот штрихкод поддерживают? Мне не попадались такие…» и уточнение к (4) «почти все»и (5).
Их достаточно много, но не «все» !!! И цены на них колеблются в широком диапазоне!!!
От Symbol
DS6700; DS6707-DP; DS6707-HD; SE4400 OEM Imager Scan Engine/PL4407; DS9808 Hybrid Presentation Imager; MiniScan MS32xx Fixed Mount Bar Code Scanner; MiniScan MS22xx Fixed Mount Bar Code Scanner; LS4208 General Purpose Bar Code Scanner; MiniScan MS4400 Fixed Mount Bar Code Scanner;
MT2000 Series Handheld Mobile Terminals; M 2000 Cyclone; LS 4008i; LS 4208
От Zebex Z-3072; Zebex Z-6012
От Metrologic MS9544 Voyager PDF; MS1690 Focus; MS1633 Focus BT
От Datalogic Gryphon D432; Lynx BT432; Lynx D432; QuickScan QS2500; QuickScan QS6500
От Code Corporation CodeReader CR.2
От Honeywell 4600g SR/SF (HHP 4600g SR/SF); 4600r Area Imager (HHP 4600r Area Imager); Honeywell 4800dr (HHP 4800dr)
Имею сканер MS1690 Focus, русские символы не считываются. Требуется какая-то настройка именно сканера штрихкодов ?
Да, нужно смотреть настройку сканера. А также проверить — поддерживает ли он вообще кириллицу. Как я понял, не все это умеют делать.
Один из вариантов шрихкодирования кириллицы — текст перед формированием шрих-кода кодировать в Base64. А после считывания — декодировать обратно. Если это делать в пределах одной фирмы — тогда все ок. А если шрих-кодами будут пользоваться другие — тогда возможны недоразумения — шрих-код считается — а там абра-кадабра.
При формировании шрих-кода PDF417 алгоритм может использовать 3 режима кодирования. В спецификации этот режим обозначен как «Compaction mode». Эти режимы такие:
Режим «Byte» обеспечивает кодирование Full ASCII (0 to 255), при этом плотность кодирования составляет 1.2 байта на кодовое слово.
Режим «Text» обеспечивает кодирование ASCII 127. Плотность кодирования — 2 байта на кодовое слово.
Режим «Numeric» — кодируются только цифры. Плотность кодирования — 2.9 байта на кодовое слово (т.е. самая высокая).
В компоненте используется первый режим «Byte». Благодаря этому кириллица кодируется нормально. Так что ГОСТ тут ни при чем. ГОСТ я тоже смотрел и кириллицы там не нашел. Смотрите последнюю ссылку в описании компоненты, там детально разбирается алгоритм.
А сканеры не все обеспечивают декодирование в Full ASCII. Вот и выходит, что нужно проверять, кто это умеет делать.
На (16)
Вот извлечение из «DS6707-DP Specifications»
1-D: UPC/EAN and with supplementals, Code 39,
Code 39 Full ASCII, Tri-optic Code 39, GS1DataBar
(formerly RSS), Code 128, Code 128 Full ASCII,
GS1-128 (formerly UCC/EAN-128), Code 93,
Codabar (NW1), Interleaved 2 of 5, Discrete 2 of 5,
MSI, Codell, IATA, Bookland EAN, Code 32
Так что здесь в 1D однозначно указано про Full ASCII.
Посему и не оспаривалась необходимость смотреть в спецификацию на «железо».
А в отношении режима «Byte», который действительно обеспечивает кодирование Full ASCII (0 to 255) по ГОСТу, есть предложение или просьба (если это возможно, конечно) сделать с помощью вашего софта ШК (ПДФ417), в которой закодированы построчно все символы латинской раскладки и там же все символы русской раскладки (всего это будет около 100 симолов), положить ШК в вордовский файл и приатачить к сообщению.
Хочется посмотреть в натуре, что из этого выйдет (имеется в виду при чтении разными аппаратами)!
А заодно хотелось бы увидеть в атаче и образец налогового или бухгалтерского отчета с ШК (ПДФ417), т.к. в PDF417_1C.rar примера отчета не обнаружено!?
(17) Сделал вордовский файл «Проверка на кириллицу». Качайте там же, где и компоненту. Правда шрих-код вставил там в виде картинки. Но для сканера это неважно. В штрих-коде закодированы символы латиницы и кириллицы. Проверяйте на здоровье.
По поводу налоговой — я делал ВК для своих (внутрикорпоративных) нужд. У нас на Украине пока не ввели шрихкодирование для налоговых, поэтому не сделаю пример.
(16) Уточнение. ВК использует все три режима. Но режим выбирается автоматически, в зависимости от кодируемого символа. Т.к. кириллица входит в верхнюю часть Full-ASCII кодов (т.е. выше 127 символа), то алгоритм автоматически выбирает режим «Byte».
На (18) потратил немного здоровья, а результат получил отрицательный, точнее тот же самый, что и раньше (кириллица не прорезается)!?
Только Datalogic Gryphon D432 попытался отобразить «нечто» (но неправильное) на месте расположения кириллицы, а DS6707 гордо проигнорировал ее и показал то же, что и показывал раньше (в зависимости от раскладки кир/лат или чистая «кир» с пробелами на месте «лат» или чистая «лат» с пробелами на месте «кир»).
Вопрос остается открытым, но теперь требуется уточнение ситуации у Вас, а именно:
— ставились ли какие либо спецдрайвера или допсофт типа 123Scan?
— возможность чтения кириллицы проявилась сразу же после подключения сканера или после каких-либо «телодвижений»?
— какая у Вас модель DS6707 (их есть 3 разновидности HD, DC, SR)?
У нас тестируется простой # DS6707 без суффиксов!
# DS6707-DC
# DS6707-SR
# DS6707-HD
У нас DS6707-SR (RS-232). Настройки сканера по-моему по умолчанию. Искал сейчас у себя бумаги с распечатанными штрих-кодами для настроек — не нашел — давно было. Но по памяти вроде бы ничего специфического не настраивал.
Драйвера — Атолл. Т.е. обычные. Специфического софта не ставил.
Настройки драйвера см. в прикрепленном файле.
На (17) и (20) отвечаю промежуточным итогом.
На (17). Сделанный Вами штрихкод прочитался, но только под WinXP (была еще Vista) и только DataLogic D432 Gryphon (USB)!!! Сделанные с помощью софта собственной разработки ШК, содержащие и латынь и кириллицу читались этим же сканером «на раз». Так что получили дополнительное подтверждение того, что наш софт вполне исправен и работает корректно. + подтверждение того, что байтовый режим соответствует своему названию и назначению.
Symbol DS 6707 (USB) и Symbol DS 9808 (USB), к сожалению и на XP показали все тот же кривой результат!?
На (20). Таким образом возникает еще один вопрос — под какой операционкой и с каким SP у Вас работал сканер DS 6707 ?
(21) Cканер работает под Win XP Prof SP2. Распознавалась кириллица как локально, так и при передаче данных с COM порта в терминальную сессию на Win2003.
На (22), а заодно и (13) в части «Имею сканер MS1690 Focus, русские символы не считываются. Требуется какая-то настройка именно сканера штрихкодов ?»:
1. После контакта с поставщиком сканеров была выполнена дополнительная «тонкая» подстройка (есть актуальные руководства, которые содержат специальные настроечные штрихкоды для «тонкой» подстройки) стал считывать смесь кириллицы и латиницы и Symbol DS 6707 (USB) и Symbol DS 9808 (USB).
2. Вывод — предпродажная настройка может как обеспечивать, так и не обеспечивать правильную настройку для Full ASCII (Code 39, Code 128) и/или для байтового режима уплотнения в PDF417. К тому же на машине должна быть кодировка Windows-1251!!!
А посему для правильного ответа на (13) и правильного решения нужно искать актуальные настроечные ШК !!!
Итог — понимание достигнуто, задача решена.
(23) И что же это за «тонкая» настройка? Какие настроечные штрих-коды вы использовали для Symbol DS 6707? Мне самому интересно, потому как покопавшись в документации — я не вспомнил, что такого делал со сканером, чтобы он стал распознавать кириллицу.
PS. И плюсик поставить, если не жалко. 😉
Да все тут грамотные, мы понимаем о чем идет речь говоря о настройках сканеров. Конкретно хочется услышать название параметра из инструкции, на какой странице и в какой последовательности программировать сканер. Эти умные слова о том что предпродажная подготовка сканера и т.п. это все ерунда, сами 10 лет продаем, неужели думаете что есть кто понимает все настройки на 300 страницах инструкции к сканеру.
Большущий респектище!!!!!
Не получается печатать ШК в 8.1. Шрифт установился, длл зарегистрировалась. Но вместо штрих-кода кажет нормальный читаемый текст, аля: «+*uls*ncE*Akl*vAq*Ciw*mDi*snj*wuw*xCy*ktB*bja*hkk*rDE*Cyy*iiE*Dbr*krj*CDD*Ctk*lvE*DhA*pls*-+*utA*snB*pzj*gz…… Помогиите, плиз…
При этом в 8.2 с абсолютно идентичной обработкой все ОК. Генерирует полноценные 2Д-коды.
На платформе 8.2 почему-то при печати выводятся равномерные горизонтальные белые полосы. Скорее всего в местах, где есть перевод строки. На просмотре всё нормально. Проверено на платформах 8.2.14.533 и 8.2.13.219, на различных принтерах. Пробовал и через объект «Текст» и группированием ячеек — результат тот же. Что самое интересное, в 1С: 7.7 всё выводится нормально, без полос.
Благодарю
(30)imtade, и вам спасибо
В 7 вылетает ошибка
Код417 = PDF417.Создать(КодируемыйТекст, УровеньЗащиты , КолВоКолонок);
{Z:PDF417_1CPDF417.ERT(38)}: Поле агрегатного объекта не обнаружено (Создать)
хотя dll зарегестрирована и шрифт установился.
попробовал подцепить dll в 8.2 но вылетает та же ошибка
Метод объекта не обнаружен (Создать)
Код417=ПДФ417.Создать(КодируемыйТекст, УровеньЗащиты , КолВоКолонок);
в чем может быть проблема?
ВК подключается без ошибок?
Сам объект
нормально создается?
С 7-кой разобрался,закинул файл дллки в папку 1с и заработало ))
с 8.2 посложнее, объект создается, но вот метод «Создать» отсутствует.
Пробовал добавить Addin.PDF417 как компонент ActiveX, он добавляется,но метод «Создать» также отсутвует
Как подключаете компоненту в восьмерке?
Как объект создаете? Так —
?
Создавал объект как новый COMОбъект(«Addin.PDF417») и поэтому не работал,
как PDF417 = Новый(«AddIn.PDF417») всё заработало отлично. спасибо
спасибо, отличная вещь
(0) Вопрос к автору: компонента формирует длинный код в одну строку?
Мне нужно кодировать многострочный текст, и при этом чтобы полученный штрихкод был не «длинным», а «квадратным», то есть рос не вправо, а вниз.
Встречались компоненты ActiveX для печати PDF417 с указанием не только количества колонок, но и количества строк.
Ваша компонента не поддерживает такую возможность?
(38) mikhailovaew, В методе Создать() есть третий параметр КолВоКолонок. Используйте его, чтобы ограничить штрих-код в ширину.
(39) да, получилось, спасибо
(38) mikhailovaew, Данная компонента не поддерживает указание количества строк.
спасибо отличная вещь!!!!
Большое спасибо. простой и ничего лишнего. спасибо за сэкономленное время.
Спасибо. Теперь все благодарят, чисто Версаль.
Здравствуйте!Компоненту и шрифт установил, но при формировании выдает ошибку:
Тип не определен (Addin.PDF417)
PDF417 = Новый(«Addin.PDF417»);
Что можно исправить? (кроме ДНК:)))
Не знаю, так у меня и не получилось подключить вашу компоненту, изголялся уже и с COMобъектом и с ЗагрузитьВнешнююКомпоненту. Не знаю точно, можно ли тут размещать ссылки на сторонние ресурсы, но вдруг будет полезно. Получилось вот с этой компонентойhttp://1c.proclub.ru/modules/mydownloads/personal.php?lid=7672&topic_id=285968&forum=6&viewmode=flat&order=DESC&ci d=139&start=0 и таким кодом:
PDF417 = Новый COMОбъект(«PDF417Font.PDF417»)…
А с вашей, автор, почему-то нет:( Буду благодарен, если прокомментируете ошибку из (45)
Не получается подключить компоненту в Windows 7. На XP никаких проблем.
(47) Не пробовал на Win7, поэтому ничего не могу сказать, что да как.
(46) Пуд, Спасибо тебе огромное выручил… Та же самая проблема как и у тебя.!!!
(49) ivanovav1983, Видимо это на 7 винде…
(49), (50) Ребята, уточните, плиз, на какой версии платформы 1С была ошибка? Винда я понял — Win7.
(51) у меня 8.2.13.219
Кстати, насколько я понял, поддержка пдф417 теперь есть в компоненте 1С Штрихкод.
(52) Какой режим — управляемый или обычный?
(54) обычный
(53) Пуд, да, он есть, но он не умеет работать с кириллицей (win1251)
Появилась разработкаhttp://infostart.ru/public/138263/ , с её помощью тоже можно формировать двумерные штрих-коды, включая PDF417. Её отличие в том, что используется ActiveX на основе opensource-ной компоненты для построения штрих-кода. Умеет ли её PDF417 работать с кириллицей — надо проверять.
Добрый день, может кто сталкивался сканер ds9808 (USB) работает как эмулятор клавиатуры.
При чтении тестового файла при распозновании русских символов не читаемое:
Qwertyuiopasdfghjklzxcvbnm
QWERTYUIOPASDFGHJKLZXCVBNM
щЎєъхэу°∙чї•Ї√тряЁюыфц¤ ўёьшЄ№с■
╔╓╙╩┼═├╪┘╟╒┌╘█┬└╧╨╬╦─╞▌▀╫╤╠╚╥▄┴▐
Показать
В макете поле параметр со шрифтом в итоге выдаёт следующее:+*uls*osw*bro*obj*ypy*-
+*yoD*jtD*wpA*jug*zeb*-
+*ejA*urw*yvt*ylt*zfc*-
+*ymz*Akl*ldk*sxC*pwz*-
+*pxk*wcF*Dfy*uaC*uwa*-
+*yrq*tmz*lFy*cCj*uzC*-
+*dxw*EBE*mgw*Eww*uiz*-
+*zdb*xAe*jug*mwB*yms*-
+*zdm*qgz*bqg*rse*ynm*-
+*oij*nEE*Akl*soi*csg*-
+*owB*viE*zjh*fyw*uia*-
+*ocz*BCj*cvw*rtC*ylu*-
+*cEk*dAc*sxn*Csa*obj*-
+*xDg*vbc*ivy*BDt*ylD*-
+*cFw*Dsl*wft*tmz*tfy*-
+*wqz*ECc*vto*CAo*FBA*-
+*czr*sfE*xbb*tis*czg*-
+*yfm*vub*krx*isi*tjm*-
+*xob*EvA*Blm*qyj*qlA*-
+*xAl*bEz*wFc*nnx*cjn*-
+*mfw*uDx*Ecj*rva*Eky*-
+*hss*Drn*vto*hlA*mgw*-
+*woB*wdB*sqE*lro*yea*-
+*wnu*Axa*lhz*nxc*mjt*-
Как решить проблему по 8.3
Ребят, добрый день, кто может поделиться данной разработкой? Нам бы попробовать, сами не из 1C.
Или кто может продать 1 стармани, что бы я смог скачать — мне нужны исходники и шрифты?
(62) Нужна именно COM и со шрифтами? Если же для 8.2/8.3, то у меня естьнативная .
1
(63)
Мы печатаем из SAP, и то как предлагается решать тут, для нас не подходит.
Я сейчас думаю, заставить сам шаблон экселя делать этот баркод, мы можем работать с шаблоном.
Хочу посмотреть шрифты и исходники.