<?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.5 (2.5.33.4)
Ошибка:
«{ВнешнийОтчет.мТекучесь.МодульОбъекта(25)}: Метод объекта не обнаружен (ПолучитьТаблицуЧисленностейПодразделение)
ТаблицаСреднихЧисленостей = Отчет.ПолучитьТаблицуЧисленностейПодразделение(Организация, НачалоПериода, КонецПериода,ложь);»
Будьте проще, не лезьте в изменение типовой конфигурации. Нужный дополнительно отчёт можно не трогать, а запихнуть к вам же.
См.вложение.
Показать
А за название организации в заголовке отчёта — фи вам. Выкладываете для всех — оставьте свой копирайт, если копирайт принадлежит указанной организации — хотя бы разместите изящнее.
(1) берите вложение, оно работает без изменений конфигурации.
А где собственно формулы? вижу только текст…
Во вложении 2 Функция ПолучитьТаблицуЧисленностейПодразделение.
Ее необходимо добавить в модуль типового отчета «СредняяЧисленностьРаботниковОрганизаций»
Либо сделать так как предлагает e.kogan.
e.kogan, спасибо за совет, учту 😀
Сделал, как предложил e.kogan (скачал его вложение).
Платформа 8.2, ЗУП 2.5.33.4
Очень долго не мог въехать, что оно от меня хочет. Чуть мозг не сломал по своей неопытности…
Оказывается, встроенную копию отчета о средней числености надо тоже выгрузить, сконвертировать, и загрузить на место. Вдруг кто-то тоже в такой ситуации окажется 😉
А попроще никак? 😀
А попроще никак?
Я уже писал, во вложении Функция ПолучитьТаблицуЧисленностейПодразделение.
Ее необходимо добавить в модуль типового отчета «СредняяЧисленностьРаботниковОрганизаций» .
Проще некуда.
(0) «Вряд ли кто-нибудь станет спорить, что текучесть кадров отрицательно сказывается на работе предприятия, не дает сформироваться коллективу, а значит и корпоративному духу, что неизменно влечет за собой снижение производственных показателей и эффективности работы.»
книжек начитался?
Добрый день. Не знаю у кого как, но у меня не работает.
{ВнешнийОтчет.мТекучесь.МодульОбъекта(315)}: Поле объекта не обнаружено (МесяцыОтчета)
ЗапросСКДМесяцыОтчета = СхемаКомпоновкиДанных.НаборыДанных.МесяцыОтчета.Запрос;
В Публикации я подчеркнул.
Во вложении 2 Функция ПолучитьТаблицуЧисленностейПодразделение.
Ее необходимо добавить в Модуль типового отчета «СредняяЧисленностьРаботниковОрганизаций»
Вы добавили Функцию ?
И еще , в последних версиях ЗУП нужно заменить вызовы функций из общего модуля «Общегоназначения» на
«ОбщегоназначенияЗК»
Вот нормальная версия этой обработки для 8.2http://yadi.sk/d/EQE7PVGy98q5C
Автор, выкладывай, пожалуйста, обработки, где не надо ничего дописывать. Сам же знаешь каково в чужом коде копаться.