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




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

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