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




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

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