Регламентированные отчеты "Статистика — П4" и "Статистика — П4-НЗ" для ЗУП 2.5




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

97 Comments

  1. 789n

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

    программы : Зарплата и Управление Персоналом, редакция 2.5 (2.5.110.1)

    Reply
  2. Каштанка

    (1) А у вас какой релиз платформы?

    Reply
  3. Каштанка

    Скорее всего у вас платформа 8.2. Этот отчет был сделан на 8.3.

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

    С верхней версии на нижнюю, полагаю, можно сделать аналогично.

    Но честно, не пробовала.

    Reply
  4. gpinf

    а можете обновить форму, решили проверить за январь 2017 не дает вот что пишет:

    Используйте форму в редакции:

    Приказ Росстата от 02.08.2016 N 379.

    Reply
  5. Каштанка

    Ок, спасибо, что предупредили. Посмотрю новую форму.

    Reply
  6. Каштанка

    Обновлены версии отчетов для формата 2017 года.

    Reply
  7. gpinf

    Спасибо.

    Reply
  8. alexskiff

    отчет не показывает данные по работникам договорникам?

    Reply
  9. Каштанка

    (8) Вы про форму П4 ? Нет, не показывает.

    Я подумаю над этим.

    Reply
  10. alexskiff

    (9)да про П4

    стоит ли ждать реализации? или самим выкручиваться?

    Reply
  11. Каштанка

    (10) Ну если время не поджимает, подождите немного. )

    Reply
  12. fktrc171

    Подскажите , какой формат для выгрузки П-4 за январь 2017года должен быть ?

    1с ругается при выгрузке П-4 , сформированного за январь 2017 года по Приказу Росстата от 02.08.2016 N 379

    Выдается ошибка Формат от 28-12-2016 для периода больше не применяется

    Reply
  13. Каштанка

    (12) Только сегодня вышел релиз 1с с новым форматом выгрузки П4 для бухгалтерии.

    Буду дорабатывать свою, подождите немного.

    Reply
  14. Каштанка

    Доработана выгрузка Формы П4 для нового формата 2017 года.

    Reply
  15. Каштанка

    (10) В заполнение формы П4 добавлены данные по договорникам.

    Reply
  16. smilser

    При наличии обособленных подразделений отчетность формируется в целом по организации. Было бы здорово чтобы отчет мог формироваться и по обособленным подразделениям.

    Reply
  17. Каштанка

    (16) Я подумаю над этим.

    Reply
  18. zexpress

    А почему в версии 114.1 при попытке сформировать за январь ругается на форму ?

    Reply
  19. Каштанка

    (18) Что пишет?

    Reply
  20. zexpress

    (19)Он пишет что эта форма №580 а не 379 как должна быть- Используйте версию от 02,08,16

    Reply
  21. zexpress

    (19) вот скрин

    Reply
  22. Каштанка

    (21) У вас какая-то старая версия моего отчета. Вы когда его скачивали?

    Reply
  23. zexpress

    (22) вот только что http://download.infostart.ru/7296856/Yg55Sfm5YSo57uZ8/

    Для загрузки файла перейдите по ссылке:

    http://download.infostart.ru/7296855/L6q1gSM0g2Ib2Vtb/

    Ссылка работает в течение 24 часов, но не позже даты окончания абонемента.

    Reply
  24. Каштанка

    (23) Странно.

    Скачала по Вашей ссылке, запустила на своей базе 114.1, за январь, все нормально.

    Reply
  25. Каштанка

    (24) Сейчас отправлю

    Reply
  26. zexpress

    Старая версия работала по обособкам — новая не хочет , выбираешь подразделение а она все равно целиком выводит…

    Reply
  27. gadel84

    Добрый день! Отчетность по всем видам начислений? (зарплата, премии и т.п.)

    Reply
  28. Каштанка

    (28) Да, по всем

    Reply
  29. gadel84

    Извините, за назойливость, но уточняющий вопрос (первый раз не совсем корректно сформировал вопрос): отчет учитывает начисления всех документов, на нашем предприятии премия учитывается в документе «Премии сотрудникам организации», зарплата, соответственно, в доке «Начисление зарплаты».

    Reply
  30. Bukaska

    На сайте росстата куча форм и отчетов! Чего тупить?

    Reply
  31. Каштанка

    (30) Нет, только начисление зарплаты.

    Reply
  32. gadel84

    (31) С автоматическом заполнением из ЗУП 2.5?

    Reply
  33. Каштанка

    (30) Я переделаю заполнение.

    Reply
  34. Каштанка

    Доработано заполнение отчета Форма П4.

    Теперь при заполнении учитываются обособленные подразделения.

    Также изменен алгоритм заполнения данных по зарплате, данные берутся из регистров.

    Reply
  35. dr_dom

    Вопрос по ЗУП 2.5

    Подскажите:

    В колонку 7, которая составляется из 8,9,10 попали только суммы из документа «Начисление зарплаты сотрудникам организации». А разве туда не должны попадать: премии, блисты, переработки, и т.д.?

    Reply
  36. Каштанка

    (36) Больничные в эту форму вообще не должны попадать.

    А что касается остального, то раньше в отчет попадали данные из документов Начисление зарплаты, но в последней версии я переделала заполнение. Теперь попадает из регистров расчета.

    Reply
  37. dr_dom

    — В ВТСписокСотрудниковИДат не увидел внутренних совместителей

    — В ВТНачислениеЗарплаты в поле МесяцНачисления выводятся даты где начало месяца, где конец месяца…

    В итоге в последнем запросе при связи таблиц часть данных теряем.

    Reply
  38. Каштанка

    (38) А как должны считаться внутренние совместители?

    Как еще один человек? Это же все равно один и тот же человек.

    Reply
  39. Каштанка

    В п. 80 Приказа Росстата 435 по заполнению формы П-4 говорится:

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

    Reply
  40. Каштанка

    (38) По второму вопросу ща гляну

    Reply
  41. Каштанка

    (38) Поправила запрос. Спасибо за замечание.

    Reply
  42. dr_dom

    (39)

    А как должны считаться внутренние совместители?

    Как еще один человек? Это же все равно один и тот же человек.

    Так и есть — человек один и тот же. Но люди у нас ведутся справочником ФизЛица, а Сотрудники — они вроде как и не люди вовсе)). И получается что ФизЛицо одно, а сотрудника два, один по основному договору, другой по вн.совместительству.

    (40)

    В п. 80 Приказа Росстата 435 по заполнению формы П-4 говорится:

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

    Все правильно сказано! Вот и выходит, что для списочной численности нам нужны уникальные ФизЛица, а для подсчета дохода — Сотрудники (Имеем условие: Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы). ВнутреннееСовместительство потеряли)

    Reply
  43. Каштанка

    (43) Резонно.

    Поправила.

    Большое спасибо за замечания!

    Reply
  44. dr_dom

    Все мои предыдущие комментарии касались 7,8,9 колонки. Теперь данные верны в них)) Спасибо.

    Пойдем дальше?

    1,2 колонки — было правильно, теперь завышено (на количество внутренних совместителей).

    Возможно в предыдущих комментариях я Вас ввел заблуждение, когда упомянул таблицу ВТСписокСотрудниковИДат…

    Нам нужны были внутренние совместители для учета их зп в 7,8 кол., но для подсчета численности работников нам нужны уникальные ФизЛица. Следовательно если работник задействован по основному договору и по внутреннему совместительству, то его надо посчитать 1 раз.

    Reply
  45. dr_dom

    И самое интересное с подсчетом отработанных часов (5,6 колонка).

    Исходя из цифр указанных в отчете, все работники работали полный месяц — пятидневку по 8 часов день, что не верно(.

    У нас на предприятии и пятидневка, и шестидневка, и индивидуальные графики, и почасовая оплата, и не полная ставка, и работа в выходные…

    Reply
  46. Каштанка

    (46) Переделала по замечаниям. Будете проверять?

    А то у меня недостаточно пестрая организация для проверки.

    Reply
  47. dr_dom

    Отлично, на моих данных отчет заполнился верно!

    Есть вопрос с округлением при отбрасывании тысяч в 7,8,9 колонках.

    Насколько я понял, сейчас работает следующий алгоритм: Мы отбрасываем тысячи в суммах зп каждого сотрудника, оставляем один дес.знак округляя по мат.правилам. Потом суммируем эти обработанные значения и получаем итог: «А». В результате накапливается значительная погрешность, т.к. операция округления выполняется столько раз, сколько у нас сотрудников. «А» не сответствует реальным выплатам.

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

    На моих данных «А»-«B»=0,5 (по колонке 7,8).

    Reply
  48. Каштанка

    (48) Ура!

    Округление поправила.

    Большое Вам спасибо за дотошную проверку и советы! 🙂

    Reply
  49. dr_dom

    Спасибо за оперативность. Теперь дадим потестить пользователям))

    Reply
  50. dr_dom

    Ольга, с прошедшим Вас!))

    Пользователи просят учесть их пожелания:

    1. Колонка «Код по ОКВЭД2», а выводится ОКВЭД1

    2. Колонка 3, в формате числа не нужен десятичный 0

    Reply
  51. Каштанка

    (51) Спасибо! 🙂

    Поправила отчет.

    Reply
  52. itpremier

    Скачали обработку 01.03.2017 года. В отчете много недочетов:

    Reply
  53. itpremier

    1. Не учитывается иерархия справочника «Подразделения организаций»

    2. В списке выбора для поля «Обособленное подразделение» выходит весь список подразделений без отбора.

    3. При установленном флажке «Исключить данные обособленных подразделений» — неверно производится отбор по подразделениям.

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

    Reply
  54. Каштанка

    (54) По пунктам

    1. Т.е. у обособленного подразделения есть подчиненные подразделения? Я правильно понимаю? Обособленные или нет?

    2. Согласна, поправлю.

    3. Не согласна, аргументируйте.

    4. Учитываются приемы и увольнения. Перемещения не учитываются. Я подумаю над этим.

    Reply
  55. itpremier

    1. Да, могут быть вложенные подразделения (отделы) без признака обособленного подразделения.

    3. Связано с п.1, при установленном флажке не должны учитываться подразделения, которые подчинены обособленным подразделениям.

    Reply
  56. Каштанка

    (56) Выложила новую версию отчета П4.

    Исправлен отбор по подразделениям с учетом иерархии по пунктам 1,2,3.

    По третьему пункту — без фанатизма, с глубиной вложения не более одного уровня.

    Reply
  57. Каштанка

    Кроме того, заполнение колонок 5 и 6 теперь происходит только при ежеквартальном заполнении.

    Как следует из названий этих колонок.

    Reply
  58. dr_dom

    (58)

    Проверяю 5, 6 колонку, заполняю 2016г

    Март 6211 67

    Июнь 9793 188

    Сентябрь 10116 164

    Декабрь 2374 84

    Разве цифры не должны увеличиваться с каждым периодом, у нас же указывается результат с начала года…?

    Reply
  59. Каштанка

    (59) Блин, где логика в этой статистике ?)))

    Сейчас поправлю.

    Reply
  60. dr_dom

    Как успехи?

    Reply
  61. kyts

    Добрый день! эта обработка подойдет для ЗИК бУ 1.0?

    Reply
  62. Каштанка

    (62) ЗиК БУ — это ЗП для бюджетников ?

    У меня нет такой конфигурации, так что ничего не могу сказать. Проверить не на чем.

    Reply
  63. i.reutov_agrohold.ru

    Добрый день, Ольга.

    Приказом Росстата от 02.08.16 №379 утверждена новая форма П4 и П4 (НЗ).

    Скажите, пожалуйста, когда будут формы обновлены на сайте инфорстарт (сейчас на сайте выложены формы утвержденные приказом Росстата от 24.09.14 №580)?

    Спасибо.

    Reply
  64. i.reutov_agrohold.ru

    продолжение к сообщению №64 — файл во вложении

    Reply
  65. Каштанка

    (64) Добрый день, Иван!

    Вообще-то тут выложены отчеты с новыми формами.

    Reply
  66. i.reutov_agrohold.ru

    (66) Ольга, формы утвержденные Приказом Росстата от 02.08.16 №379?

    Reply
  67. i.reutov_agrohold.ru

    (66) во вложении файл той формы, которая открывается

    Reply
  68. i.reutov_agrohold.ru

    (66) добрый день, Ольга

    пояснение — эта отчетность — она обновлённая, все верно;

    не обновлена версия Форма П4 по КПП

    (файл во вложении)

    Reply
  69. Каштанка

    (69) Ок, посмотрю.

    Reply
  70. i.reutov_agrohold.ru

    (70) добрый день, Ольга

    когда можно будет получить обновленные формы (П4 и П4(НЗ)) по КПП?

    спасибо

    Reply
  71. swk_swetlana

    Добрый день. Подскажите, пожалуйста, 1С-овская форма П-4 автоматически не заполняется?

    Reply
  72. Каштанка

    (71) Я посмотрела. Мне кажется, Вы перепутали мой отчет с чьим-то другим .

    Мой вот так выглядит

    Reply
  73. Каштанка

    (72) Добрый день, Светлана!

    Вы какую 1с-овскую форму П-4 имеете в виду?

    В бухгалтерии?

    Reply
  74. Каштанка

    Или я не поняла ваш вопрос.

    Reply
  75. i.reutov_agrohold.ru

    (73) Ольга.

    я писал о форме «Форма П4 по КПП»

    у Вас просто форма П4.

    можете сказать, кто автор формы П4 по КПП?

    Reply
  76. i.reutov_agrohold.ru

    (73) см файл

    Reply
  77. i.reutov_agrohold.ru

    (73) файл не прикрепляется.

    см сообщение от 12.05.17 14:25

    Reply
  78. i.reutov_agrohold.ru

    (73)

    ps

    Ольга!

    форма П4 по КПП была получена с Вашего сайта.

    на сегодня — форма не обновлена.

    когда мы можем получить обновленную форму? (уже 2-ю неделю не можем ее получить)

    Reply
  79. Каштанка

    (79) Это не моя форма.

    Я не знаю, кто автор.

    Попробуйте найти поиском на сайте.

    Reply
  80. Каштанка

    Скорректировано заполнение формы П4 по замечаниям (dr_dom).

    Колонки 5,6, 11 заполняются теперь не только в квартальном варианте заполнения, но и ежемесячном, но только в случае последнего месяца каждого квартала, т.е. в марте, июне, сентябре и декабре.

    Колонки 7 -10 в квартальном варианте заполняются за период указанного квартала, а не с начала года как раньше.

    Reply
  81. dr_dom

    Так уже можно качать? А то указано что последнее обновление поста было в 9.03.17…

    Reply
  82. Каштанка

    (82) Я выкладывала новую версию, почему-то не сохранилось.(

    Сейчас еще раз выложила, посмотрите.

    Reply
  83. i.reutov_agrohold.ru

    (80) добрый день, Ольга.

    к кому из руководителей можно обратиться по этому вопросу? может они подскажут — кто сможет решить данный вопрос и предоставить форму…

    Reply
  84. Каштанка

    (85) Добрый день, Юлия!

    К сожалению, не знаю. Я такой же обычный посетитель этого сайта, как и Вы.

    Попробуйте поискать по названию.

    Reply
  85. i.reutov_agrohold.ru

    (86) Спасибо, Ольга. )))

    значит будем искать 😉

    Reply
  86. user784528

    Добрый день.

    При выгрузке отчета пишет «Формат версии 02-02-2017 за период составления отчета более не применяется.». Будет доработка или нужно что-то донастроить?

    Reply
  87. Каштанка

    (88) Добрый день!

    Спасибо за сообщение.

    Да, будет доработка. Формат выгрузки изменился.

    Reply
  88. user784528

    Спасибо. Сообщите, когда будет загружена новая версия

    Reply
  89. Каштанка

    (90) Выложила новую версию. Можно Вас попросить проверить выгрузку?

    А то у меня нет возможности.

    Reply
  90. user784528

    (91) да, проверим в начале сентября

    Reply
  91. DmitryKSL

    скажите, РегламентированныйОтчетСтатистикаФормаП4НЗ.erf новая версия формата?

    в первом квартале отправляли был принят, за третий контур выдает ошибку.

    Reply
  92. Каштанка

    (93) Спасибо, сейчас проверю.

    Reply
  93. ixileon

    Здравствуйте! В форме П-4 (НЗ) не заполняются строки 16 и 17 (Численность женщин, находящихся в отпуске по уходу за ребенком).

    Reply
  94. ixileon

    Заметил одну неточность в форме П-4 (НЗ). В строке 13 «Численность работников списочного состава на конец отчетного квартала» у вас учитываются внешние совместители.

    Reply
  95. Каштанка

    (93) Выложила обновленную версию формы П4НЗ с новым форматом выгрузки

    (95) Также исправлено заполнение строк 13, 16, 17 по замечаниям.

    Reply
  96. DmitryKSL

    Опять формат сменился?

    Используйте форму в редакции: Приказ Росстата от 01.09.2017 N 566.

    Reply
  97. kirabr

    Добрый день! Скачал обработку за стартмани, при запуске выдаёт предупреждение: «Внимание, отчёт не зарегистрирован, функция сохранения будет недоступна!». Вопрос — как зарегистрировать отчёт?

    Reply

Leave a Comment

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