<?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='\
Добрый день!
Спасибо огромное за отчет! Он супер-полезный!
Однако, мы заметили, что туда не подпадают отпуска, у которых дата удержания раньше даты начисления…
(2) Lusik, а в Отчет 6-НДФЛ эти суммы попадают? Этот отчет заполняется по алгоритмам заполнения 6-НДФЛ, то есть строки должны быть 1 в 1.
(2) Lusik, не смог воспроизвести Вашу ошибку. У меня такого рода отпуска попадают и в отчет 6-НДФЛ и в мой отчет.
Спасибо за отчет! Бухгалтеру отличная помощь!
Доброе утро!
Да, и нужно добавить общий итог по строке 130. У 1С алгоритм не совершенен, возможно расхождение со строкой 020.
(7) kovgard, думал об этом, можно сделать структуру подобную типовой и уйти с ней в Общий, возможно так и сделаю в следующих релизах, а то много время отнимает рассылка новых релизов. Когда делал, нужно было максимально быстро, а потом надеешься, что переделывать часто не придется, но оказалось не так . 🙂
Что касаемо Итога по 130, хочу сделать, но сейчас это поле не играет никакого значения. Оно считается информационным и у многих никогда не сойдется с 020, но как бы там не было, принял!
P.S
И честно признаться, не думал, что этот отчет будет пользоваться большой популярность, а получилось вон как… 🙂
Отчет хорош, но мне еще пришлось по видам начисления группировать и налоговый вычет выводить. Я думаю неплохо бы добавить сразу)
Че то отчет не отправляется на почту…
(11) asher72, напишите почту в личку.
(10) Alteza, (8) kovgard, Все пожелания собираю, перед 2 кварталом постараюсь, что-нибудь сотворить.
Было бы супер если бы еще и 1 раздел расшифровывался 🙂
Добрый день. Спасибо за отчет, но у меня почему то не выводит регистратор. Не подскажете, почему такое может быть?
(15) Scene1, где-то «Дата получения дохода» > «Даты выплаты дохода». Исправил. Скажите куда кинуть отчет?
В версии v6_105.1 расшифровка по документу пропала, я так понял, в связи с заполнением отчета через общие модули.
Обрадовался, прочитав что в v7_107.1 «Вернулиь к старой схеме».
Снова скачал обновление. Но расшифоровки по регистратору, так и не увидел.
Спасибо, что очень помогла в 1 квартале при формировании отчетности.
Но сейчас, без расшифровки по регистратору, данная обработка стала БЕСПОЛЕЗНОЙ.
(16) Похоже я опоздал с комментарием. Написал, тоже адрес в личку.
(17) as7bs, не понял. Я скинул Вам на почту последнюю версию. Она заработала?
Сейчас уже не старая схема разработки, сейчас уже переписывание запросов 1С, они убрали из запроса Регистратор.
(18) Последняя версия, которую вы скинули, показывает регистратор не во всех базах, в некоторых есть, а в некоторых нету.
Причем в некоторых базах, расшифровка, как v7_107, так и v6_105(работающая на общих модулях) показывают данные отличные от тех которые заполняются в самой форме 6-НДФЛ.
(19) as7bs, странно, перепроверил 107 на нескольких базах, все ок. Мне хотя бы понять какие у Вас строки выпадают (Например: отпуск, больничный)? Базу дать на опыты есть возможности?
И еще себе я обработку меняю следующим образом:
В процедуре ПриОткрытии
заменяю на
Чтобы постоянно не менять период на прошлый квартал при открытии обработки. Т.к. отчет мы обычно формируем в следующем квартале.
(21) as7bs, я понял. Да, у меня не заходит сюда, поэтому было все Ок.
(16) 1c@finval.ru. Спасибо)
Можно и мне скинуть на почту ashvets@it-cr.ru последнюю версию
Товарищи, пишите в личку насчет свежей версии отчета 🙂
Доброго времени суток. Скачал ваш отчет «Расшифровка_6_НДФЛ_Отчет_v8_107.1». Запустил на 108 релизе. Формировать не хочет. В чем причина может быть. Спасибо заранее
(27) mentozavr, Добрый. У нас каждый релиз с боем обновляется. Поэтому, я стараюсь делать обновление отчета исключительно под релизы перед сдачей отчета. Примерно во второй половине Сентября я начну разбираться с теми изменениям, которые навояли 1С и дорабатывать отчет. Напишите в личку, как появится новая версия отчета я Вам свежий скину.
(28) Спасибо уже написал
(28) Зачем им нужны эти изменения, зачем регистр каверкать
(30) mentozavr, я думаю этот вопрос лучше сразу задавать руководству нашей страны. 🙂
1С тупо пытается подогнать работу программы под чрезвычайно запутанные законы, вот и все.
(31) Новой версии обработки еще нет?? Спасибо
Четкий отчет! Спасибо автору! Учитывает и командировки и ДГПХ.