Аналитика страховых взносов (для контроля РСВ-1) Расчет 7.7




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

48 Comments

  1. gutentag

    Жаль что нет расшифровки входящих в показатель значений.

    Reply
  2. rimma_n

    очередной вариант

    http://infostart.ru/public/64861/

    Reply
  3. the1

    Что за аналитика? В каких разрезах? Где описание? Где скриншоты? Минус

    Reply
  4. GalinaK

    Идея хорошая — собрать все взносы и НДФЛ вместе. Но, если страховые взносы — учитываются по месяцу регистрации, то НДФЛ может и в ноябре или в декабре прошлого года оказаться начисленным за январь или февраль текущего года. И эти суммы в отчете не отражаются….

    Reply
  5. nesl

    (3)Ключевое слово «РСВ-1» вынесено в наименование публикации. Те бухгалтеры, которым мне хотелось сделать Новогодний подарок, знают, о какой аналитике идет речь…

    Reply
  6. Lapitskiy

    без скриншотов грустно

    Reply
  7. bb1962

    Вот отчет, который показывает все, что есть в

    таблице значений ДоходыВычетыНалогиСотрудников, сформированной

    глобальной функцией глСобратьДанныеДляСтраховыхВзносов()

    http://infostart.ru/public/69141/

    Reply
  8. alxnam

    Спасибо, очень помогло при составлении РСВ-1, к сожалению выгрузить из ЗИК теперь никак 😥

    Reply
  9. stepan04

    Спасибо, очень хороший отчет. Именно то что нужно бухгалтерам, особенно когда есть превышения. Единственное было бы хорошо если бы суммы превышений показывались не только при печати «Шкала», но при «Печать с аналитикой». Но все равно хороший отчет.

    Reply
  10. TachYanochka

    Это файл для восьмерки? на 7.7 он невидиться

    Reply
  11. Octopus

    (10) Нет, это файл внешней обработки под 7.7.

    Reply
  12. TachYanochka

    Мне так себе

    Reply
  13. Программулькин

    скачал, поставил, тэстим, описание хромает, скриншотов нет — это минус, и мну смущает дата публикации, для формирования данных на 4ка 2011 года эта обработка ещё актуальна?

    Reply
  14. nesl
    Программулькин пишет:

    скачал, поставил, тэстим, описание хромает, скриншотов нет — это минус, и мну смущает дата публикации, для формирования данных на 4ка 2011 года эта обработка ещё актуальна?

    Reply
  15. nesl

    Отчет поддерживаю в актуальном сосотоянии — он нужен людям, которые, в отличие от Вас, мне благодарны.

    Reply
  16. victuan

    Я бы только за оформление поставил бы минус.

    Подожду, вдруг автор исправится… Затем обещание непременно исполню.

    Reply
  17. -=LoBoS=-

    Отличный отчет и реализован хорошо. Не может один и тот же отчет нравиться всем программистам, а уж бухгалтерам тем более. Я, к примеру, все скачанные отчеты дорабатываю по требованиям бухгалтеров. Но смысл внести как можно меньше изменений и затратить как можно меньше времени, поэтому nesl, спасибо за отчет!!!

    Reply
  18. ФеяС

    спасибо

    Reply
  19. karbofos

    Воще класно.Спасибо.

    Reply
  20. klad1970@mail.ru

    Спасибо! Актуально — не то слово!

    Что-то у меня при запуске вываливается ошибка :

    Выполнить<<?>>();

    {D:1C_BASE7ЗИК_ДЕМО313PRDEMOEXTFORMSАНАЛИТИКА СТРАХОВЫХ ВЗНОСОВ 01.11. 2011.ERT(2109)}: Процедура не обнаружена (Выполнить)

    Выполнить<<?>>();

    {D:1C_BASE7ЗИК_ДЕМО313PRDEMOEXTFORMSАНАЛИТИКА СТРАХОВЫХ ВЗНОСОВ 01.11. 2011.ERT(2145)}: Процедура не обнаружена (Выполнить)

    Помогите, плиз!

    Reply
  21. nesl

    (20) klaus,

    Извините, перестаралась, когда чистила модуль. Исправила…

    Reply
  22. klad1970@mail.ru

    Спасибо, за оперативность!

    Сразу бросилось в глаза, у некоторых «Подоходный налог Исчисл» не равен «Подоходный налог Удерж». А в столбце «НДФЛ_Исч не равен НДФЛ_Уд» у всех стоит Н!

    С Вас уже 2 деньги!:)

    Reply
  23. nesl

    (22) klaus, Буква «Н» (неравен) как раз и означает неравенство НДФЛисч и НДФЛуд…

    Reply
  24. victuan

    мда… девушки-программисты жгут.

    Нет чтоб написать всем понятное «<>», лучше влепить «Н».

    Reply
  25. klad1970@mail.ru
    nesl пишет:

    (22) klaus, Буква «Н» (неравен) как раз и означает неравенство НДФЛисч и НДФЛуд…

    Замечательно. 115 сотрудников у всех Н. Даже в приведённой выше картинке, первая строка 735.00 Н 735.00 Что-то не так!

    Reply
  26. NOVOPRO

    Отличный отчет и реализован хорошо.

    Reply
  27. klad1970@mail.ru

    Подскажите, плз, в столбце 4 — НДФЛ_исч не равен НДФЛ_уд, только у меня «Н» при любых сочетаниях соседних столбцов?

    Reply
  28. nesl

    Спасибо! Ошибку исправила…

    Reply
  29. Лена_Лена

    Спасибо, пригодилась!

    Reply
  30. klad1970@mail.ru

    (28) А ссылочку бы чёб проверить? Можно в личку.

    Reply
  31. ilyina

    Спасибо большое за отчет. Очень пригодилось выделение по инвалидам. Удобный и информативный отчет.

    Reply
  32. kurvik

    Спасибо, очень хороший отчет. Именно то что нужно бухгалтерам, особенно когда есть превышения предела.Вот только-бы выделение позиций с ошибками более наглядно сделать или выпускать отделный отчет.Будет востребован бухгалтерами при составлении отчета в ПФР.

    Reply
  33. gala2009

    мне такой отчет нужен, непонятно только — люди выводятся или нет, и насколько он актуален

    Reply
  34. gala2009

    все выводится, а если мне понадобился страховой номер — тоже добавила в макете. хороший отчет, для 7 мало возможностей, нет рсв и пр

    Reply
  35. gala2009

    пригодился и в первом квартале 2013 для сверки начислений по сотрудникам и по пачкам, а то разошлись суммы в рсв и пачках

    Reply
  36. gala2009

    плохо что нельзя посмотреть имя файла. когда-то скачивала, не могу найти на диске по входящим словам, имя хоть убей — не помню, придется еще раз скачивать видно

    Reply
  37. 27272

    Подскажите, а с превышения 568000 10% поправили?

    Reply
  38. nesl

    (37) 27272, предел базы определяется автоматически, так что превышение всегда актуально. А распределение по возрастной шкале я поправила (не формировалась «шкала» за 2013 год). Спасибо.

    Reply
  39. ice_777

    Добрый день!

    А для 2014 года этот отчет можно использовать? или нужны доработки?

    Reply
  40. nesl

    (40) ice_777, конечно! Этот отчет всегда поддерживаю в актуальном состоянии (он нужен людям). Сейчас он работает для 2014 и прошлых годов, о чем я и упоминаю в анонсе.

    Reply
  41. ФеяС

    у меня не работает на релизе 342…

    Reply
  42. nesl

    (42) ФеяС, Простите, не изменила в анонсе — не написала, что обновление действует только с 343 конфы — 342-я была никакая, не имело смысла. Пишите, помогу обязательно! Своих друзей без помощи не оставляю!

    Reply
  43. ФеяС

    (43) Мне надо еще раз скачать файл? Или вы можете мне новый прислать от 27.02.2014?

    Reply
  44. nesl

    (44) ФеяС, если Вы не скачивали после 27.02.14, то нужно скачать. Не знаю, как переслать.

    Reply
  45. ФеяС

    Не работает почему-то с релизом 346

    Reply
  46. nesl

    (46) ФеяС, внесла изменения и выложила сегодня 26.04.2014 для 346 конфы

    Reply
  47. ФеяС

    (47) спасибо

    Reply
  48. IZaylenkova

    Спасибо, все хорошо работает, самые необходимые отчеты..

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *