<?php // Полная загрузка сервисных книжек, создан 2026-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) kolabaister,
а уничтоженный в шредере подписанный документ?
он имеет юридическую силу?
(0) В нашем случае ответ в (1) тут чисто формальность, «для галочки» что бы решать споры с сотрудниками) Но электронный ключ можно оформить через юр отдел, он будет иметь юридическую силу. Правда сертификат будет оформлен на компанию а не на сотрудника, но в подписи зашито ФИО сотрудника, на последнем скрине видно.
Интересное решение..
Я пошел другим путем, когда делал нечто подобное, использовал Wacom-Signature-SDK (2 com объекта из SDK: Florentis.SigCtl и Florentis.DynamicCapture) , формировал обычный табличный документ, его подписывал и сохранял в pdf, pdf прикреплял к документу РКО. SDK позволяет вернуть картинку подписи в формате Base 64, а дальше дело техники.
Сокращенно как то так :
Показать
с батником не додумался ( видать документацию плохо курил)
P.S. Оборудование Wacom STU 430 .
(4) у нас Wacom STU 530 думаю разница не велика
(5) у них даже инструкция одна на 430 и 530
Прикольная и нужная штука.
Только в типовой конфигурации любой пользователь может как наприкреплять «своих подписей», так и поудалять или исправить «чужие».
В результате не получится так : «Я ничего не знаю, я этого не подписывал…» ?
(7) как настроишь планшет. Он может блокировать PDF от изменения. И как настроишь 1С, по умолчанию это всего лишь прикрепленный файл, дальше как хочешь блокируй.
(2) Makushimo, ни малейшей. И скан тоже, без хранящегося где то оригинала, ничего не стоит. Да, как ответил (3) видимо, только для усиления чувства ответственности сотрудников сделано)
Очень интересное применение. У нас есть готовый продукт для аутентификации по подписи на планшете и мобильных устройствах . Предлагаю интегрироваться с вашим решением. Можем предоставить API — функции.
Такая идея с подписями хороша для тёмных сотрудников, которые ни чего про юридическую значимость и возможность электронной подделки не слышали и слышать не хотят. Немного поинтересовавшись можно узнать, юридическая силы такая подпись не имеет, подделывается проще чем реальная подпись.
Вся эта идея с подписями на электронных устройствах обычная профанация и попытка показаться защищёнными и значимыми в доме из трёх стен.
(11) Dragonim, почему не имеет? Смотря как хранить и обрабатывать подписанный документ, можно навернуть криптографию и все будет очень даже
главное, чтобы не было технической возможности отделить подпись от документа и приляпать его к другому документу
(12) monkbest, Так в том то и дело, что что бы там не навернули, юридической силы это иметь не будет все равно. В суде всегда можно заявить, что у вас есть техническая возможность обойти эти механизмы, т.к. программист может включать и выключать что угодно, и пере создавать сколько угодно документов с прикреплёнными подписями не зависимо от того, что человек документов этих в глаза никогда не видел. Принятие таких подписей в суде будет возможно только в том случае, если программа будет «сертифицирована» в отношении того, что не возможна подделка в программе подписи никем, а так же установлена надёжная блокировка от внесения изменений в программу и применения внешних программ. А до тех пор, только хранящаяся бумажная копия или свидетели (причём не все свидетели одинаково полезны) постановки этой подписи могут сделать такую подпись легитимной.
Я так понимаю что это только для графических планшетов у которых есть какое то апи (SDK) типа Wacom STU 430-530, или я ошибаюсь?
(14) да я делал на вакоме, как остальные работают не знаю.
Автору респект. Реализовал у себя такое решение на УФ, встретился с такой проблемой что сам планшет пробросить в терминал сервер невозможно только через «USB over network» из-за этого есть некие тормоза при захвате именно планшетом для подписи.
Так же при открытии pdf файла в sihg pro pdf пользователю требуется нажать кнопки «добавить подписи» рис. 1 , потом подтвердить подпись рис. 2, ну а потом сам захват подписи. Подскажите есть ли возможность обойти эти промежуточные действие?
Ребят, встала похожая задача, имеется планшет Wacom stu-430, хочу интегрировать в 1С, но я так понял что ПО нужно просить у wacom, либо зарегистрировать продукт, чего сделать для России я не смог плюс я не покупал через сайт, а они просят номер счета указать. Запросил SDK у них, прислали письмо с доп. вопросами что принять решение о предоставлении ПО. Все как-то слишком заморочено я считаю, почему просто нельзя взять и скачать SDK пакет… Кто как заполучил ПО, может я не в ту степь ушел уже?
(17) Я не скачивал SDK. На сайте Ваком, в открытом доступе есть утилита для работы с планшетом, без всяких регистраций
(18)Спасибо! Я просто хотел использовать подпись без стороннего софта, напрямую через компоненту получать изображение и внедрять в 1С, поэтому интересно поковырять SDK. ) А на счет Sign Pro, у меня нет кода активации, который идет при покупке. Писал в тех. поддержку сказали нет кода — нет программы, запрашивайте SDK. Чем я и занялся…
(4) Расскажите пожалуйста по подробнее, как вы делали.
Спасибо.
Привет, мучаюсь с той же проблемой, не могу скачать stu sdk, Вы добились каких нибудь результатов от wacom?
Так что там с SDK? Где скачать? а то я дурак планшет купил. Некого кода в коробке нет. а Начальство просит что то похожее сделать.
Пришлю поздней. Занят поиском работы.
хорошо бы.
(24) Нашли SDK? Я позвонил в wacom еще до покупки, мне прислали ссылки на скачивание SDK и драйверов. Без всяких вопросах.
(24) Еще уточню свой же ответ. После регистрации в разделе developer сайта wacom.com можно скачивать любые SDK и программы к планшетам. Там же можно сформировать временные лицензии для SDK.
Я расписывается на XP-Pen Star G430S . Графический планшет берет PDF, добавляет в нее подпись и сохраняет PDF
(23) Могли бы вы оформить свое решение на этом сайте? Я купил бы, потому что самому программировать внешнюю компоненту на С# и сопрягать с 1С займет слишком много времени. Для одного частного образовательного учреждения нужно оформлять всякие ведомости, расписки и т.п. с подписями слушателей. Этих бумаг слишком много, а слушателей еще больше , так что требовать подпись у каждого слушателя просто нереально. И их не требуют. Но руководство этот момент постоянно вызывает зуд беспокойства. Все стороны, как ЧОУ, так и налоговая понимают бессмысленность этого требования, но это мало утешает. В общем, юристы ЧОУ уверяют, что даже картинок с подписью в 1с документах будет достаточно. Очень прошу вас опубликовать ваше решение.
(28) а где вы апи нашли или сдк для XP-Pen Star ?
не подскажите
(26)привет, не подскажешь пожалуйста по этой реализации с графическим планшетом, столкнулся с проблемой что не могу его на сервере использовать, не подскажешь как решал эту проблему через api
(31) У нас планшеты стоят на компьютерах пользователей. Мы для этого сервер не используем.
Поэтому и процедура &НаКлиенте
(32) так а 1с не серверная?
(16) привет столкнулся с такой же проблемой что не могу пробросить планшет графический, можешь чуть подробнее рассказать как ты решил проблему с подписью
(33) Работает и в серверной, и в файловой. А в чем разница, если форма работает на клиенте?
И компонента ставится на клиенте.
(35) возникла проблема с тем что не могу прокинуть через usb на терминал само устройство, поэтому мне постоянно возвращает ошибку формы захвата. Не подскажешь как такое решить
(36) Не знаю
(16) Подскажи пожалуйста, а не сталкивался ты с проблемой, когда прокидываем порт USB через «USB over network», не получаем обратно саму подпись с устройства. Ты же сталкивался с настройкой, помоги пожалуйста. Готов даже заплатить за консультацию. Просто проект уже нужно сдать, а столкнулся с такой проблемой, что не возвращается сама подпись в sign pro
(16)Парни, есть планшет, Wacom-STU500B на локальном компьютере с Windows 7 на борту и терминальный сервер на Win2008R2. Нужно его (планшет) каким-то чудом мапить в терминалку. Как я понял, мапить нужно не только USB, но и HID. С USB проблем нет. Устройство видно и на него даже передаются данные с терминального сервера, но то, что рисуется на планшете подключенному к локальному компу, на терминальном не отображается. Как я понимаю как раз HID и не хватает? как можно решить эту проблему?