П-4 и П-4 (НЗ) за 1 квартал 2026г. (январь-март) для ЗУП 2.5 с ОКВЭД 2 (в новой ред. № 485 от 06.08.2026) новый формат от 25.02.2026 (опубликован 28.02.2026г.)




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

68 Comments

  1. Eleet

    При выборе заполнения «Ежеквартально» при заполнении будет выдавать ошибку :При заполнении выдает ошибку:

    {ВнешнийОтчет.РегламентированныйОтчетСтатистикаФормаП4.МодульОбъекта(323)}: Поле объекта не обнаружено (П030001801)

    мФормаОтчета.Области.П030001801.Значение = Выборка.ПриемНаРаботу; »

    Решается комментарием вызова процедуры: ЗаполнитьРаздел3
    
    Если НЕ (Найти(мВыбраннаяФорма, «2013») > 0 )Тогда
    
    //ЗаполнитьРаздел3(мФормаОтчета, ЧисленостьРаботников);
    
    КонецЕсли;
    
    

    Показать

    Reply ↓
  2. zexpress

    «с отбором по подразделению и КПП» — я не смог выбрать подразделение, просто неактивен выбор даже

    Reply ↓
  3. ilnet

    Ошибки исправлены. Подправил обработку. Подразделения выбираются и исключаются по галочке.

    Reply ↓
  4. deiterij

    Добрый день!

    В П-4 (НЗ) за 1 квартал 2017 появляется сообщение:

    Формат версии 11-02-2016 за период составления отчета более не применяется

    Подскажите, будет ли обновлена версия формата?

    Reply ↓
  5. makas

    (4) У меня меня есть другой отчет «П-4», и он тоже дает похожее сообщение… Я вчера загрузил файл в «Контур-Экстерн», открыл отчет для ручного редактирования, сохранил изменения и отправил отчет в Статистику. А сегодня отчет приняли 🙂

    Reply ↓
  6. ilnet

    Постараюсь до 7 апреля обновить новую версию формата.

    П-4 (НЗ) срок сдачи до 10.04.2017. П-4 срок сдачи 17.04.2017.

    Reply ↓
  7. ilnet

    (4) 06.04.2017 Обновлен новый формат выгрузки от 27.02.2017 для текущей отчетности за 1 квартал 2017г.

    Отчетность П-4(НЗ) успешно сдал. Теперь П-4 до 17.04.2017 будем сдавать.

    Reply ↓
  8. belka338

    В п4 НЗ нет выбора по подразделению

    Reply ↓
  9. adma

    При выгрузке пишет что не задан код вида деятельности ОКВЭД организации!

    Хотя он задан

    Reply ↓
  10. ilnet

    29.32 Производство прочих комплектующих и принадлежностей для автотранспортных средств

    почему то у вас на скриншоте стоит 29,32 через запятую, проверьте заполнения поля ОКВЭД2 в карточке организации.

    Reply ↓
  11. adma

    (10)Действительно, в карточке организации не там был вбит. Спасибо!

    Reply ↓
  12. AlexO

    Отчет хороший, но мало где используется.

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

    Поэтому в ЗУП 2.5 и не делают его.

    Reply ↓
  13. vikki0805

    Добрый день!

    Изменился формат версии П-4 за июль. Будет ли обновление?

    Reply ↓
  14. ilnet

    07.07.2017 Обновлен формат выгрузки от 07.07.2017 для текущей отчетности за июль 2017г.

    проверено, можете сдавать отчетность за июль до 15.08.2017

    Reply ↓
  15. vikki0805

    (14)При выгрузке П-4 выходит предупреждение о том , что формат выгрузки от 27.02.2017 более не применяется.

    Reply ↓
  16. ilnet

    Исправлена проверка на версию. Сейчас все корректно. Спасибо vikki0805 vikki0805.

    Reply ↓
  17. Xytras

    Добрый день!

    а не подскажете в чем именно отличие нового формата (который от 07.07.2017)?

    Как это отражается в тексте файла выгрузки кроме ‘version=»07-07-2017″‘

    И нужно ли подгружать в программу новый шаблон xml?

    Reply ↓
  18. ilnet

    Меняется шаблон выгрузки xml и ставится ‘version=»»‘ без этого программа проверки не примет отчет.

    Различия в структуре шаблона xml. Точнее надо читать изменения в описании структуры.

    Reply ↓
  19. babys

    А для ЗУП 25 КОРП подойдёт?

    Reply ↓
  20. ilnet

    Анонсирую изменение шаблона. Изменения в моей обработке будут проведены до 02.10.2017.

    Электронное представление формы статистики № П-4 «Сведения о численности, заработной плате и движении работников» в редакции приказа Росстата от 02.08.2016 № 379 будет приведено в соответствие XML-шаблону от 11.09.2017, опубликованному 14.09.2017. Шаблон применяется начиная с отчета за сентябрь 2017.

    Reply ↓
  21. zexpress

    А возможно cделать отбор по группам подразделений ?

    Reply ↓
  22. EvJ

    Добрый день

    Подскажите, пожалуйста, если ранее скачивал отчеты, то сейчас обновленные снова должны оплачиваться?

    И еще, в форме П4НЗ сейчас есть выбор обособленных подразделений?

    Reply ↓
  23. user842823

    Здр! а почему нет расшифровок колонок? или мне не по глазам?

    Reply ↓
  24. ilnet

    Расшифровки по ячейкам не предусмотрены. Используйте стандартные отчеты по среднесписочной численности и ведомости по зарплате.

    Reply ↓
  25. vikki0805

    СБИС не принял форму П-4, пишет что шаблон неактуальный.

    Reply ↓
  26. ilnet

    Вы правильно выбрали форму №379 от 02.08.2016?? при формировании отчета??

    Reply ↓
  27. vikki0805

    Да, конечно

    Reply ↓
  28. vikki0805

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

    (26)

    Reply ↓
  29. mvm.mgp

    1. П4 НЗ тоже по подразделениям формируется?

    2. Подскажите а нет ли у вас случайно формы 57-Т за 2017?

    Reply ↓
  30. mvm.mgp

    и что с этим делать? мне нужно в зуп 2.5 формировать 57 Т по 300 подразделениям, ни где не могу найти

    Reply ↓
  31. 27272

    (31) Для зуп 2,5 — нет и вряд ли будет. Говорят в тестовой 3.1.4 есть. Наши делали вручную в БГУ в прочей статистике

    Reply ↓
  32. mvm.mgp

    П4 НЗ не по подразделениям, жаль потраченных денег,

    Reply ↓
  33. mvm.mgp

    если будет отчет П4 НЗ по подразделениям пришлите пожалуйста на mvm.mgp@mail.ru, заплатила за ненужный отчет, в описании написано что есть отбор по подразделениям, но видимо это относится только к П4

    Reply ↓
  34. UFOPITER

    {ВнешнийОтчет.РегламентированныйОтчетСтатистикаФормаП4.МодульОбъекта(90,23)}: Переменная не определена (ОбщегоНазначенияЗК)

    ОписаниеТиповСтрока = <<?>>ОбщегоНазначенияЗК.ПолучитьОписаниеТиповСтроки(0);

    {ВнешнийОтчет.РегламентированныйОтчетСтатистикаФормаП4.МодульОбъекта(172,33)}: Переменная не определена (ОбщегоНазначенияЗК)

    НоваяФорма.ДатаКонецДействия = <<?>>ОбщегоНазначенияЗК.ПустоеЗначениеТипа(Тип(«Дата»));

    скачен 01.11.2017!

    Reply ↓
  35. ilnet

    (35)

    {ВнешнийОтчет.РегламентированныйОтчетСтатистикаФормаП4.МодульОбъекта(90,23)}: Переменная не определена (ОбщегоНазначенияЗК)

    ОписаниеТиповСтрока = >ОбщегоНазначенияЗК.ПолучитьОписаниеТиповСтроки(0);

    {ВнешнийОтчет.РегламентированныйОтчетСтатистикаФормаП4.МодульОбъекта(172,33)}: Переменная не определена (ОбщегоНазначенияЗК)

    НоваяФорма.ДатаКонецДействия = >ОбщегоНазначенияЗК.ПустоеЗначениеТипа(Тип(«Дата»));

    Вы какой программой пользуетесь? Я проверил — В последнем релизе Зарплата и Управление Персоналом, редакция 2.5 (2.5.123.1) Ошибок не обнаружено. Общие модули (ОбщегоНазначенияЗК) есть в стандартной конфигурации.

    Reply ↓
  36. -MISH-

    Эта форма подойдет для сдачи отчетности за 4 квартал?

    Reply ↓
  37. quares

    А где механизм заполнения то? Что за горячее надувательство? 🙂

    Reply ↓
  38. ilnet

    Отчет проверен. Кнопка «заполнить» всегда была в левом верхнем углу. Также есть закладка исключения видов расчетов. Отбор по подразделениям.

    Кстати я его вчера сдал в статистику, ошибок не обнаружено.

    Reply ↓
  39. user940999

    Спасибо. Очень пригодилось

    Reply ↓
  40. TMV

    Правльино ли я понимаю, что форматы первоанчально появляются здесь Сайт статистики? И пока их не будет там, ничего не выгрузить? Бухи каждый месяц практически с этими форматами дергают, постоянно выдает им сообщяение о том, что формат более не применяется — при чем обновление зупа делается регулярно.

    Reply ↓
  41. Dimon_Infostart

    Новый формат выгрузки П-4 (НЗ) будет ?

    Reply ↓
  42. ilnet

    (42)

    Новый формат выгрузки П-4 (НЗ) будет ?

    Для формы статистики № П-4 (НЗ) «Сведения о неполной занятости и движении работников» в редакции приказа Росстата от 04.09.2017 № 566 реализована выгрузка в электронном виде в соответствии с XML-шаблоном от 27.02.2018.

    Reply ↓
  43. berezin

    Здравствуйте. можно обновленную версию? Или за мани опять?

    Reply ↓
  44. ilnet

    Ориентировочно 16 числа обновлю формы в соответствии с XML-шаблоном от 19.06.2018, опубликованным 22.06.2017.

    Reply ↓
  45. Dimon_Infostart

    Добрый день, 16 число прошло, очень ждем новый формат

    Reply ↓
  46. Lord_Kingovich

    То же жду для 2.5 КОРП. Скачал сегодня, а формат старый(

    Reply ↓
  47. ilnet

    Извиняюсь за задержку. Обновил формат.

    01.08.2018 Обновлен отчет для текущей отчетности П-4 за июль 2018. Добавлена возможность выгрузки в формате 19-06-2018

    Reply ↓
  48. milov.aleksey

    Подскажите, а для ЗУП 3.1.Х есть?

    Взял из последней ЗУП 3.1.7.87(от 10.07.2018). ФОрмат-то прежний, а заполнение шаблона(значений в формате) старое. Либо внешний шаблон, который не заполняется. У нас под 80 обособок. Выхоит или новый руками в 1С, либо Контуре ИЛИ заполнять и пилить выгрузку под изменения от 19.06.2018

    Reply ↓
  49. German_Tagil

    запомнить

    Reply ↓
  50. ilnet

    Ошибка исправлена формат был правильный от 19.06.2018 и выгружалось правильно.

    Я не проставил измененную дату в модуль проверки.

    Теперь все исправлено.

    Reply ↓
  51. Stella_K

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

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

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

    Reply ↓
  52. user967708

    Пишет, что формат версии 01-02-2018 не применяется

    Reply ↓
  53. user967708

    Отменяется вопрос — бухи запустили старый вариант.

    Reply ↓
  54. Stella_K

    Добрый день!

    Подскажите, у кого-нибудь работает отбор по подразделениям?

    У нас — нет. При указании подразделения, в отчет подтягиваются сведения по всей организации в целом.

    Конфигурация ЗУП КОРП, редакция 2.5 (2.5.130.2).

    Reply ↓
  55. user967708

    У меня работает. Немного допилил.

    Reply ↓
  56. aceman07

    (56) Здравствуйте! А что именно допилили? У меня тоже не работает отбор по обособам. Всегда показывает полную численность по всем подразделениям

    Reply ↓
  57. Rashilya_Kaumbaeva

    В процедуре Заполнить(мФормаОтчета) модуля объекта отчета у вас должно присутствовать:

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр(«Организация», Организация);
    
    МассивВидовЗанятости = Новый Массив;
    МассивВидовЗанятости.Добавить(Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы);
    МассивВидовЗанятости.Добавить(Перечисления.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство);
    Запрос.УстановитьПараметр(«СписокВидовЗанятости», МассивВидовЗанятости);
    Условие = » И Сотрудник.ВидЗанятости В (&СписокВидовЗанятости)»;
    Если ЗначениеЗаполнено(ОбособленноеПодразделение) Тогда
    Запрос.УстановитьПараметр(«ОбособленноеПодразделение», ОбособленноеПодразделение);
    Условие = Условие + » И ПодразделениеОрганизации В ИЕРАРХИИ (&ОбособленноеПодразделение)»;
    КонецЕсли;
    Если ЗначениеЗаполнено(КПП) Тогда
    Запрос.УстановитьПараметр(«КПП», СокрЛП(КПП)+»%»);
    Условие = Условие + » И ПодразделениеОрганизации.КПП ПОДОБНО (&КПП)»;
    КонецЕсли;
    Запрос.УстановитьПараметр(«НачалоПериода», НачалоДня(мДатаНачалаПериодаОтчета));
    Запрос.УстановитьПараметр(«КонецПериода», КонецДня(мДатаКонцаПериодаОтчета));
    

    Показать

    По-моему вот этого блока нет в отчете (я уже точно не помню, в прошлом году изменяла):

    Если ЗначениеЗаполнено(ОбособленноеПодразделение) Тогда
    Запрос.УстановитьПараметр(«ОбособленноеПодразделение», ОбособленноеПодразделение);
    Условие = Условие + » И ПодразделениеОрганизации В ИЕРАРХИИ (&ОбособленноеПодразделение)»;
    КонецЕсли;
    
    Reply ↓
  58. user1146742

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

    Reply ↓
  59. ilnet

    (59)


    59. user1146742 12.02.19 15:27

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

    Все формы с заполнением и актуальны на текущий 1 квартал 2019 г.

    Reply ↓
  60. user1146742

    (60)Спасибо

    Reply ↓
  61. olsy

    По обособкам не заполняет. Пришлось в модуле формы ФормаОтчета2019Кв1 в процедуре ЗаполнитьСведенияОбОрганизации добавить

    Если ЗначениеЗаполнено(ОбособленноеПодразделение) Тогда

    ПодразделениеОрганизации = ОбособленноеПодразделение;

    КонецЕсли;

    КонецПроцедуры

    Reply ↓
  62. olsy

    Спасибо автору за поддержку отчета!

    Еще замечания:

    1. Не сохраняются списки Исключаемых видов расчетов и Соц.выплат.

    2. Не позволяет выбрать из Доп. начислений в таблицах Исключаемых видов расчетов и Соц.выплат.

    3. Не отрабатывает галка Исключить данные обособленных подразделений.

    4. Не сохраняется дата подписи.

    Reply ↓
  63. user777376

    Спасибо. Но меня все же мучает вопрос: Почему нет типового решения?

    Reply ↓
  64. ILNIK

    Для КОРП версии подойдет?

    Reply ↓
  65. TMFGROUP

    В шаблоне выгрузки xml за 2019 год ошибка.

    Согласно http://www.gks.ru/metod/XML-2019/12402019/XML/p4_nz_1.rar

    должно быть не «27-02-2018», а «25-02-2019».

    Загрузка в Контур не пойдет!

    Исправьте, пожалуйста, макет!

    Reply ↓
  66. ilnet

    (66)

    Спасибо! за напоминание!

    10.04.2019 Для формы статистики № П-4 (НЗ) «Сведения о неполной занятости и движении работников» (ОКУД 0606028) в редакции приказа Росстата от 06.08.2018 № 485 реализована выгрузка в электронном виде в соответствии с XML-шаблоном от 25.02.2019, опубликованным 28.02.2019.

    Reply ↓
  67. mburkin

    Численность по договору ГПХ не считается, хотя зарплата их считается.

    Reply ↓

Leave a Comment

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