<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Судя по коду, зато надо иметь установленный MS Word и MS Excel. Также, как и затянуть в OLE-Object медиаплеер (ну хоть он то наверняка есть).
И не понятно — КАК открываются при этом PDF?
(1) DrAku1a,
MS Word и MS Excel нужен. Это я отмечал:
— Файлы Excel (*.xls;*.xlsx). Excel должен быть установлен на клиенте
— Файлы Word (*.doc;*.docx). Word должен быть установлен на клиенте
Медиаплеер и Adobe Player установлены. См. публикациюЖизнь на Марсе и ActiveX в тонком клиенте Windows 1C
Приведем список самых популярных безопасных ActiveX:
MS Media player 9 — 6BF52A52-394A-11d3-B153-00C04F79FAA6
MS Media player 6.4 — 22D6f312-B0F6-11D0-94AB-0080C74C7E95
Adobe Player — D27CDB6E-AE6D-11cf-96B8-444553540000
Adobe PDF — CA*A9780-280D-11CF-A24D-444553540000
Они у вас включены по умолчанию.
Word не взлетел…
(3) mnemchinov, А Excel ?
День добрый!
Файл *.tif пытаюсь просмотреть, открывает только первую страницу, а в файле 5)
Это как-то правится?
(5) AxiLLes89, Добавил разбор *.tif на фреймы
Это на маке в вэб клиенте тоже отработает? Частично отработает?
(7) ArtfulCrom, Могу выслать Вам обработку для тестирования
(8) Добрый день. Каким образом реализовать запрет на сохранение файлов на диске пользователя?
Добрый день! На веб-клиенте работает?
PDF предложило открыть во внешнем приложении, т.е. в форму обработки не залилось.
Чета приуныл…
(11) Какой клиент?
(12) Тонкий, 8.3.8.1784
(13) Откройте PDF в IE. Если предложит открыть во внешнем приложении, установитеhttp://get.adobe.com/reader
хм, попробую,
пару дней буду далеко от компа, отпишу по результату
спасибо
(15)Получилось?
Не, заказчика устроило открытие внешнего приложения.
Крутая вещь. если и правда работает 🙂
Обман же, нету там pdf — закомментировано.
(20) Смотрите комментарии.
pdf работает без дополнительной обработки, по Иначе
При открытии обработки
{(60,20)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла)
ВременныйФайл = <<?>>ПолучитьИмяВременногоФайла(«.html»);
{(67,20)}: Процедура или функция с указанным именем не определена (ПолучитьИмяВременногоФайла)
ВременныйФайл = <<?>>ПолучитьИмяВременногоФайла(«.html»);
(22)
Какая платформа и конфигурация?
Пытаюсь реализовать на основе вашей публикации. При смене изображения с pdf на любой другой тип, 1с падает в дамп. Ругается на AcroPDFImpl.dll. Как я понимаю, этоболячка относится к IE7, используемому в 1с. Как вам удалось обойти эту проблему?
(24)
Какой Windows и версия платформы 1С? 32 или 64 бита и тот и другой? Попробую смоделировать.
(25) ОС Windows Server 2008 R2 standart 64 (серверная, файловая база) а также воспроизводится на Windows XP SP3 32
Платформа 8.3.9.
На 8.3.10 вылезает ошибка при обработке docx файла:
Ошибка при вызове метода контекста (Формат)
Если Не К.Формат() = ФорматКартинки.НеизвестныйФормат Тогда
по причине: Неизвестный формат картинки
Гуглинг по имени библиотеки выдает, что это стандартная ошибка IE версии ниже 10. А в 1С IE7
И да, расскажите или дайте ссылку, где посмотреть как выводить tiff. Похоже тоже придется выводить