Реестр регламентированных отчетов 6-НДФЛ по всем организациям и обособленным подразделениям. Контроль удержанного НДФЛ. ЗУП 3.1




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

40 Comments

  1. alnazarov

    Здравствуйте ! Обнаружил досадную недоработку — Отчет не заполняет данные по 6-НДФЛ если в учреждении у обособленных подразделений один КПП, но разные ОКТМО. Проверял на ЗКГУ 3.1.2.316 и 3.1.3.136. Желательно исправить.

    Reply
  2. user_2010

    Спасибо! Постараюсь исправить.

    Поясните ситуацию: есть два обособленных подразделения —

    Подразделение1: КПП =1 ОКТМО =1 — 1/1

    Подразделение1: КПП =1 ОКТМО =2 — 1/2

    Для каждого из них создан свой элемент в справочнике «Регистрация в налоговом органе» — верно?

    Сформировано 2 отчета 6-НДФЛ. Но в мой отчет эти отчеты 6-НДФЛ совсем не попадают?

    Reply
  3. user_2010

    Начали сами наводить порядок в регистрах и отчетах. Обнаружилась проблема с возвратами НДФЛ.

    Отчет выдает разницу по 4-ому анализу — как раз на сумму возвращенного НДФЛ.

    Проблема возникает из-за того, что у этих записей нет крайнего срока перечисления. И Это логично! Добавлю в отчет доп колоки, которые буду учитывать в анализе.

    Reply
  4. user_2010

    Коллеги!

    Верно ли утверждение:

    Итого НДФЛ Удержанный за квартал из Регистра накопления «РасчетыНалогоплательщиковСБюджетомПоНДФЛ» = Итог НДФЛ К Уплате за квартал из Регистра накопления «РасчетыНалоговыхАгентовСБюджетомПоНДФЛ»

    т.е. Расход за квартал из Регистра накопления «РасчетыНалогоплательщиковСБюджетомПоНДФЛ» = Приходу за квартал из Регистра накопления «РасчетыНалоговыхАгентовСБюджетомПоНДФЛ».

    Верно ли это?

    Reply
  5. alnazarov

    (2)Все верно. Из десяти один обязательно попадает. Правда, непонятно, почему именно этот. Если один (любой) пометить на удаление, то в отчет попадает уже другой.

    Reply
  6. alnazarov

    (4)Думаю, да.

    Reply
  7. user_2010

    (5) Ясно!

    Понятно почему так выполняется — потому что я из всех имеющихся регламентированных отчетов выбираю последний — я описывала эту тему — так как у нас насоздавали кучу 6-НДФЛ по одному и тому же обособленному подразделению — а мне в отчет нужен только один. также это правило действует в случае когда есть корректировки — в свой отчет я должна взять самый последний — последнюю корректировку.

    Вот при этом отборе и проблема — там у меня анализируется только КПП. Постараюсь исправить!

    Reply
  8. user_2010

    (6) Спасибо! А то после перехода в середине года с 2.5 на 3.1 — так много проблем в регистрах в 3.1… Пытаемся навести порядок… И порой возникает мысль, что я не права в понимании корректных данных.

    Reply
  9. user_2010

    Коллеги!

    Не понятно как отражается возврат налога в регистрах и в 6-НДФЛ, как он влияет на сумму удержанного налога в разделе 2?

    Есть у кого-нибудь понимание этого? Поделитесь своими мыслями.

    Пока поняла только то, что когда возвращается налог — в разделе 2 удержанный налог не уменьшается… -и это очень странно….

    Бухгалтера уменьшали сумму перечисления НДФЛ на сумму возвращенного налога. Получается, что это неверно?

    Reply
  10. alnazarov

    (9)Документ Возврат НДФЛ :

    Регистр накопления «Расчеты налогоплательщиков с бюджетом по НДФЛ» Вид движения «Расход» сумма с минусом.

    Регистр накопления «Расчеты налоговых агентов с бюджетом по НДФЛ»

    Вид движения «Приход» сумма с минусом.

    Документ Ведомость в банк на основании документа » Возврат НДФЛ»

    по вышеперечисленным регистрам никаких записей не производит.

    В 6-НДФЛ эта сумма отражается ТОЛЬКО в разделе 1 строка 090. В разделе 2 строке 140 этой суммы нет.

    Reply
  11. user_2010

    (10) вот и получается, раз во 2 разделе суммы возвращенного налога с минусом нет — значит мы должны перечислить НДФЛ больше, т.е. без учета этого возврата.

    Как так? Разве это верно?

    Ведь налоговая проверяет суммы поступившего налога с суммами удержанного налога по разделу 2.

    Reply
  12. alnazarov

    (11)С учетом строки 090 раздела 1, наверное

    Reply
  13. alnazarov

    (11)Контрольные соотношения 6-НДФЛ http://www.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=195337#0

    Reply
  14. alnazarov
  15. user_2010

    (14) Ага, спасибо за ссылки! Т.е. все-таки: в разделе 2 возвращенный налог никогда не будет отражен. Мы перечисляем сумму меньшую, чем указана в разделе 2, на сумму возвращенного налога и Это не будет являться нарушением?

    Главное, чтобы в целом за год мы перечислили не меньше, чем (070) Удержано с начала года — (минус) (090) — Возвращено?

    Так?

    Reply
  16. user_2010

    Получается, что когда у нас есть возврат НДФЛ — у нас сумма перечисленного налога может быть не равна сумме в разделе 2 на сумму удержанного налога? Остается только вопрос — к какому сроку уплаты относить возврат НДФЛ. Данная строка регистрируется без даты крайнего срока уплаты?

    Reply
  17. user_2010

    Все эти измышления — чтобы родить уже полноценную проверку 6-НДФЛ…

    Reply
  18. user_2010

    Еще вопросы…

    Налоговая проверяет ведь не только даты перечисления. Но и суммы перечисленного налога. Верно? только вот не нашла такого контрольного соотношения!

    И суммы она берет из раздела 2! А в них нет удержанного налога? В них сумма больше — чем мы перечислили — на сумму возврата НДФЛ. И что дальше? налоговая требует пояснения?

    Кто-то в практике сталкивался с такой ситуацией — возврата НДФЛ?

    Или чего-то не понимаю?????

    Reply
  19. user_2010

    Изучила кучу материалов, родился новый отчет!

    Загружен.

    Из важного! В отчете есть проверка контрольного соотношения 2.1: недоплата НДФЛ! Случай, когда организации выставляется штраф 20% от неперечисленной суммы.

    Reply
  20. suhoi

    (19)

    Изучила кучу материалов, родился новый отчет!

    Загружен.

    1. Дата поста — 22.08.17, а дата последнего изменения — 17.08.17. В текущем отчете эти изменения есть?

    2. Будет ли отчет работать в ЗКГУ?

    3. Как получать обновления после скачки — опять скачивать за 2 см?

    Reply
  21. user_2010

    (20)

    1. загружен последний вариант отчета. Для убедительности, скачайте и сверьте с картинкой. Предыдущая версия отчета имела другие колонки и другие цвета.

    2. если ЗКГУ — это аналог ЗУП.3.1 — тогда отчет должен работать — регистры одинаковые. Но в бюджетном учете есть доп аналитика статья финансирования — кажется так называется — если у вас учет НДФЛ идет в разрезе статей финансирования — то в данный момент в отчете статьи финансирования не анализируются и вообще не выводятся в отчет. Нет базы — чтобы доработать и протестировать.

    3. Считаю, что отчет стоит гораздо больше 2см. Всем кто скачал предыдущую версию отчета — предложила отправить последнюю версию. Кто -хотел — тот прислал свой e-mail и получил последний вариант отчета. Пока что не планируются никакие обновления отчета.

    Reply
  22. user790109

    Нажимая на кнопку Настройки вылетает ошибка » Не передан служебный параметр «НастройкиОтчета»». Поправьте пожалуйста. Конфа зуп (3.1.3.273)

    Reply
  23. user790109

    Вопрос решил

    1. В свойствах отчета Форма настроек указать ВспомогательнаяФормаНастроекОтчета.

    2. В СКД в составе пользовательских настроек отчета поставить все галочки и выбрать режим редактирования Обычный

    Reply
  24. user_2010

    (23) спасибо!

    Reply
  25. OOOTK

    скачал поставил. из поста 23 все сделал. на новом релизе от 31 января не работает. просьба поправить.

    Reply
  26. user_2010

    (25) какой у вас релиз? И что не работает? Какую ошибку выдает?

    Reply
  27. OOOTK

    Зарплата и Управление Персоналом, редакция 3 релиз 3.1.4.169 от 30.01.2018 . не дает поставить дату с 01.01.2017 . упорно сам ставит 01.01.2018. , а 31.12.2016 дает…. еще выходит сообщение при нажатии » не передан служебный параметр Настройка отчета, хотя пункт 23 пробовал сделать. В общем на новом релизе вообще не работает, а очень нужно…..

    Reply
  28. OOOTK

    сейчас проверил после тестирования и исправления базы ЗУП 3.1.4.169 на платформе 8.3.11.2899 вообще не стал открываться. сразу ошибка как в посте 22. ….

    Reply
  29. user_2010

    (28) на сайт загружен исправленный отчет. Работает и в 3.1.4. и в 3.1.3 и в 3.1.2. Если кому-то из скачивавших нужен исправленный отчет — пишите в личку вашу почту — отправлю отчет!

    Reply
  30. OOOTK

    Проверил, все отлично работает. Спасибо.

    Reply
  31. user_2010

    (30) Спасибо, за обратную связь!

    Reply
  32. gull22

    ЗУП 3.1.4.169 платформа 8.3.10.2699

    Работает, но нет выделения цветом по колонкам как на рисунке.

    Reply
  33. user_2010

    (32) Цветом выделяются только строки с ошибками. если у вас все верно в данных — то цветом не выделяется.

    Reply
  34. TrinitronOTV

    на 3.1.5.170 будет работать?

    Reply
  35. user_2010

    пока не проверяла. Постараюсь проверить в ближайшее время

    Reply
  36. user_2010

    (34) проверила на демо базе 3.1.5.170 — отчет формируется.

    Reply
  37. TrinitronOTV

    ОК, подожду результата

    Reply
  38. user_2010

    (37) вчера проверила на демо базе 3.1.5.170 — отчет формируется.

    Reply
  39. VitHammer

    Хороший всё-таки отчет разработали налоговики. И бюджет наполнить, и ВВП поднять.

    Reply
  40. user_2010

    (39) да политика такая, что все налоги сдаются пооперационно — есть где косячить и есть что проверять….

    Reply

Leave a Comment

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