Анализ начисленных налогов и взносов по подразделениям




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

60 Comments

  1. petrov_al

    Круто…однако…автор предлагает настройку отчета. Поспешу поставить плюс. Автор, такое ноу-хау нужно продавать.

    Reply ↓
  2. gorneev1

    Спасибо

    Reply ↓
  3. berta

    Отчет очень удобен показала расчетчику сказала классно, такой можно продавать согласна с 1

    Reply ↓
  4. gorneev1

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

    Reply ↓
  5. Pavel777777

    Лучше этих отчетов работает?

    http://infostart.ru/public/81524/

    http://infostart.ru/public/81764/

    Reply ↓
  6. nkp14108

    Если добавляется физ лицо, то разбивка по подразделениям будет не корректна. Например если сотрудник находится на внутреннем совместительстве в другом подразделении, а вся сумма попадет в подразделение где он работает по основному месту, что неправильно. Где-то раньше видел хороший отчет с разбивкой по подразделениям пропорционально доходам в каждом, лучше варианта нет.

    Reply ↓
  7. GalinaK

    (6) nkp14108, прикол в ЗУП в том, что если один сотрудник работал в течение месяца в двух подразделениях, то в своде и др Отчетах — вся сумма падает на последнее подр, а в «Отражении в регламентированном учете» красиво делится на разные подразделения. Это в типовых отчетах… И в бухгалтерию разносят — кто как — или из «Отражения в регламентированном учете» готовыми проводками или выгрузкой… или согласно «Сводов», «РасчВед» и проч. но уже ручками…

    Reply ↓
  8. NPMar

    (7) GalinaK, То же и в Зарплата и Кадры 7.7. Там в своде все начисления попадают по основному месту работы. Так что если это совместитель в другом подразделении, то его зарплата попадает в подразделение по основному месту работы. Конечно, это не очень здорово.

    Reply ↓
  9. NPMar

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

    Интересно, будет ли она работать на УПП ?

    Reply ↓
  10. NPMar

    Попробовала обработку в УПП после перекачки из ЗИК 7.7. Очень понравилась! Я еще совсем новичок в восьмерке, но сразу поняла, как настраивать отчет. Просто супер! Спасибо!

    Reply ↓
  11. alfaret

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

    Reply ↓
  12. Gen-buk

    Спасибо. А такое же только взять не РР Основные и Дополнительные , а РР БУОсновные и БУДополнительные и вытащить еще и проводки ??

    Reply ↓
  13. chmv

    Вопрос. А почему нельзя сделать группировку без физ.лица — организации,подразделения?

    Reply ↓
  14. RakovskiyK

    так, это получается отдельный отчет (внешний) или ?

    Reply ↓
  15. RakovskiyK

    скачал, пытаюсь запустить:

    Ошибка получения информации набора данных

    по причине:

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

    по причине:

    {(316, 19)}: Неверные параметры «Перечисление.ВидыРаботСДосрочнойПенсией.ПустаяСсылка»

    ИНАЧЕ ЗНАЧЕНИЕ(<<?>>Перечисление.ВидыРаботСДосрочнойПенсией.ПустаяСсылка)

    Reply ↓
  16. gorneev1

    (14) RakovskiyK, (15) RakovskiyK,

    Этот отчет внешний, служит для релиза ЗУП старше 2.5.59.2, поэтому выходит ошибка, обновите релиз на последний.

    Reply ↓
  17. aleksey.kubovtsov

    спасибо за публикацию

    Reply ↓
  18. evn-zorin

    Странно, но по 2-ум подразедлениям отчёт не разбивает, сотрудник в одном месяце работает сначала в одном, потом во втором, потом опять в первом подразделении и разбивку отчёт не выдаёт(((

    Reply ↓
  19. evn-zorin

    Отчёт похоже нерабочий, кому-нибудь удалось из него получить что-нибудь?

    Reply ↓
  20. svetlana-a-s

    данные по подразделениям собираются из шапки документа или из табличной части?

    Reply ↓
  21. gorneev1

    (20) svetlana-a-s, отчет работает стандартными методами, где есть подразделения, оттуда и берет данные

    Reply ↓
  22. chmv

    не рабочий

    Reply ↓
  23. gorneev1

    (22) chmv, Рабочий, у клиентов моих стоят, никто не жалуется, в чем не рабочий, опишите пожалуйста

    Reply ↓
  24. gudok170388

    Если есть два договора ГПХ с разными подразделениями на одного сотрудника, то оба договора выводит в одно подразделение.

    Reply ↓
  25. lett

    Работает в УПП 1.3.48.2. Спасибо.

    Reply ↓
  26. ultrannge89

    Класс

    Reply ↓
  27. machnef

    Спасибо, за актуальный отчет! В стандартном отчете есть баг: на закладке «полный анализ», если добавить вид расчета НДФЛ, то он двоится, это беда идёт еще с релиза 75, 1Сники обещали поправить, но так до конца не победили эту проблему! Если Вам удастся устранить ошибку, буду рад еще раз скачать отчет)). Еще раз Спасибо!

    Reply ↓
  28. gorneev1

    (28) SanyaIks, Спасибо, в ближайшее время посмотрю

    Reply ↓
  29. slauter77

    Обнаружил ошибку! Если отобрать по подразделению — перестает работать расшифровка по классу условий труда в поле Облагаемая база (Выводится пустой отчет)

    Если не отбирать то срабатыает нормально.

    Поправьте пожалуйста, если можно!

    Reply ↓
  30. gorneev1

    (30) slauter77, Пока для нового релиза не переделал, в ближайшее время выложу

    Reply ↓
  31. slauter77

    «Ближайшее время» еще не наступило? 😉

    Reply ↓
  32. slauter77

    Так и не работает! 🙁 Ни для «старого» релиза, ни для «нового»…

    Reply ↓
  33. svetlana-a-s

    Спасибо, за обработку мне помогла в свое время очень, немного для своих настроила и все ОК!

    Reply ↓
  34. u_n_k_n_o_w_n

    Скачал все работает. Автору огромная благодарность!

    Reply ↓
  35. constspb

    задваивает НДФЛ (ЗУП 2.5.80/2.5.81/2.5.82)

    Reply ↓
  36. gorneev1

    (36) constspb, Проверю, спасибо

    Reply ↓
  37. Lena_Rich

    Хороший отчет. Спасибо.

    Reply ↓
  38. igozakh

    Продолжать поддержку будете?

    Reply ↓
  39. gorneev1

    (39) igozakh,

    Обязательно, завтра выложу для последнего релиза

    Reply ↓
  40. igozakh

    спасибо! ждемс.

    Reply ↓
  41. Prelude

    ЗУП 2.5.88.1

    {ВнешнийОтчет.АнализНалоговПоПодразделениям.МодульОбъекта(6882)}: Ошибка при вызове метода контекста (Выполнить)

    ВыборкаПревышенияБазаПФР = Запрос.Выполнить().Выбрать();

    по причине:

    {(562, 43)}: Поле не найдено «ПредельнаяВеличинаБазыСтраховыхВзносов.Размер»

    ПредельнаяВеличинаБазыСтраховыхВзносов.<<?>>Размер КАК Размер,

    Reply ↓
  42. gorneev1

    (42) Prelude,

    Для ЗУП 2.5.88.1 скачайте файл «Анализ налогов и взносов по подразделениям начиная с релиза 2.5.88.1»

    Reply ↓
  43. tonyS

    А для ЗБУ (Зарплата и кадры бюджетного учреждения) релиз 1.0.79 есть такой же отчет?

    Reply ↓
  44. gorneev1

    (44) tonyS,

    Не делал, попробуйте этот, если не подойдет, попробую сделать

    Reply ↓
  45. tonyS

    (45)

    всё заработало на конфигурации ЗБУ, спасибо за отчет!

    Reply ↓
  46. ABVera

    Скачала на ЗУП 2.5.98.2, поставила, пользуемся. 🙂

    Большое спасибо!

    Конкретно нам отчет нужен для отбора вычетов налогов по ЕНВД по отдельным подразделениям, относящимся к разным налоговым инспекциям.

    Reply ↓
  47. wermah

    В версии 2.5.99.2 Нормально работает?

    а то я добавил в настройке группировка строк подразделение, а отчет не разбивается по подразделениям

    Reply ↓
  48. lotan

    (48) wermah, такая же ситуацию. Отчет, можно сказать, не рабочий.

    Reply ↓
  49. Nathaly

    В версии 2.5.101.2 Отчет работает прекрасно. Большое спасибо автору за сэкономленное время!

    Reply ↓
  50. mei2015

    Скачала отчет. В версии 2.5.101.2 при формировании отчета по НДФЛ после добавления группировки «Подразделение организации» не заполняются суммы в колонке «Сумма доходов, зарегистрированная в учете по НДФЛ». При этом на группировку «Организация» или «Физическое лицо» эта сумма ставится.

    Reply ↓
  51. Nathaly

    Ранее писала выше: «В версии 2.5.101.2 Отчет работает прекрасно. Большое спасибо автору за сэкономленное время!». Прошу прощения — поспешила )) Обнаружили, что в ПФР не заполняется колонка «Начислено взносов на ОПС с 2014 года». Но решается не сложно. В Основной Схеме Компоновки Данных в запросе находим временную таблицу: «ВТСтраховыеВзносыИсчисленные», далее находим строку «СтраховыеВзносыИсчисленные.ПФРПоСуммарномуТарифу,» и меняем ее на строку » СтраховыеВзносыИсчисленные.ПФРПоСуммарномуТарифу + СтраховыеВзносыИсчисленные.ПФРДоПредельнойВеличины + СтраховыеВзносыИсчисленные.ПФРСПревышения КАК ПФРПоСуммарномуТарифу,». После этого значения в колонку выводятся.

    Reply ↓
  52. wermah

    (52) Nathaly, Спасибо у себя тоже поправил, отчет работает на релизе 2.5.106.1

    Reply ↓
  53. gorneev1

    (52) Nathaly, Разместил обновленный вариант с релиза 2.5.108.1, все колонки заполняются, в типовом варианте на старых релизах данная колонка не заполнялась

    Reply ↓
  54. gorneev1

    (53) wermah, Разместил обновленный вариант с релиза 2.5.108.1, все колонки заполняются, в типовом варианте на старых релизах данная колонка не заполнялась

    Reply ↓
  55. chpetr

    в упп не работает или если работает то какая ?

    Reply ↓
  56. chpetr

    Анализ налогов и взносов по подразделениям

    .erf он не подошел для упп

    Reply ↓
  57. gorneev1

    (57) chpetr, Добрый день, для последних релизов доступен 2.5.108.1 (Анализ налогов и взносов по подразделениям начиная с релиза 2.5.108.1.erf). Также по просьбам добавил доработанный отчет по УПП с релиза 1.3.81.2 (Анализ налогов и взносов по подразделениям начиная с релиза 1.3.81.2 для УПП.erf), настройки такие же как и в ЗУП.

    Reply ↓
  58. Veetavas

    Возникла необходимость в отборе по подразделениям по НФДЛ — допилил типовой. Возникла ошибка. Скачал вышевыложенный (последний на тек.дату) — та же ошибка.

    Может я чего не понимаю, но (вот она, ошибка) при добавлении группировки или отбора по подразделению, поле «Сумма доходов, зарегистрированная в учете по НДФЛ» не отображается в разрезе сотрудников (точнее, физ.лиц.). Если группровку убрать — все отображается корректно.

    В чем подвох СКД?

    Reply ↓
  59. gala2009

    скачала, проверила на КА 1.3.78. работает нормально, если сотрудник переходил из подразделения в подразделение, то взносы (и физлицо) попадают в разные подразделения (до даты перевода в одно, после даты перевода в другое).

    но если сделать отбор по физлицу, чтобы посмотреть все его подразделения помесячно — то подразделения не выводятся!

    еще интересно, если с 2017 года изменится расчет взносов будет ли работать отчет?

    Reply ↓
  60. Designer1C

    Спасибо за востребованную разработку !

    У нас в организации используется УПП 1.3.92.1

    Сегодня бухгалтер по расчёту заработной платы попросила помочь с формированием «Анализа …» по подразделениям

    Сегодня я скачал этот отчёт . Сегодня установил в «Дополнительные отчёты». И сегодня же бухгалтер сформировала все «Анализы …» в разрезах с «Подразделение организации»

    Бухгалтер довольна результатом.

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

    Благодарю !!!

    Reply ↓

Leave a Comment

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