<?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 указано, что количество застрахованных лиц — это количество сотрудников, на которых начислялись страховые взносы. В моей организации работает иностранный гражданин, на которого взносы в ПФР не начислялись, однако обработка выдает его в списке.
(4) . Проверьте записи регистра «СтраховыеВзносыИсчисленные». Запись там наверняка имеется. И ошибка скорее не в «отчете», а в «учете»… 😀
(5) запись в регистре по иностранцу и должна быть, только не по ПФР, а по НС. (4) прав.
(6) Гут, поправлю.
(4) Поправил. Спасибо за сообщение. Узбеков у нас еще не было 😀
(4). Ошибка пропала?
Да, теперь действительно все верно 🙂 Спасибо за работу.
Проверила отчет на своей базе. В список не вывела, например, сотрудника принятого в середине февраля, у которого страховые взносы на ЕНВД. При этом начислены ПФР страховая часть и ФСС НС. Что из них повлияло?
(11) Попробуйте скачать новую версию. Надеюсь ошибка исправлена. Сообщите. Спасибо за сообщение.
Спасибо огромное!!! ТО что надо!
Спасибо!
Указанную ошибку (11) устранили. Но… У меня, например, есть сотрудники, которые находятся в отпуске по уходу за ребенком. С них не берут страховых взносов, но начисления им оформляются, как государственное пособие, выплачиваемое за счет средств ФСС. Эти люди попадают в среднесписочную численность для РСВ-1, а в Вашем отчете не выводятся.
(15) Наши расчетчики считают, что сотрудники, которые получают исключительно пособия не облагаемые страховыми взносами, не должны попадать в данный список. Если вы считаете, что это не так — рад буду услышать порядок расчета с ссылкой на нормативную базу.
Если в список должны попадать все работники, то может тогда просто брать полный список организации?
Цитирую РЕКОМЕНДУЕМЫЙ ПОРЯДОК
заполнения Расчета по начисленным и уплаченным страховым взносам на обязательное пенсионное страхование в Пенсионный фонд Российской Федерации, страховым взносам на обязательное медицинское страхование в Федеральный фонд обязательного медицинского страхования и территориальные фонды обязательного медицинского страхования плательщиками страховых взносов, производящими выплаты и иные вознаграждения физическим лицам
Настоящий Порядок разработан в соответствии с Федеральным законом
от 24.07.2009 № 212-ФЗ «О страховых взносах в Пенсионный фонд Российской Федерации, Фонд социального страхования Российской Федерации, Федеральный фонд обязательного медицинского страхования и территориальные фонды обязательного медицинского страхования» (Собрание законодательства Российской Федерации, 2009, № 30 ст. 3738, № 48, ст. 5726) (далее – Федеральный закон № 212-ФЗ).
В ячейках, отведенных для заполнения показателя «количество застрахованных лиц» указывается количество застрахованных лиц, за которых должны быть представлены сведения индивидуального (персонифицированного) учета за отчетный период.
В ячейках, отведенных для заполнения показателя «Среднесписочная численность» указывается среднесписочная численность работников, рассчитанная в порядке, ежегодно определяемом приказами Федеральной службы государственной статистики.
Уважаемый director04, как Вы видели, я поставила Вам плюс сразу после первого скачивания за желание помочь бухгалтерам. Но название Вашего отчета подразумевает правильное его заполнение. Поэтому и написано мое сообщение об ошибке. А исправлять его или нет, это Ваше решение.
(18). Уважаемая(ый) LALOO1, ставить плюсы или не ставить — дело каждого. Ставя «+» вы тем самым по сути выражаете бессловестное «спасибо» разработчику за неоплаченный труд.
Пользоваться отчетом или нет — тоже на ваше усмотрение.
Теперь по существу.
1. Упомянутый вами «РЕКОМЕНДУЕМЫЙ ПОРЯДОК» не есть закон (это не мои слова, а слова профессора Финансовой Академии при Правительстве РФ С.А Харитонова. Читайте журнал БУХ 1С №4, стр. №6) , а всего лишь только рекомендация. Я ждал строки из закона.
2. В приведенной вами выдержке, позволю ее себе зацетировать
«В ячейках, отведенных для заполнения показателя «количество застрахованных лиц» указывается количество застрахованных лиц, за которых должны быть представлены сведения индивидуального (персонифицированного) учета за отчетный период.
Так вот, в приведенной вами выдержке, сказано, что это количество застрахованных лиц, за которых должны быть представлены сведения индивидуального (персонифицированного учета. Если данную рекомендацию будете использовать в качестве буквы закона, то рекомендую вам использовать штатный отчет «Анализ начисленных налогов и взносов», там эту цифру легко получите.
Я как говорится предоставил видение закона № 212-ФЗ, как оно мне представилось из статьи Харитонова.
Все одно , спасибо за высказанную точку зрения.
Уважаемый director04. Ваша реакция, к сожалению, свойственна многим программистам. Сначала, как бы, попросили протестировать свой отчет, а затем обижаетесь на замечания.
Я очень хорошо отношусь к профессору С.А Харитонову, но в силу опыта работы в Минфине, читаю подобные статьи очень спокойно. Отчет же РСВ-1 надо сдавать в фонды, а не в журнал.
В любом случае, спасибо Вам за отчет. Но его можно сделать более информативным и полезным. Готова обсудить это с Вами по e-mail.
(20) Дальнейшее развитие данного отчета пока не планирую — отчетность. В скором будущем, по заявлению группы разработки, планируется выход нового внешнего регламентированного отчета РСВ-1, в котором вышеуказанные поля будут заполнятся в автоматическом режиме.
специально проверила по месяцам. не катит: в январе берет принятых в марте. в октябре берет уволенных в июле!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(22) Уважаема Светлана, дело в том, что видимо, при формировании документов «Начисление страховых взносов», вы не верно указываете период. 101% что это именно так.
Вы сами можете это проверить очень легко: откройте через меню «Операции» регистр накопления «СтраховыеВзносыИсчисленные» и убедитесь в этом сами. Метод исправления — исправить период в вышеупомянутых документах.
2. В существующей на сегодняшний день конфигурации ЗУП, в штатном регламентированном отчете, данные по количеству застрахованных лиц заполняются автоматически. И отчет несколько утерял свой смысл.
Все одно — благодарен за внимание к моей разработке.
Как проверочное доп. средство очень даже!!!
Хороший и полезный отчет.
Можно уже переводить на новые редакции