<?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='\
😀 ты крут, нечего сказать
а вообще кто не знает, пусть читает…пригодится
Грустно видеть необходимость такой публикации на инфостарте.
(0) убрал бы принадлежность к конкретным конфигурациям в публикации, разве не достаточно «документации по 8.х»?
(3) Почему? Инфостарт для всех, а не только для специалистов, которые и так все знают.
Чем больше нужной информации, тем лучше.
Только жаль, что нет способа как-то четко все публикации классифицировать, потому что в поисках нужного иногда успеваешь забыть, что ищешь.
(5) потому как элементарные вещи делаются через задний проход. Хотя может и не очень элементарные для кого-то 🙂 .
(6)
Хотя может и не очень элементарные для кого-то
Вот! Это и имею в виду 🙂
(0) Цитата: «В результате <…> возможность сравнивания практически любых данных!»
Подобным сравнением все равно очень неудобно пользоваться, на реальных данных ОЧЕНЬ часто бывает, что находится большое количество различий, хотя на самом деле это не так — например, сдвиг нескольких строк, значений и т.п.
(8) всё равно удобнее, чем вручную сравнивать или заказывать обработку франчу или фрилансеру.
А если почитать книжки из коробки, то вообще мега гуру можно стать!
(10) угу. просто есть порой мелкие вещи с ОГРОМНЫМИ возможностями, о которых в книге есть упоминание, но совсем не раскрывается потенциал и поэтому во время чтения этот момент просто пропускается как незначительный.
А мне понравилась публикация. Бухгалтерам это мануал нужен, если обороты большие — никуда не денутся от такой полезной функции. А самому потратить время и написать такую инструкцию всё руки не доходят. Вообще, можно было бы спец. раздел для публикации мануалов (HowTo) пользователям сделать. Лично меня бесит писать такие, на первый взгляд тупые, инструкции, но они всё равно нужны и иногда приходится.
(12)http://infostart.ru/public/71310/
инструкция по «Сравнить файлы..» в следующем обновлении FAQ для чайниковбудет.
Как и многие второстепенные вещи у фирмы 1С, это сравнение файлов достаточно примитивное и в ряде случаев (например затесалась лишняя строка с похожим началом, после которой остальные строки стали не совпадающими) раздражающее. Поэтому в достаточно сложных случаях рекомендую такие программы сравнивания как Compare It (платная) и KDiff3 (бесплатная).
Я почему то раньше считал, что такая возможность, как сравнение файлов, всем известна 🙂 мне бы и в голову не пришло, писать такую статью )
вот я вчера узнал, но не проверял еще, что оказывается, при сравнении и объединении можно указывать какие процедуры объединять 😮
вот про это имеет смысл написать… а так, плюс не за что ставить…
(15) я бы сам себе минус за такую статью поставил (: А вот отдельная обработка по сравнению планов счетов через OLE убила. Пришлось написать ширпотреб.
А выборочное объединение процедур и функций в модулях — где в одной статье тут проскочило. Но до этого я тоже не использовал эту функцию, хотя вялые её поиски делал.
«Вы всё ещё крыжите?»
Назовите так статью, и обыкновенных пользователей, знающих о такой возможности сравнения, станет больше 🙂 .
(17) даааааа… Это волшебный глагол «крыжить»…. (:
Спасибо большое, никогда не задумывалась, но вот прочитала и подумала, что здорово!!!
(17) а ещё бухи галочки БУ в документе называют «крыжики»
а я уж подумал две разные таблицы по ключевым полям крыжить может )
(21) если в таблицах оставить только ключевые поля, то может
А можно еще Total Commander заюзать. Для сравнения текстовых файлов вполне подходит, работает быстрее, чем 1С.
Таблицы, конечно, сравнить таким образом не удастся.
Но, опять, таки, таблицы в 1С можно сравнить только MXL. Неудобно.
(23) тотал командер ставить надо. Ещё БЕСПЛАТНЫЕ варианты сравнения таблиц есть?
(24)
MS Excel с 2010 выпуска есть в Starter Edition — который бесплатный. Отлично сравнивает!
Но автор молодец, этой штукой тоже можно-нужно и удобно пользоваться.
Кстати, есть еще прекрасная команда
FC file1.txt file2.txt
😉
Полезная статья! плюсую!
Программисту иногда полезно, бухгалтеру гораздо реже понадобится, т.к. они обычно крыжат данные разные по структуре. Но все равно спасибо за напоминание извествной, но так редко вспоминаемой возможности.
Рекомендую юзать эту статью вместе с моей обработкой:http://infostart.ru/public/105100/ (пока еще на модерации).
Все это хорошо, но вот бы кто написал прогу с ИИ, которая сравнивает данные похожей структуры, но визуально оформленных по разному.
Т.е. в одной таблице например есть один набор колонок, в другой — другой…
(12) Qsko, Полностью согласен. Качественные мануалы для пользователей — великая сила!!!
убивает то, что простые инструкции из желтых книжек для не желающих думать пользователей, которые вчера узнали что такое компьютер, а позавчера считали на счетах, и ленятся читать, набирают больше плюсов чем серьезные многочасовые разработки.
уже не первый раз такое встречаю, копипаст и букварь похоже рулят…
(30) Самого бесит.
Спасибо, за такой ликбез ))) Очень приятно когда есть что-то, что можно использовать сразу . Если не хватит этого , то уже хотя бы будет понятно о чем беседовать с программистом заказывая обработку для себя. Плюс поставила.
Только бы еще указать, что при сравнении таблиц/отчетов они должны быть одинаково отсортированы.
Но я своих пользователей научила использовать ВПР() в екселе, тоже очень просто, а возможностей больше.
(31) vitalya24, сделай лицо попроще, а то лопнешь от ЧСВ (чувства собственной важности).
Прежде чем тратить драгоценное время жизни на «серьезные многочасовые разработки», сначала подумай нужно ли оно кому-нибудь.
Возможно, проблему можно решить гораздо проще и изящнее, по-новому используя старые известные механизмы (как сделал автор статьи).
Возможно, вместо серьёзной разработки лучше сводить подругу на прогулку, или попить пивка с друзьями.
Жизнь очень короткая штука.
На молодость, пиво и прогулки она даёт всего 5-10 лет.
Я не коим образом не намекал на себя, на инфостарте куча разработок которые валяются никому не нужные с низким рейтингом в то время когда прописные истины которые можно прочитать и в книжке, не уходят долгое время с первой страницы. Какая мотивация будет у пользователей инфостарта (программистов) выкладывать свои разработки, если эти разработки не ценятся и не понимаются, проще тогда заниматься копипастом и радоваться высокому рейтингу, и не думать о том что количество толковых людей и их знаний уходят с инфостарта или туда где их будут ценить или вообще забьют делится чем-либо…Как такая перспектива?
Думаю лучше всетаки пользователю иногда самому разобраться с существующими механизмами 1с, а не глотать разжеванное, не думая вообще. А потом мы говорим что пользователи не умеют думать…Мы их к этому и толкаем…
сравнение файлов вещь очень клевая…но мне не удобно , что нельзя править полученную таблицу …она закрыта от редактирования что та , что другая…..сохраняется без цветов…т.е. без нужного эффекта…а хотелось бы прямо на месте отредактировать и распечатать.. есть ли возможность создания таких таблиц с открытой возможностью редактирования? или принципиально- нет????спасибо)))
Извиняюсь, конечно, но в TotalCommander этот функционал гораздо лучше реализован, там подсветка еще и отличий самих есть, а это гораздо удобнее при наличии нескольких столбцов при сравнении
(39) кто ж спорит, что сторонние программы могут быть лучше. Но не всех пользователей можно научить чему-то кроме основной рабочей программы. Да и действий мышкой больше выходит.
(38) mari0210, Если Вы имеете в виду редактировать при открытом окне сравнения, то нет…
Статья полезна для пользователей (что кстати отражено в заголовке)
По опыту 90-99% пользователей не знают о такой возможности
А для программистов — неплохо бы упомянуть в статье об объекте «СравнениеФайлов», тоже не все знают об этом 🙂
Даже написал однажды процедурку, в которую передаются 2 табличных документа, и она показывает окно сравнения — иногда удобно при доработке отчетов быстро сравнить исходный и измененный результаты отчетов