<?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='\
Не нравится описание. Я не «жлоб».
(1) Ваше право, но во первых прежде чем ставить минус можно было предложить исправить, а во вторых плюсы или минусы я считаю надо ставить за обработку, а не за слова
(2) Исправляйте.
По обработке:
1. А чем типовой перенумератор не устраивает?
2. Строка=»00000000″;
Уверены, что у всех длина номер документов 8 символов? А не проще ли взять длину номера из метаданных?
(3) Уже наверное поздно исправлять. сделанного не воротишь. хотя нет исправлю так как привык свои обещания
1.Если честно типовой даже не помню где он находится, да и проще написать было свой чем искать
2.У всех этих документов длина номера 11 знаков 8 + 3 префикса, а как взять длину из метаданных я не знаю
3. Если хочется что-то ещё пообсуждать давайте по личному сообщению. что бы не засорять комментарии
1. На диске ИТС
2. Стоит почитать ЖКК, объект «Метаданные»
3. Почему? А для чего комментарии? Только для восхваления автору?
1. Диска ИТС у меня нет
2. Ответ наверное тот же
3. Я просто думаю наша перебранка никому не интересна
1. Видимо 1С не лицензионная.
2. Синтаксис-помощник никто не отменял.
3. Где перебранка?
>или напишите, что Вам не понравилось
Я именно это и пишу.
(8)
1. Нет работаю с лицензией, но дома конечно же нет, а брать у того кого обслуживаю, а вдруг им пригодиться я же не хожу к ним каждый день. А в 1С можно многого и самому добиться.
2. Синтаксис-помощник первый друг в написании программ, но вот как то метаданные я плохо понимаю.
3. Перебранкой я называю наш спор.
(9) Спасибо за то что убрали минус. Ведь тот кто пишет сам наверное заслуживает какой-то похвалы.
>Я именно это и пишу.
А я мало того стараюсь доказать что пишу сам, но и оперативно исправлять свои ошибки, недочеты или просто удовлетворять просьбы других, как это было с другой моей обработкой, где пришлось написать 4 варианта. Вот оттуда то пошел этот «жлоб», когда скачало народу много а откликов нет.
(10) ахринеть… «скачало народу много» — это 2 человека? иногда по несколько сотен скачивают, а откликов нет…
(11) Это не про эту обработку там же написано там скачек больше 60
Да, много чел. скачали… Но я один за 55 сойду.
(13) До каких пор ты будешь засорять мои комментарии?
Дашь 10 руб за плюс?
(14) Не дам перестань мусорить, а хочешь поговорить позвони
Ладно не обижайся! Шучу я
(17) Я не могу на тебя обижаться но поболтать мы можем и по телефону
Вредная обработка, в части «Перенумерация Платежных поручений исходящих».
Надеюсь понятно почему.
P.S.
Не скачивал.
Я уж не говорю, что и период нумерации не обязательно год. Целиком согласен с Душеловом.
(19) Не знаю почему вредная, она не проводит то что не было проведено, а в нормальной бухгалтерии платежки идут одна за одной
А если не хочешь перенумеровывать платежки так не включай их и всё
(20) В стандартной настройке да и в большинстве фирм нумерация документов начинается с начала года
Всем большое спасибо за плюсы которые поставили и которые ещё поставят
Неплохая обработка — жаль не учитывает Префикс. Непложо бы подправить этот косячок
(23) Вообще-то должна учитывать префикс, она его берет из организации, но если говорите что нет, хорошо проверю
(23) Проверил у меня префикс использует, префикс берется из выбранной организации, длиной не более 3(стандартная настройка)
Огромное спасибо, отличная программа!!!