Расчетная ведомость с ЕСН, ПФР и ФСС НС для ЗУП (обновлено 03.03.2009)




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

34 Comments

  1. kennypooh

    Не работает под 2.5…

    Ошибка загрузки документа.

    по причине:

    Ошибка преобразования данных XDTO:

    НачалоСвойства: {http://v8.1c.ru/8.1/data-composition-system/schema}availableAsField Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType

    Reply
  2. Armando

    хм… платформа 8.1.8.76, конфа 2.5.3.21 работает нормально.

    Reply
  3. Леший1975

    Отличный отчет! Подскажите, можно ли добавить еще колонку «Отработано дней» перед начислениями? И еще пожелание — можно ли итоги отображать после видов расчета?

    Reply
  4. artbear

    что обновлено-то? Где описание?

    Reply
  5. Armando

    Взят из ЗУП 2.5.10.11. Предыдущая версия была из 2.5.3.21. Освежил, так сказать.

    Reply
  6. isn

    Работает отчет не совсем корректно и с ошибками.

    Reply
  7. isn

    сорри ошибся окном — замечание не к этому отчету

    Reply
  8. gutentag

    Без колонки «ФСС НС и ПЗ» для реального бухгалтера проку мало 🙁

    Reply
  9. Armando

    Я в курсе. Заказ на доработку уже поступил, скоро сделаю.

    Reply
  10. oberon356

    Спасибо! Вещь нужная

    Reply
  11. sunrise777

    Если несколько сотрудников — совместителей в разных подразделениях порождены одним физлицом — полная жопа. Группировать надо по сотрудникам, а не по физлицам! И вобще этот ЗУП полное Г… — по сравнению с ЗиК. Вообще сырой продукт. Не лучше УПП по качеству исполнения. Ну вобщем это видимо марка качества 1С

    Reply
  12. Spiteful

    как он считает эти взносы? если у меня сотрудник по расчету имеет начисления необлагаемые ЕСН, ЗУП выдает все нормально — без начисление ПФ и ЕСН, а эта обработка начисляет. Странно.

    Reply
  13. Armando

    (11) К сожалению, в данном случае группировать по сотрудникам не получится. Для этого придется менять структуру регистров и переделывать отчет.

    (12) Действительно, странно. Данные беруться из регистра накопления «ЕСН Исчисленный» . Можно посмотреть через меню «Операции».

    Reply
  14. Armando

    Обновлено:

    Добавлена колонка с данными по ФСС НС.

    Reply
  15. gutentag

    (14) Ура ! ! !

    Reply
  16. Leoway

    Спасибо

    Reply
  17. gutentag

    (14) Замечание по отчету: отчет не выделяет/разделяет НДФЛ по видам ставок и/или видам начислений(которые были проведены в ЗУП-8.1) в соответствии со статьей 224 (23-глава Налогового Кодекса)

    —-

    ЗЫ. Собственно говоря, на мой взгляд это очень существенный недостаток самой конфигурации ЗУП-8.1 — неудобно смотреть(или я это не умею делать)

    Reply
  18. Armando

    Обновлено:

    Добавлен отчет, в котором НДФЛ выведен в отдельную группу, и разделяется в разрезе ставок налогообложения.

    Reply
  19. gutentag

    (18) Спасибо! Очень полезная вещь получилась!

    Reply
  20. rasswet

    Спасибо, особенно с отдельной группой!

    Reply
  21. gutentag

    Замечание по отчету: если формировать ведомость за календарный год и сформировать за тот же период отчет «Отражение зарплаты в регламентированном учете», то данные по начислениям в фонды (69-** счета) будут отличаться. У меня +-0,05 рубля по разным фондам.



    ИМХО алгоритмы округления не корректные или данные для разных отчетов из разных мест берутся. Что не есть хорошо.

    Reply
  22. fedor40

    У меня вообще пустой файл сохраняется. Без расширения.

    Reply
  23. gutentag

    (18) Выявил баг или я что-то не так делаю: Отчет не включает начисления по дивидендам по акциям начисленные и выплаченные не работающим в организации физ.лицам(имхо и любые другие начисления и выплаты не работающим в организации физ.лицам 1С в своих отчетах не видит)

    Reply
  24. John_Bel

    Спасибо!

    Reply
  25. soglvn

    Хороший отчет, но в отчете со ставками НДФЛ почему-то не заполняется графа «Всего удержано», хотя в первом отчете все заполняется. Исправьте, пожалуйста

    Reply
  26. Svetoten

    Большое спасибо! очень своевременно мне попался ваш отчет! И очень помог 🙂

    Reply
  27. Aleksey_stud

    а можно добавить разбитее больничного еще?

    Reply
  28. Sedow

    Налоги с ФОТ по непонятным причинам показывет в 2 раза больше чем фактически начислено! Почему?

    Reply
  29. oberon355

    Налоги с фот считаются отражаются некоректно, если есть ЕНВД. В программе считается ПФР итого столько то и в том числе ПФР ЕНВД. При формировании отчета складывается ПФР итого и ПФР ЕНВД. Если ЕНВД 100% то происходит задвоение ПФР. Ну и как следствие сумма налогов с фот увеличивается. Во внутреннем запросе по налогам с фот, имеет смысл ПФР страх. ЕНВД и ПФР нак. ЕНВД вывести в отдельные колонки

    Reply
  30. AnnaVishnevskaya

    Большое спасибо за обработку — очень полезная вещь!

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

    Reply
  31. Limbo23

    Спасибо. Выручили.

    Reply
  32. itit

    отличная обработка, даже незнаю что бы и делал если бы не сайт

    Reply
  33. igo-osetro

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

    Reply
  34. m_aster

    В 8.2 не работает((

    Reply

Leave a Comment

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