<?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='\
Как вовремя! Спасибо большое. Мне ночь работы съэкономили!
Не пашет!!!{ВнешнийОтчет.ЗпКультура.МодульОбъекта(4)}: Метод объекта не обнаружен (ГоловнаяОрганизация)
http://v8.1c.ru/budghrm/)
Запрос.УстановитьПараметр(«ГоловнаяОрганизация», ОбщегоНазначения.ГоловнаяОрганизация(Организация));
Зарплата и кадры бюджетного учреждения, редакция 1.0 (1.0.53.1) (
)
(2) kumirmp, обработка была написана на релизе 1.0.51.1. В релизе 1.0.52.1 изменены общие модули. Изменения учел. Обработку перезалил. Спасибо!
Да ! Пож-та -но она не правильно работала ! Эту не пробывал ! Предыдущая точно ! В стандартной можете посмотреть! А так к ней есть новое разъяснение МИНФИНА ! ГРАФА субсидии — КФО 5 .КФО 2 и КФО 4 — Внебюджет !!!! По -мому ТАК!!!! Проверьте!!!
(4) kumirmp, отчет сделал максимально гибким: разносите свои источники финансирования по нужным вам реквизитам на вкладке «Основное».
У меня выдает ошибку про Головную организацию. Что то надо подправлять?
Релиз? Обновите конфигурацию.
Отличная обработка, экономит много времени,огромное спасибо но есть небольшая ошибка, очередной отпуск начисленный за период не входящий в отчетный, например в марте за апрель попадает в сумму заработной платы текущего отчета, хотя должен быть включен в отчет за следующий квартал. Сейчас это не страшно на организацию 1-2 таких отпуска, но вот летом(
При дальнейшем тестировании оказалось что если в месяце при вводе больничного производилось удержание з/п за предыдущий месяц и в текущем месяце з/п меньше чем это удержание, данная разница с минусом в отчет не попадает, у внешнего совместителя у которого есть еще и внутреннее совместительство это внутреннее совместительство попадает в графу внут. совместительство, а не внешнее, сотрудники работающие в двух организациях, попадают в отчет обоих учреждений и сумма в каждый отчет встает по обоим учреждениям. В общем хорошая обработка, только жаль для самых простых учреждений «без завихрений» как наши…
(8) mazurkevitch, Спасибо! Отчет писал быстро, для конкретной организации. Конечно, всех нюансов не учесть.
Попробую уломать нашего специалиста, чтобы выделил окошечко для доработки,он у нас другим отделом занят и в нашу сторону даже не смотрит( но вдруг.. базовый материал уже есть. Минусы в начислениях, внешние-внутренние совместители и куча людей работающих в двух и более учреждениях это конечно наши личные тараканы, а вот отпуск начисленный за следующий период и попадающий в текущий отчет, это может сказаться и на организации для которой Вы писали, не сейчас конечно, а летом. Но все равно огромное спасибо, два отчета я уже сделала, не знаю как бы я их делала без вашего отчета.
Спасибо за отчет.
Не удалось сформировать внешнюю печатную форму!
Метод объекта не обнаружен (ГоловнаяОрганизация)
Процедуру ОбщегоНазначения поменяла ОбщегоЗначенияЗК