<?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='\
Понятно что это рекламная статья…
Только вот очень спорная. А на практике, лично у моих клиентов, уже не возникает описанных проблем, при условии правильного порядка действий (правильного использования ЗиК).
Но разработки действительно имеют право на существования, особенно при отсутствии квалифицированных специалистов на поддержке.
Вот только возможно стоит использовать Инфостарт не только как рекламную площадку, но и продавать свои разработки через сайт, тем самым помогая ему?
(1) А у моих клиентов при наличии квалифицированной поддержки такие ошибки встречаются всегда, сколько не объясняй, до тех пор пока не начнут
http://infostart.ru/projects/4669/ , но в данном случае это доработки, т.е. заимствованный код. Как их продавать без разрешения фирмы «1С», инкогнито? А поддержка разработок? К сожалению, публика на инфостарте весьма специфическая и интересуют ее больше игрушки чем серьезные разработки, или халява.
пользоваться доработанным документом. Потому что далеко не всегда — полная
выплата, в порядке вещей — перерасчет задним числом, например премия за прошлый период уже после выплаты или что еще хуже исправление в сторону уменьшения зарплаты. Вот Вам и переплата, которую нигде невозможно увидеть.
А статья не только рекламная, но еще и методическая, потому что далеко не каждый пользователь понимает откуда берутся те или иные проблемы, н-р несовпадение сальдо в отчетах или красное начальное сальдо.
Что касается продаж на инфостарте, свои разработки с нуля я пытаюсь здесь продавать, н-р
(2) Судя по вопросам вhttp://infostart.ru/projects/2059/?p=2#comm29 (я там ответил) позволю себе усомнится в том, что вы правильно ведете учет.
> в порядке вещей — перерасчет задним числом, например премия за прошлый период уже после выплаты или что еще хуже исправление в сторону уменьшения зарплаты. Вот Вам и переплата, которую нигде невозможно увидеть.
У меня не возникает таких проблем… хотя есть и выплаты задним числом и исправления в меньшую сторону… Что бы это значило ? )))))
> К сожалению, публика на инфостарте весьма специфическая и интересуют ее больше игрушки чем серьезные разработки, или халява.
Я бы на Вашем месте не разбрасывался тут такими громкими словами о халяве. У самого то у вас рыльце не в пушку??? Я вот вижу что Вы скачали ВСЕ мои разработки по зарплате. Но даже не поставили ни одного плюса ни сделали ни одного комментария по делу (или хотя бы сказали спасибо)… неужели ничего не понравилось, неужели ничего не используете? Или качали ВПРОК??? Халява же ))))
В статье довольно хорошо расписан механизм ошибок при выплате зарплаты в ЗиК. Плюсанул.
Почему 1С до сих пор не решила подобную задачу, совершенно непонятно, ведь она существует с первых версих ЗиК 2.Х, еще до появления ЗиУП 🙁
Способов решения также существует несколько, в т.ч. и бесплатных 🙂
Вот здесь кое-что о способах решенияhttp://infostart.ru/projects/5859/ с
некоторыми комментариями. Оригинал, по моим впечатлениям, не обновлялся и
даже не тестировался. Это к вопросу о бесплатности. Вообще, бесплатных
разработок не бывает, кто-то за них все равно заплатил.
Статья хорошая, поставил бы +, но жадность на избитую тему, это -.
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=89&lid=1420
Кому надо — есть внешняя обработка, от Mike, аж 2002 года!
Не поленитесь только ПромДата с 2002 года на нужный переставить в модуле 😎 И поставьте оценку Mike! Хотел бы я, чтоб все мои отчеты по 8 лет работали 😀
Потом объясняете расчетчику куда смотреть и все. А для больших организаций, лучше док выплаты переписывать, у них времени не хватит проверять.
(7) >лучше док выплаты переписывать
http://infostart.ru/public/58094/
А жадные на избитую тему уже столько потеряли, что хватило бы несколько сотен
таких разработок оплатить.
Статья хорошая, в свое время сама разбиралась почему сальдовка не идет
Статья отличная! Теперь наши бухи прозрели откуда такой долг за предприятием по некоторым сотрудникам ) Спасибо Вам большое!