<?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='\
Написал, почитавhttp://infostart.ru/orders/39/
бяка! 😉
— нужен офис… а если его у мну нет…?
— подойдет 2007, а если 2003? или не дай бог 2000? — где проверка на версию/возможность?
— и это похоже на гланды через ЗПС 😉
— а где вариант для Оо…? в котором есть родное ПДФ…
А что мешает печатать бесплатным пдф-принтером?
немного не по теме, но всеже про пдф.
наткнулся я как-то у себя в архиве на Новейший отчет за 2005год. Решил пдф-хелп почитать. Смотрю, а он (хелп) триальной прогой сконвертирован, и на каждой странице об этом жирным текстом сказано. ИМХО, как-то несолидно к платной проге такой хелп прикладывать.
Ломанули бы прогу, и не писал бы я об этом здесь. 🙂
(2) то, что я дал- самый простой способ, т.к. офис обычно есть у многих… Без всего этого — только внешняя компонента, которая все это будет делать 😉 Написать могу, а есть ли смысл?
(3) почитай ветку из 1 коммента 😉
(4) Ломать — плохо! Я уважаю труд других программистов 🙂
(5) > Написать могу, а есть ли смысл?
есть…
По ссылкеhttp://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=4d951911-3e7e-4ae6-b059-a2e79ed87041)
— запрашиваемая страница не найдена.. так и хочется -1 влепить… а еще спрашиваешь нужна ВК или нет….
(7) Пинай админов инфостарта, что так коряво отображают ссылки — удали скобку в конце.
скобку последнию убери!
млин, прям как маленький…
(7)Чебуратор, ти мене убив
иногда, конечно, хорошо, что Чебур докапывается до мелочей, но это ИМХО уже перебор! Весь свой статус так растеряет 😉
Чебуру не влом растерять весь свой статус… я от эникейщика ухожу все дальше и дальше… матом в адрес админов инфостарта — ну вы поняли.. если там сидят эникейщики, которые толком не могут сделать — это не в моей власти… 😉
так самое интересное что эту приблуду фиг скачаешь, если у тебя на компе офис не стоит… тоже мне, блин, автоматизаторы… (это я автору сабжа… ;-))
(13) так и написано, что для этого требуется 😉 1 пункт! 🙂
(12-14) Как-то гаишник меня останавливает:
— почему скорость превышаешь?
— дык у тебя ж радара нет
— как будто я до чего-нибудь еще не докопаюсь 😉
А вот как в дежавю конвертнуть, не подскажете?
(16) а для каких целей? мало информации по этому формату
(17)
Мне дежавю больше чем пдф нравиться.
Хорошая компресия картинок (1мб ч/б картинка бмп уменьшается до 20кб), в просмотрщиках файл быстрее открывается, чем н-р пдф в акробате.
(18) pdf, ИМХО, лучше всего открывать FoxIt Reader-ом (бесплатный)https://www.foxitsoftware.com/pdf/reader_2/down_reader.htm
Для таких целей я обычно ставлю бесплатный принтер PDFCreator и на него посылаю печать….вот и получается файлик pdf, а тут промежуточная фаза в виде XLS
(20) эту тему обсуждалиhttp://infostart.ru/orders/39/?cp=all
А можно узнать какой смысл конвертить *.xls в *.pdf, если при сохранении в *.xls теряется форматирование?Не проще напечатать на *.pdf-принтер сразу?Ну если не pdf, то Skitex можно поставить:-)И в дальнейшем отконвертить AcrobatDistiller-ом в pdf?
(22) 1. Смотря в формате какого офиса сохранять в xls.
2. Как я понял, все должно делаться программно.
Василь, респект и уважуха!
Лавр.
(24) Лавр, стараемся 🙂
Поддержу по поводу ненужности формата xls, т.к. у себя сделал что печатается прямо на принтер Adobe Distiller и полученный файлик забираю и складываю куда мне нужно.
А через COM-объект бесплатной программы PDFCreator нельзя в файл напечатать? 😉
(1) PDFCreator не всегда верно сохраняет. У меня не получилось уместить счёт на одну страницу. Бесплатное решение с помощью опена офиса описано тутhttp://infostart.ru/public/20710/ Работает лучше PDFCreator’а.
Выдает ошибку — Ошибка при вызове метода контекста (ExportAsFixedFormat): Произошла исключительная ситуация (0x800a03ec)
ExcelWorkBook.ExportAsFixedFormat(0, ФайлВФорматеXLS , 0);
по причине:
Произошла исключительная ситуация (0x800a03ec)
Не работает. Офис 2007.
(29) Да, описание ошибки многозначащая… 🙂
А просто так, из офиса из меню сохраняет?
(30) принтера не стояло — из-за этого:) но при попытки открытия пдф файла сохраненног выдает -файл не пдф или поврежден
(31) Ну тут уже вопрос к микрософту 🙂
Стоит Foxit Reader — он не открывает его. В чем проблема? Файл пересораненный таким образом будет открываться только акробатом? Или им тоже не будет?:)
Но если попробовать открыть этот фал экселем — то все нормально:)
(34) Я не знаю, как сохраняет офис. Я не разработчик этой надстройки.
У меня — все открывается. Всеми ридерами. Офис 2007 — лицензия со всеми обновлениями.
(35) 🙂 а нет идей почему такое может происходить? Такое ощущение что расширение поменял но в формат пдф не перевел:(
Пишу только из удивления и возможно, для тех кому надо сохранять mxl в pdf, используя описанный в статье способ(если excel стоит на сервере, то наверное можно сохранять и в контексте сервера). Вся проблема заключается в том, что при сохранении в xls, картинки теряют прозрачность. Если выставлять размер картинки — растянуть, затем делать фон либо прозрачным, либо rgb(255,255,255,0) , то сохраняется в excel(и кстати в open office тоже) с прозрачностью. Остается проблема размещения в одну страницу, которая легко решается либо макросом, либо лучше через com, например
xlPaperA4 = 9;
xlPrintNoComments = -4142;
xlAutomatic = -4105;
xlPortrait = 1;
xlDownThenOver = 1;
xlPrintErrorsDisplayed = 0;
ExcelЛист.PageSetup.LeftMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.RightMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.TopMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.BottomMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.HeaderMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.FooterMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.PrintHeadings = False;
ExcelЛист.PageSetup.PrintGridlines = False;
ExcelЛист.PageSetup.CenterHorizontally = False;
ExcelЛист.PageSetup.CenterVertically = False;
ExcelЛист.PageSetup.Orientation = xlPortrait;
ExcelЛист.PageSetup.PrintComments = xlPrintNoComments;
ExcelЛист.PageSetup.Draft = False;
ExcelЛист.PageSetup.PaperSize = xlPaperA4;
ExcelЛист.PageSetup.FirstPageNumber = xlAutomatic;
ExcelЛист.PageSetup.Order = xlDownThenOver;
ExcelЛист.PageSetup.BlackAndWhite = False;
ExcelЛист.PageSetup.Zoom = 100;
ExcelЛист.PageSetup.PrintErrors = xlPrintErrorsDisplayed;
ExcelЛист.PageSetup.OddAndEvenPagesHeaderFooter = False;
ExcelЛист.PageSetup.DifferentFirstPageHeaderFooter = False;
ExcelЛист.PageSetup.ScaleWithDocHeaderFooter = True;
ExcelЛист.PageSetup.AlignMarginsHeaderFooter = True;
Перенос по строкам в многострочном поле не корректно отображается. Само сохранение в xls уже делает все без переноса и соответственно в pdf все не очень красиво переносится
(5) только этот код не работает на Office 2003. Ошибка!
ExportAsFixedFormat добавили в 2010.