<?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='\
Обновил файл. Поправлен баг типового отчета: если сотрудник увольняется из одного обособленного подразделения и принимается в другое на следующий день, то невозможно получить данные расчетного листка на уволенного сотрудника.
Если я правильно понял, то смысл написаного сводится к тому, что щелкаем мышью по детальной записи «СУММА» и открывается регистратор.
Мои руки в таких случаях брали и создавали доп. колонку в форме отчета
«РЕГИСТРАТОР», что бы мона было все это распечатать бухам. Может все дело в моих шулудивых руках???…
P.S. Типовой «РЛРО» — кака! Ты молодец. Но мона было сделать и поинтересней! Ждем обновлений!
Добавлена возможность рассылки сформированных РЛ. Для этого на форме добавлена кнопка «Отправить». Данные для почтового клиента берутся из справочника Учетные записи электронной почты (перед рассылкой необходимо выбрать нужную учетную запись).
Каждый расчетный листок сохраняется в формате XLS95 и отсылается по адресу указанному у сотрудника в справочнике Физические лица.
Адрес ищется по 2 видам контактной информации: предопределенному «Служебный адрес электронной почты физического лица» и по созданному (у нас в организации, может кто тоже использует) «Адрес электронной почты для рассылки».
После рассылки чистит темповую директорию от сохраненных файлов.
А как открывается? Неизвестный формат файла…
перезалил, бывший файл имел слишком длинное имя, поэтому название обрезалось… сейчас все ок должно быть.
Тот тоже можно открыть, если приписать к файлу расширение .erf
не запускается, пишет что данный файл не является внешним отчетом, ЗУП 2.5.17.8
А можно переделать отчет под релиз 2.5.18.2?
Расчетчики очень уж привыкли к этому отчету. 🙁
(3) 1. Цитата «Подробности в 3-м комментарии» — закинь содержимое коммента в запись в блоге и пользователям не придется искать 3-й коммент.
будет легко видеть, когда и что ты менял.
.
2. Из описания совершенно не понятно, для какой конфы.
все-таки ЗУП? в БП также есть отчет с таким названием 🙂
В КА и УПП кто-нибудь проверял?
(6) Очень некорректное сравнение, здесь четкая доработка в плане добавления очень удобной фичи, которая до сих пор отсутствует в типовом отчете.
У тебя этого нет.
Поправил работу обработки для версии ЗУП 2.5.20.3
Если в настройках указать период например год и сотрудника (уволен например 31.09.2009) и имеющего сальдо на конец октября, то расчетки выведутся только до октября, а выплаты произошедшие в ноябре декабре в расчетках не будет.
(12) странно, на тестовой базе уволил сотрудника январем, в марте сделал ему выплату, в расчетке сумма выплаты в март попала.
Спасибо, скачала отчет. Но при его запуске появляется ошибка:
{Форма.ФормаОсновная(111)}: Метод объекта не обнаружен (ЗаполненРегламентированныйПроизводственныйКалендарь).
В чем может быть причина?
а вы в какой конфигурации запускаете?
1.5.28.1
Пишет метод объекта не обнаружен(заполнен регламентированный производственный календарь) 😮 что это???
для конфигурации Зарплата и Управление Персоналом, редакция 2.5 (2.5.35.3) версии 8.2
не работает, выдает кучу ошибок по тексту модуля (перенесены процедуры в другие модули)
Отличный отчет спасибо огромное автору
чтобы работала в 8.2 чуть чуть подправила
1 ошибка
{Форма.ФормаОсновная.Форма(111)}: Метод объекта не обнаружен (ЗаполненРегламентированныйПроизводственныйКалендарь)
Если ФормированиеПечатныхФорм.ЗаполненРегламентированныйПроизводственныйКалендарь(НачалоПериода, КонецПериода) тогда
Исправление
ФормированиеПечатныхФорм.заменить на ФормированиеПечатныхФормЗК.
2 ошибка
{ОбщийМодуль.ТиповыеОтчеты.Модуль(751)}: Метод объекта не обнаружен (ПолучитьПараметрыИсполненияОтчета)
ПараметрыИсполненияОтчета = ОтчетОбъект.ПолучитьПараметрыИсполненияОтчета();
Исправление в Модуле объекта создать функцию
Функция ПолучитьПараметрыИсполненияОтчета() Экспорт
СтруктураНатроек = Новый Структура(«МинимальныйПериодОтчета», «Месяц»);
Возврат СтруктураНатроек;
КонецФункции
3 ошибка
{ВнешнийОтчет.РасчетныеЛисткиОрганизаций.МодульОбъекта(1115)}: Метод объекта не обнаружен (ОписаниеПериода)
СтрокаНачисленияУдержания.НачисленияУдержанияПериодНачисления = УправлениеОтчетами.ОписаниеПериода(Начисления.Строки[Сч].ПериодДействияНачало, Начисления.Строки[Сч].ПериодДействияКонец);
Ипсравление
во всём модуле заменить
УправлениеОтчетами. на УправлениеОтчетамиЗК.
При выборе работника тоже ошибка исправляется
заменой ПроцедурыУправленияПерсоналом. на ПроцедурыУправленияПерсоналомПереопределяемый.
класс спасибо
Что за ошибка? Если выбрать период год, а сотрудник уволился скажем в сентябре, то дальнейшие расчеты не попадают (в результат)
Огромное спасибо!!
ну что я могу сказать: на упп 1.3.22 не работает — кроме начального сальдо и конечного сальдо никакие данные не выводятся в отчет. Видимо структура метаданных не та… МОжет подскажете, что подшаманить можно, чтоб заработало на упп 1.3.22 или может кто подскажет, где можно взять аналог, работающий для упп 1.3.22?…. Заранее огромное спасибо!!!