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




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

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

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

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

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 не будет опубликован. Обязательные поля помечены *