Расчетная ведомость организации + Страховые взносы




Принцип обмена данными из 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='\

22 Comments

  1. dar_t

    Здравствуйте. Я не программист… запускаю вашу обработку, но в открывающейся таблице у меня нет данных о страховых взносах, ФСС, ФСС от НС, ТФОМС, ФОМС, ПФ накоп и ПФ страх…. У меня БП 1.6.24.7, производственный календарь заполнила… Может подскажите как сделать так, чтобы отчет был таким, как на прикрепленном изображении. Извините, если глупости спрашиваю 😥

    Reply
  2. CaesarKR

    Здраствуйте. Для того, что бы увидеть информацию по страховым взносам нажмите кнопку «Взносы» (вверхней части).

    Reply
  3. isxakova

    Добрый день, скачала ваш отчет но он у меня не формируется, пишет «Не заполнен регламентированный производственный календарь» не подскажете где его заполнить , за ранее спасибо.

    Reply
  4. CaesarKR

    читайте описание:

    «Примечание.

    1. Для работы необходимо заполнить производственный календарь (в полном интерфейсе Предприятие -> Производственный календарь)

    «

    Reply
  5. sparta178

    а в УПП не работает(((((

    Reply
  6. CaesarKR

    ничего, что в списке конфигураций указана только «1С:Бухгалтерия 8»? где ты увидел(а) УПП?

    Reply
  7. isxakova

    Спасибо большое

    Reply
  8. Миланоман

    спасибо, очень выручил этот отчет!

    Reply
  9. sarrow1

    Реально запускаю в Бухгалтерия предприятия 1.6.24.7. Показывает зарплату, ндфл, но только не взносы. При нажатии на кнопку «Взносы» никакой реакции не происходит, кроме того, что кнопка «Взносы» становится нажатой.

    Reply
  10. CaesarKR

    sarrow1 писать мне в личку глупые вопросы не надо, тем более в таком тоне, в конце концов есть элементарные правила вежливости. Разбираться в чужих проблемах я не собираюсь, своих хватает. Отчет работает. Это проверено не одним моим клиентом и теми кто скачал и оставил отзыв.

    Если все данные кроме взносов есть, то скорее всего не оформлен/не правильно оформлен/не проведен документ «Начисление страховых взносов». Вообщем «Учи матчасть».

    Reply
  11. sarrow1

    Мой косяк — отчет проверялся на нетбуке и неполностью развернулся отчет с таким количеством колонок. Все работает.

    Reply
  12. CaesarKR

    (11) sarrow1 бывает. я еще подумал об этом, но решил промолчать

    Reply
  13. lenaivanova

    каким образом данную обработку надо вводить в 1С?

    Reply
  14. kudryavaya2001@mail.ru

    Добрый день!

    Отчет хороший, но есть предложение. Если есть желание и возможность, то Вы можете его усовершенствовать.

    Я еще пока полный «чайник» в программировании в 1С 8. Поэтому с какой стороны подойти к отчету, не знаю.

    Ситуация такая: в орг-ции удерживают алименты или что-то еще. Можно ли их показать в отчете, но не как начисления с «-«, а как удержания. Предлагаю создать типовую операцию, которая формирует и бух.проводки и запись в регистре накопления.

    И показать удержание как положено в отчете.

    Как сделать самой, не представляю…

    Извините, если написала глупости. Спасибо за внимание.

    Reply
  15. ulyankinp

    Хорошо бы такой отчетик для Комплексной 7.7, а то ищу полдня, нигде не могу найти!

    А надо срочно! Не подскажете, где найти?

    Reply
  16. art_zvuk

    Хорошая обработка, автору спасибо. Пользуюсь ей периодически, иногда меняю под необходимые нужды.

    Reply
  17. orsprog

    Хорошая обработка, автору спасибо.

    Reply
  18. grey257

    спасибо очень помог отчет

    Reply
  19. vechiy

    Не попадают в отчет данные по страховой части взносов(

    Reply
  20. vechiy

    может, есть уже отчётец для пфр на опс?

    Reply
  21. vechiy

    доделал) пардон за беспокойство

    Reply
  22. user913717

    здравствуйте! У меня немножко нестандартный случай… и нужна помощь))) Пишу отчет по производственной практике и столкнулась с проблемами, так как бухгалтеру некогда мне отвечать на вопросы. так вот меня интересует что такое Расчетная ведомость по начислению страховых взносов и как она выглядит? Дело в том что я даже не знаю есть ли у меня среди стопки с документами эта ведомость или нужно снова пристать к бухгалтеру чтобы мне дали ее. Буду очень признательна за ответ!!!

    Reply

Leave a Comment

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