<?php // Полная загрузка сервисных книжек, создан 2026-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='\
хочешь коментариев, а не даешь скачивать…
присоединяюсь ко всем, нет возможности скачать, сбрось плиз zudov@onego.ru
всегда пожалуйста…….голосуйте если пргодилось….а то абыдно слюшай.да-а…..
А почему суммы налогов и по бюджету и по внебюджету одинаковы? Какой тогда смысл указывать источники финансирования?
Ириша, прошу прощения. бюджетом не занимаюсь….не делал…
Отчет полезный, но попытался получить его по большой конторе (около 1500 сотр), дождался «вывод печатной формы» и она ушла в себя. После часа выключил. Может надо было больше ждать ? Памяти 1 гб, частота 2100.
Assembler, не знаю в чем дело…такой базы у меня нет, тестил на базе в 500 чел., памяти 1гб, 2.8 двухядерный, крутил..всего 2 мин…..
Юрий ! Может быть пригодится. Процесс замедляется с увеличением периода отчета. Это естественно. При этом процесс сбора данных по времени возрастает гораздо медленнее вывода печатной формы. Взял 1 месяц. 5 минут сбор, 8 минут печать. Полгода — 20 минут и 2 часа 20 минут соответственно. А по году ?
Assembler, я думаю….подтормаживать может еще из-за обработки таблиц расшифровки, по большому счету их можно убрать….будет немного быстрее.
Юрий, я извиняюсь, вот с места «их можно убрать» чуть подробнее нельзя ?
Сергей, залезть в модуль, и удалить лишнее которое напрямую не связано с обработкой результата, а отвечает лишь за формирование при расшифровке ячеек, потом если ндфл не сильно нужен его тоже можно убрать, из-за него сильно подтормаживает, поиграйтесь с модулем, но сильно не спасет….имхо.. все зависит от того что вы хотите иметь, пути достижения разные, если не нужны налогооблагаемые базы будет еще проще, я думаю быстрее всего будет если юзать только запросами, хотя могу и ошибаться…
можно и мне глянуть, плиз
Судя по всему делалось на основе инд. карточки по ЕСН отсюда и тормоза некоторые.
Состав облагаемых баз можно было взять из свода по заработаной плате — выйдет быстрее, хотя и не совсем по данным учёта, например НДФЛ можно получить так:
Показать полностью
При желании можно получить отчёт помесячно или с начала года.
Со второй частью сложнее, наверное воспользуюсь вашей разработкой 🙂
Вопрос, а можно ли добавить аналитику по сводным проводкам??
Было-бы круто!
Отчет понравился, пригодилось
Спасибо огромное, именно то что я искала ))))))))
Супер !!! Спасибо, то что нужно !!
В отчет, в столбец «ПФР страх. и накопит.» не попадает налог начисленный на ВР «Компенсация отпуска при увольнении» (актуально в 2010 году). Если не трудно, исправь пожалуйста !