<?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='\
Внешний отчет «Справка о заработке для расчета пособий» предназначен для формирования справки о сумме заработка за календарные годы, предшествующие году прекращения работы, в соответствии со статьей 4.1 Федерального закона от 29 декабря 2006 года № 255-ФЗ (в редакции Федерального закона от 8 декабря 2010 года № 343-ФЗ).
Перейти к публикации
😀 Огромное спасибо, просто супер!
Из 1-НДФЛ заработок собирать неправильно.
(2) Поподробнее, почему неправильно? В 1-НДФЛ сохраняются все виды начислений, суммируем их и выбрасываем начисление с кодом 2300 (больничный лист). Примерно так!
Читаем подвал справки: включаются все виды выплат и иных вознаграждений в пользу застрахованного лица, на которые начисляются страховые взносы в Фонд социального страхования Российской Федерации в соответствии с Федеральным законом от 24 июля 2009 года № 212-ФЗ.
Есть такие выплаты, например договора подряда, на которык НДФЛ начисляется, а взносы в ФСС — нет. Т.е. по вашему алгоритму необходимо убрать еще код 2010. Матпомощь должна входить, только свыше 4000. Вообще есть много всяких особенностей. Справка в ЗиК есть. Собирается правильно, её и надо переделывать. Может у вас все просто, а других подведёте. Могут быть такие начисления, как оплата дней доноров, которые НДФЛ облагаются, а страховыми взносами — нет…
(4) Внес исправления в расчет базы ФСС. Спасибо!
Можно использовать для Комплексной (в ЗиК обработка уже есть!)
Для Комплексной совсем не работает, в модуле ссылки на константы, которых и в помине нет в Комплексной конфигурации.
А я так надеялся.. Сейчас попросила расчетчица зарплаты, чтобы была разбивка по периодам, т.к. человек в 2010 году работал
полгода, уволился, потом опять пришел.
Может кто подскажет есть ли эта справка доработанная под Комплексную???
спасибо большле
выручили!
Работает, спасибо!
Полезная штуковина!
Огромное спасибо автору этой обработки, сильно помогает в работе, только можно попросить добавить в верхнем углу номер формы и реквизиты документов, аоторыми она утверждена.
Заранее большое спасибо.
Для ЗиК не предназначена. Убери из описания…
(12) Прошу прощения за замеченную ошибку. Файл обработки(отчета) был не тот. Обновил!
Так обработка работает или нет для комплексной?