<?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='\
При выгрузке из Бухгалтерии индивидуальных сведений (форм СЗВ-6-1 и СЗВ-6-2) суммы уплаты заполняются расчетным методом и не всегда встают верно, т.к. фактические данные распределения уплат предыдущих периодов не учитываются.
Данная обработка сохраняет распределение задолженности в разрезе сотрудников по итогам формирования форм СЗВ-6 в специальном документе «Задолженность по страховым взносам», который используется в дальнейшем для формирования сведений в следующем отчетном периоде.
Есть возможность не использовать этот специальный документ и восстановить распределение задолженности за предыдущие (ранее сданные) периоды на основе данных файлов XML, сформированных в прошлых отчетных периодах (1 полугодие 2010 года и последующие).
Перейти к публикации
Спасибо за заботу и поддержку общих проблем пользователей.
Спасибо, очень пригодится, пока не анализировала, но уже сделала вывод, что очень нужная обработка
Конечно +
спасибо, это всегда может пригодиться
Это единственный реальный выход для отслеживания задолженности по страховым взносам в разрезе сотрудников, так как типовая этого не позволяет.
Спасибо! Очень замечательно все расписано. Будем пользоваться
Воспользовались Вашей обработкой для ЗИК — нормально прошло. Спасибо за эти!!! Для 1С-Предпринимателя бы еще написали — тоже считают з/плату в этой программе и сдают оттуда ПФР-ку.
(6)Предпринимателя 7.7?
Попробую.
Да,Учет и отчетность Предпринимателя 7.7. Сидит бухгалтер и вручную ведет накопительную ведомость по уплате.
(8)Ну если «плюсанете» мои обработки, которые вам пригодились — сделаю 😉
Да с радостью!!
[U]U[/]Спасибо! Попробую вернуть одного клиента на штатый механизм с помощью Вашей обработки.
Большое спасибо за обе обработки! Очень нужные и своевременные!
Строка 9148 …
Этот код отработает только первого сотрудника …….
Пока ТабСоставПачки.ПолучитьСтроку()=1 Цикл
стр = 0;
Если (ТСотр.Флаг=0) и (ТСотр.НайтиЗначение(ТабСоставПачки.Сотрудник, стр, «Сотрудник») = 1) тогда
ТСотр.ПолучитьСтрокуПоНомеру(стр);
ТСотр.Флаг=1; // сотрудник в пачку включен
А вот так вроде обходит ВСЕХ
Если (ТСотр.НайтиЗначение(ТабСоставПачки.Сотрудник, стр, «Сотрудник») = 1) тогда
ТСотр.ПолучитьСтрокуПоНомеру(стр);
Если (ТСотр.Флаг=0) тогда
ТСотр.Флаг=1; // сотрудник в пачку включен
//Сообщить(«Обрабатываем:= «+ТабСоставПачки.Сотрудник);
ТабСоставПачки.УплаченоСтраховая=ТСотр.УплаченоСтраховая3+ТСотр.УплаченоСтраховая4;
ТабСоставПачки.УплаченоНакопительная=ТСотр.УплаченоНакопительная3+ТСотр.УплаченоНакопительная4;
КонецЕсли;
Иначе
ТабСоставПачки.УплаченоСтраховая=0;
ТабСоставПачки.УплаченоНакопительная=0;
КонецЕсли;
Еще на кнопку ЗАПОЛНИТЬ СУММЫ ВЗНОСОВ может не надо вешать по умолчанию документ задолжности по оплате …
Ведь для этого есть кнопка Записать сальдо
(13)Это ошибка версий 1.0 и 1.1. В версии 1.2 я это уже исправил.
А чем плоха запись сальдо в момент распределения уплаты?
Это гарантирует законченность действий для невнимательных пользователей.
Иногда с первого раза не получается все сделать правильно …
т.е. То номер забыл расчетчик то суммы не выверил то просто не стой ноги встали
то файлы собрали не все xml. а я не знал как она работает
и ведь отказаться нельзя от сохранения …. она его сразу записывает даже не спрося ….
Пришлось в монопольном убирать каждый раз сальдо … после каждого не правильного прохода
Обработка очень пригодилась.. оказалось не все оплаты разнесли еще в 2010 году
копейки подчистили при переходе на 1С 8 я думаю очень пригодится порядок …
Да и зачем тогда кнопка ЗАПИСАТЬ САЛЬДО …. 🙂
(15)Ничего страшного от того, что сальдо запишется первый раз неверно, при повторном заполнении суммы взносов оно перезапишется (документ перезаполнится новыми данными).
И не нужно его убирать монопольно. Достаточно его сделать не проведенным и он не будет учитываться при анализе сальдо.
Кнопка «Записать сальдо» нужна если вручную поменяли в пачках начислено/уплачено. После этого нужно нажать эту кнопку, чтобы изменения учлись в сальдо.
Из за того что не шли обороты ( уплат ) за период с 01.01.10
Я решил // проверить их откатываясь в прошлые периоды … и обработка начала писать документы в этих периодах,
а зачем у меня же есть xml … мысль понятна (нельзя не доотценивать предсказуемость человеческой забывчивости ..)
(17)Тож ничего страшного, важно чтоб верное сальдо было в последнем документе, которым оно зафиксировано. Предыдущие документы при этом уже не важны и не анализируются.
Хотя может галочку добавлю в следующей версии, чтоб сальдо автоматически не записывалось при заполнении.
Сам использовал, данную обработку, за 2011 год все кварталы отчитались и все нормально. Все поправляет при необходимости. Доволен и спасибо автору за труды.
То что исправили ошибку, приводящую к задвоению сотрудников в пачках при распределении уплаты — хорошо. Было такое в УСН. Попробую сейчас на Предпринимателе. В УСН здорово помогло!!! Спасибо. Могу еще тысячу плюсов поставить!
Спасибо за нужную обработку!
Пришлось только удалять ручками кучу «нулевых» сотрудников (нет начислений у сотрудника, но он и не уволен), но это клиент такой попался)))
Очень пригодилась!
Очень пригодилась
Обновление от 27.01.12 (версия 1.3):
5) Обработка обновлена до последней версии типовой конфигурации Бухгалтерия 535 (совместима с последними релизами конфигураций УСН и Предприниматель).
6) Для опции штатного механизма «Распределение сумм уплаченных взносов производить с учетом ранее переданных данных» устранены недоработки: 1) при проверке наличия переданных данных сообщается период, с которого должны быть загружены эти данные; 2) в случае обнаружения переплат в переданных данных выводится список сотрудников с переплатами и суммами переплат (почему само ЗАО «1С» этого не сделало остается загадкой).
7) При заполнении формы «СЗВ-6-3» в форму включаются и отрицательные суммы начислений (чтобы можно их было увидеть и исправить).
8) При загрузке файлов XML появилась возможность собирать файлы и из вложенных подкаталогов (флажок «включая подкаталоги»). Бывает полезно, если файлы сгруппированы по каталогам в зависимости от отчетного периода (квартала). Изменение предложил Gagarkin Valery.
9) кнопка «Записать сальдо» ушла на закладку «Настройки», т.к. на прежней закладки ей не хватило места. Появился флажок «не записывать автоматически». Установка флажка позволяет не сохранять сальдо в документе «Задолженность по страховым взносам» после распределения уплаты нажатием кнопки «Заполнить суммы взносов». В этом случае сальдо нужно записать принудительно, нажав кнопку «Записать сальдо».
Обновление от 28.01.12 (версия 1.3+):
10) исправлена ошибка в процедуре ЗаполнитьСуммыВзносов, приводящая к невозможности расчета при альтернативном распределении уплаченных взносов.
Это обновление можно не скачивать, а самостоятельно внести исправления в обработку версии 1.3.
Надо фрагмент кода:
Показать
заменить на этот:
Показать
Огромное спасибо за продолжение поддержки отчета. Многие перешли на 1С 8# и проблемы «семерочников» их не волнуют… а пользователей осталось еще очень много
интересный отчет, хотя мы уже сдали ПФР скачаю на заметку…
Спасибо автору за работу , очень интересная доработка для сдачи индивидуальных сведений в ПФР.
Спасибо автору, использовали данную обработку за 2011 год. Бухгалтерия в восторге, так же огромное спасибо за продолжение поддержки.
(26) Приветствую! — Проект незаслуженно законсервирован.
Виктор, было бы неплохо его продолжить в 2013г.
— Для бухгалтерии 7.7 — это то, что нужно!
p.s.
По-видимому, victuan не заглядывает сюда, тогда спрошу у заглядывающих:
Подготовил отчет ПодготовкаСведенийДляПФР2010_v (по исходнику от victuan-а 2012г) для продолжения в 2013г, с разделением по договорам на основе разработки victuan для ЗиК 2013г. (адаптировал для Бухгалтерии-7.7 (УСН и ОСН).
Хочу договориться с victuan выложить его для общего пользования.
Отметьтесь — есть желающие? — Иначе нет смысла выкладывать его здесь. 🙂