<?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='\
Все красиво, только непонятно как же работать с этим конвертером, который .EXE, инструкций нет, а при запуске просто «промелькивает» , и все…
ОК. Это утилита командной строки. Промелькивает как раз инструкция. В командной строке нужно написать:
XLStoMXL.exe filename.xls
Утилита на выходе создает по файлу MXL для каждого листа XLS.
Я тока не понял? это что твоей програмка стала? или и была твоей
И была моей
И еще нюанс о котором не говорится в ReadMe — это то, что имя исходного файла должно быть задано только латинскими буквами.
Можно и русскими. Под XP отрабатывает нормально. Если имя файла с пробелами, то его, как обычно, нужно заключить в кавычки.
XLStoMXL.exe «Мой любимый файл.xls»
У меня объединение ячеек не перешло 🙁
Сработало практически хорошо, замечания:
1) В некоторых строках поменялось выравнивание (вместо «по значению» стало «право»)
2) Граница разукрасилась
проверял на Препроводительной ведомости из К+ (приказ N 199-П от 9 октября 2002 г. Приложение 8)
Нужная вещь! Сразу пустил в дело, все получилось ОК!
А как бы ещё задавать конечное имя (путь)…
Аффтару зачод! Работает реально стабильнее и качественнее всяких внешних обработок. Однозначный must have!
При попытке использовать отчет второй раз 1С вываливается безо всяких предупреждений.
ОБИДНО!!!
Извиняюсь, ошибочка вышла…
Комментарий относился к обработке «[MXLtoXLS] Сохранение больших таблиц в EXCEL» от Che_Burashka.
СПС
ну что сказать…..молодец…
Спасибо! Спас!
Как ее применять? Exe-шник быстро закрывается
XLStoMXL.exe — это утилита командной строки.
Порядок использования:
XLStoMXL.exe filename.xls
Зачот … отлично все работает!!!
А нельзя ли для чайников -бухгалтеров, которые работают в винде и забыли (или не знали)как работать в Досе,но знают 1С пошагово объяснить, как это все запустить?
Даже формы из консультанта взял.
красиво. молодчина.
зачетная штука! СПАСИБО!
Вовремя наткнулся на эту программу, так как мне не очень удобны загрузки из Excel-файлов, я обычно копировал информацию сначала в *.mxl через буфер обмена. Естественно, это муторно.
Плюс+++
Конвертор хороший. Только если в екселевском файле есть формулы, то при открытии xml файла пишет невозможно отркыть файл ) Если что знайте где копать )
Класс, очень нужная вещь!
Спасибо, нужная вещь!
отличная утилита!!!
Не совсем корректно перенесло: часть таблицы ушла далеко вправо, но удалить лишнее 5 сек делов, а перенос вручную из экселя пол дня + испорченный настрой на весь день от занятия хренью!
Поэтому большой жирный +.
Конвертнул, чуть подправил и… Счастье!!!
+
Автору большое спасибо! 😀
Куда пиво высылать 😀
Спасибо!
Большое спасибо очень помогла для создания отчета начальству и для саморазвития :)))
Спасибо, результат приятно удивил. конвертил очень большую таблицу, думал будет много ручного труда
кое-где заменило украинское «і» на цифру 1, остальное форматирование конвертнулось правильно
Это вещь мало сказать нужная.. она еще и ПОЛЕЗНАЯ для здоровья!!!=), т.к. избавляет от кропотливого труда перерисовывания всяких Excel’евских формочек из консультанта и т.д.. СПасибо большое за предоставленную возможность воспользоваться данным решением +++.
p.s. и где я только раньше был..не зная о сием.
Спасибо большое, очень пригодилось.
p.s.было бы неплохо это сделать в виде обработки под 8.1/8.2, чтоб была возможность как задать имя выходящего файла, так и сразу просмотр MXL-файла
А чем проект Иоксель не нравится? Или о нем никто не знает?
Самостоятельного приложения (*.exe).
Внешней компоненты для 1С:Предприятия 7.7, которая предоставляет функции Йокселя разработчикам через встроенный язык 1С:Предприятия.
COM-сервера для любого приложения, поддерживающего технологию COM.
Возможности Йокселя:
Прямое чтение файлов Excel – можно открывать книгу Excel, получать список листов и загружать любой лист в табличный документ Йокселя. При чтении сохраняется форматирование табличных документов Excel и внедренные объекты. Подробнее.
Прямая запись файлов Excel – можно создать книгу, заполнить список листов и записать книгу в файл. При этом будет сохранено форматирование и внедренные объекты табличных документов для листов. Конвертер Йокселя работает на несколько порядков быстрее встроенного в 1С:Предприятие конвертера и обеспечивает более высокое качество полученных документов. Подробнее.
Поддержка табличных документов 1С:Предприятия – поддерживается формат встроенных табличных документов в полном объеме. Документы можно загружать и записывать. Подробнее.
Элемент управления, позволящий отображать табличные документы на диалоговых формах 1С:Предприятия. Подробнее.
Преобразование табличных документов в файлы графических форматов: BMP, JPEG и PNG. Подробнее.
Расширенная работа с отчетами. Йоксель предоставляет разработчикам под 1С:Предприятие 7.7 ряд возможностей, отсутствующих в 1С:Предприятии и делающих работу с отчетами удобнее. Подробнее.
Показать
(39) Спасибо, обязательно посмотрю…да я не знал о таких вот вещах(((
сразу начал использовать, зачет
спасибо, очень помогло
плюс за идею…
только думаю, можно не в ЭКЗЕ, а в 1С написать.
Великолепная штука, даже когда не в 1С
Красота, то что искади на протяжении года!
Спасибо,круто.
Автору огромный респект! Сэкономил кучу времени.
Спасибо большое!
ОООчень помогли.
У меня, правда, отработало с сообщением Unknown error.
Но файл создался, внутренность его 1С распознала. Волшебно!
Наткнулся сейчас на эту замечательную утилиту через 9 лет после её публикации. Автору респект! Для чайников: кладём исходный файл в папку с экзешником, нажимаем Win+R, в появившееся окно перетаскиваем екзешник, после экзешника дописываем полное имя исходного файла, например, maket.xls, нажимаем ОК — и готово, mxl появится в папке с экзешником.
(49) Пользовался этой обработкой раньше, да, хорошо помогала при создании печатных форм на основе экселя. Сейчас платформа 1С 8.3. позволяет открыть файл ексель и можно оттуда скопировать в таблицу mxl содержимое.