<?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='\
С 01.01.2016 Взносы ПФР начисляются по другому… Версия отчета обновлена, те кто уже скачал пишите в «личку» вышлю новую версию бесплатно
Правильно ли покажет отчёт НДФЛ у сотрудников, которые работают в течение месяца в разных обособленных подразделениях? Например, как основной сотрудник в одном подразделении, и как внутренний совместитель в другом.
(2) masteroff, Да все показатели просуммируются,если эти сотрудники содержат ссылку на одно и тоже физлицо, но придется поменять настройку группировки строк таблицы (убрать оттуда подразделение и должность)
код открыт? дату приема, увольнения можно самим присобачить?
ПОГПХИЩТАТ..
скачала, открыла СКД, пришла в ужас, даты не знаю куда воткнуть, помогите!
(5)Код действительно открыт, даты приема и увольнения очевидно будут в разных записях источника данных «Запрос», думаю проще будет создать еще одну таблицу (вложенный запрос)на основе «РаботникиОрганизаций»
Вот так я бы сделал таблицу
ВЫБРАТЬ
РаботникиОрганизаций.Сотрудник,
РаботникиОрганизаций.Организация,
МАКСИМУМ(ВЫБОР
КОГДА РаботникиОрганизаций.Регистратор ССЫЛКА Документ.УвольнениеИзОрганизаций
ТОГДА РаботникиОрганизаций.Период
ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
КОНЕЦ) КАК ДатаУвольнения,
МАКСИМУМ(ВЫБОР
КОГДА РаботникиОрганизаций.Регистратор ССЫЛКА Документ.ПриемНаРаботуВОрганизацию
ТОГДА РаботникиОрганизаций.Период
ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
КОНЕЦ) КАК ДатаПриема
ИЗ
РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
СГРУППИРОВАТЬ ПО
РаботникиОрганизаций.Сотрудник,
РаботникиОрганизаций.Организация
Обязательно соединяйте Последнюю таблицу запроса левым соединением с «Этой» чтобы она вдруг не «выросла»
У меня получилось
(9)Денис, у меня не получается, все-таки запросы у вас непростые, чуть тронешь — сбиваются группировки. прошу вас, если не трудно, отправьте отчет с доработкой по датам на zlobina_g@mail.ru, пожалуйста
(10)Отправил
вы очень отзывчивы, спасибо за доработки! покопалась в ваших запросах, и уже не кажутся такими страшными, кое-что подстроила под свои нужды
(12) Запросы основаны на методике «последовательного построения временных таблиц» — это классика (Хрусталева)
Люто плюсую и 6см не жалко за такое, хотелось бы еще отделить ПФРдо предела и выше, а то в отчете все в одной колонке ПФРпосуммарномутарифу.
(14)Да сегодня sm чего то стоит, цена была назначена в период его обесценивания, а теперь если снижу тем кто скачал будет обидно… ЗУП 2.5 уходит в небытие… я вообще не ждал что кто то скачает
А под 3.1 подобное писали?
(16)Нет, не приходилось