Отчёт "Свод по заработной плате" за любой период с гибкими настройками




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

59 Comments

  1. CrazyMihey

    Спасибо. Надеюсь, Нашим Бухгалтерам тоже понравится.

    Reply
  2. RadaNata

    Спасибо за заботу о бедных и не очень бедных бухгалтерах 🙂

    Reply
  3. AS108

    И Вам спасибо на добром слове 🙂

    Reply
  4. AS108

    Мда-а…

    Остальные скачавшие не заценили никак что ли?

    Тогда какой смысл выкладывать, если нет обратной связи?

    Reply
  5. Antia

    (4) 3/31=10% — прекрасный показатель. Бывает и меньше 1%.

    Reply
  6. chlp

    Спасибо!! Очень удобен в работе.

    Reply
  7. Laraj

    Спасибо, очень наглядный отчет. А мои бухгалтера используют мой свод за любой период, повторяющий типовой. Думаю, Ваш им понравится.

    Reply
  8. Lidel-l

    Спасибо. а то у нас типовой переделанный на любой выбор периода.

    Reply
  9. withoutface

    Если не сложно — добавь 3-й вариант, в котором для каждого Начисления/Удержания будут выводиться две строки: первая — за месяц, вторая — нарастающим итогом. Желательно, чтобы этот вариант устанавливался по-умолчанию, т.к. остальные будут не нужны 🙂

    Reply
  10. AS108

    (6), (7), (8) Спасибо за комментарии и отзывы!Рада, что отчёт понравился.

    (9) Ваши пожелания обязательно учту, что можно переделать — посмотрю после отпуска, сейчас других дел полно. Пока пользуйтесь такой формой.

    Успехов всем!

    Reply
  11. Hla

    Спасибо. Очень нужный отчет.

    Reply
  12. Natusik

    Удобно и наглядно, а самое главное — действительно «гибкие настройки», спасибо! 🙂

    Reply
  13. Victorlk

    мне отчет понравился, думаю бухгалтерам тоже понравится

    Reply
  14. AS108

    (11) (12) (13) Очень приятно получать такие отзывы, спасибо, что даёте обратную связь, значит, работаем не зря :))) Успехов!

    Reply
  15. pr_skm

    Очень кстати. Как раз вчера главбуху такой отчет понадобился, а тут уже велосипед изобретен. 🙂

    Reply
  16. alblclk

    Спасибо !!!!!!!!

    Reply
  17. klimat_oksana

    спасибо большое!!! будем с удовольствием пользоваться!!

    Reply
  18. kysvetlana

    Спасибо огромнейшее!!!!!!

    Reply
  19. wd2000

    спс

    Reply
  20. AS108

    (15), (16), (17), (18), (19) — очень рада, что отчет понравился,

    большое спасибо за Ваши отзывы, желаю всем успешной и плодотворной работы, а также хорошего отдыха на выходные!

    Reply
  21. pearls3

    А у меня ни фига не работает ВОООТ

    Reply
  22. AS108

    (21) Странно, вроде никто не жаловался из скачавших. Какой релиз 1С ЗиК?

    Описание внимательно прочитали? На кнопку «Сформировать» надо кликнуть после того, как всё выбрали, на третьей вкладке, не на первой, попробуйте ещё.

    И сообщите, пожалуйста, результат. Успехов!

    Reply
  23. pearls3

    Все поняла на третьей закладке надо поставить точку на «помесячно» а не нарастающим итогом. Все поняла, оценила на 5+

    Reply
  24. AS108

    Спасибо за оценку! Удачи и хороших выходных!

    Reply
  25. СветикК

    а можно выслать на мыло? пожалуйста вышлите….

    komsu9@mail.ru

    хотелось бы посмотреть

    заранее благодарю

    Reply
  26. AS108

    (25) Отправила на ваш эл.адрес, ловите.

    Reply
  27. СветикК

    as108, спасибо вам

    Reply
  28. lenamoy

    Спасибо

    Reply
  29. gala2009

    Отчет заработал как то «с пинка». Выбрала С нарастающим итогом, стоят галочки с января по октябрь, но выдал только октябрь, делаю по сентябрь — та же история, только сентябрь. Ткнула на «помесячно», пошел протокол, видно что формируется, выдал. После этого заработал и С нарастающим итогом.

    Reply
  30. Julyas

    Не пойму как настроить чтоб получить свод с января по сентябрь по бюджету :cry:. Общий свод выводит и все тут.

    Reply
  31. AS108

    (30) На кнопку сформировать жмите, когда перейдете на третью вкладку, где надо выбрать нарастающим или помесячно. Если на кнопку «сформировать» вы нажимаете, когда возвращаетесь на первую вкладку, то Свод по умолчанию выводится Общий. Попробуйте еще раз. Успехов!

    Reply
  32. AS108

    (29) Конфигурация измененная или Типовая? Не могу воспроизвести Вашу ситуацию, у меня все работает нормально. Если в конце концов все заработало, то и слава Богу. Спасибо за оценку. Успехов Вам!

    Reply
  33. Svetlana_E

    Второй день пытаюсь скачать — никак! 😥

    Не могли бы вы сбросить на e-mail? sinilga@sibmail.ru

    Reply
  34. AS108

    (33)Не поняла, какие у Вас проблемы при скачивании?

    Я скачала без проблем, отправляю Вам на почту. Успехов!

    Reply
  35. Svetlana_E

    Получила. Большое спасибо. Отличная идея! Но 🙁 . Отбор по ИФ не работает…. Все время формирует общие суммы — и бюджет, и внебюджет вместе.

    Reply
  36. AS108

    (35)У нас такой задачи не стояло, поэтому про вторую вкладку я и не упоминала в Описании, нам нужно было сделать сверку по месяцам в общем.

    Пока «не приспичит» — ничего не делаю, времени мало. Успехов Вам!

    Reply
  37. Svetlana_E

    Просто слова «Понадобился такой отчёт для сверки с данными бух.учёта при внедрении ЗиК в бюджетном предприятии, где количество видов расчетов свыше 40, причём по разным Источникам Финансирования» вселили надежду, что реализовано именно «по разным ИФ» 🙁

    Reply
  38. NCH

    Спасибо, полезный отчет!

    Reply
  39. KrakoZyabl

    Отличный отчет! Плюс автору. Сравнивая свод ЗП за разные периоды всегда формируешь несколько сводов за соответствующие периода и потом мучаясь переключаешься между окнами, а тут всё как на ладони — смотри, анализируй, как говориться «всё в одном флаконе», Спасибо.

    Reply
  40. AS108

    (39) Спасибо за Ваш отзыв! А я не далее как на прошлой неделе скачала Ваш отчет по страховым взносам, моим бухгалтерам понравился, за что Вам от них и от меня — большое спасибо! С праздником и успехов Вам!

    Reply
  41. AS108

    (37) Теперь отбирает и по Источникам финансирования, выложила отдельным файлом здесь: http://infostart.ru/public/66188/

    Reply
  42. Alav

    Нужный отчет. Только почему доступ только для пользователей?

    Reply
  43. AS108

    (42) Исправила — теперь в свободном доступе для всех.

    Reply
  44. Alav
    Свод по Зарплате (100.5 kb)

    Доступ: Пользователи

    Скачиваний: 508

    Все файлы (1)

    Собственно а что исправлено?

    Reply
  45. AS108

    (44) Похоже, что ничего 🙂 Сейчас проверю еще раз.

    Reply
  46. AS108

    (44) Проверила, поправила — доступ для всех. Хотя не понимаю, какое это имеет значение для вас? Вы сами-то скачали?

    Reply
  47. Alav

    (46) Теперь скачал 🙂

    Reply
  48. qqwest

    А я нет. Опять доступ — Пользователи, не для всех.

    Reply
  49. AS108

    (48)Забыла написать, что это была праздничная акция к 23 февраля 😀

    Reply
  50. Nata

    Спасибо!!! Нужный отчет!!!

    Reply
  51. gutentag

    Спасибо за отчет!

    …есть пожелание к отчету — просьба добавить вывод по-месячно начисленние страховых взносов с ФОТ

    Reply
  52. Mirared

    Спасибо! Отличный отчет! 😀

    Reply
  53. madamonika

    На мой взгляд отчет не плохой, но я пока пользуюсь стандартным отчетном на платформе 1с. А так впринципе можно было вывести по месяцам начисление. Согласна с gutentag

    Reply
  54. ric-77

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

    Reply
  55. Victorlk

    Спасибо. Отчет пригодился при переходе с версии 7.7.,для поиска ошибок при переходе.

    Reply
  56. Michael_K

    Спасибо, для моих бюджетников просто «то, что доктор прописал!»

    Reply
  57. mcher

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

    Reply
  58. нинас

    А для 8 версии нет подобного отчета?

    Reply
  59. ildarik90

    В базе 1с: БП 2.0 есть на подобие сводного — Расчетная ведомость по организации. Так же хорошо выдает нужные данные.

    Reply

Leave a Comment

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