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




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

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