<?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='\
Скриншот зачет )))
Как раз на прошлой неделе по командировкам в 1С писал — пока молчат 🙁
…
Начало хорошее. Только табель Т-13 должен формироваться разный не только в случае перевода сотрудника в другое подразделение, но также и на другую должность.
Спасибо за работу.
zup_tptu!
Поговорил сегодня с нач кадрового отдела. Говорят по должности табель не кто не формирует, да и в типовом отбор по должности отсутствует. Может огород городить с должностью нет необходимости? Или есть?
Возможность формировать с разбивкой по должностям была бы не лишней, хотя огород, наверное, нагородится неслабый.
У нас один сотрудник в середине месяца сменил должность, потом два раза был в командировке и в конце месяца вышел в отпуск. В отчете по нему косячок: в колонках «неявки по причинам» задваиваются дни/часы по кодам К и ОТ. Пока нет возможности покапаться в коде отчета, но предполагаю что это (1) из-за двух командировок или же (2) из-за смены должности.
SteiganX!
1) Задваивается мой отчет или типовой?
2) Опиши периоды кадровых приказов: с 1 по 5 — Я, 6-7 К, 8-15 Я и т.п.
3) Расчетные документы, которые были проведены в этом месяце по этому сотруднику
4) Проверь совпадают ли периоды расчетных и кадровых неявок.
1) Проблема именно с «УнифицированнаяФормаТ13 MAG 14 08 2009 ЗиУП 2_5_15», с типовым по «ОТ» все ок, ну а «К» не выводится вовсе.
2) Период — апрель 2009 (пятидневка — 22 раб.дня), сотрудник принят давно. Кадровые документы:
1. 13.04.2009 0:00:01 — Кадровое перемещение организаций — с 13 — смена должности.
2. 13.04.2009 9:39:34 — Командировки организаций — с 14 по 14 (1 день)
3. 13.04.2009 13:39:34 — Возврат на работу организаций — возврат 15
4. 20.04.2009 14:33:26 — Командировки организаций — с 22 по 24 (3 дня)
5. 21.04.2009 10:26:05 — Возврат на работу организаций — возврат 25
6. 27.04.2009 15:16:29 — Отпуска организаций — 29 по 08 мая (2 дня в апреле)
3) Расчетные документы:
1. 16.04.2009 0:00:00 — Оплата по среднему заработку — 14-14 апр (1 день)
2. 22.04.2009 12:01:10 — Премии работников организаций — премия за 4 квартал 2008
3. 27.04.2009 0:00:00 — Оплата по среднему заработку — 22-24 апр (3 дня)
4. 27.04.2009 16:22:30 — Начисление отпуска работникам организаций — 29 апр-08 мая (2 дня в апр.)
5. 30.04.2009 23:59:59 — Начисление зарплаты сотрудникам организаций:
5.1. Оклад по дням — старая ставка — 8 дней
5.2. Оклад по дням — новая ставка — 8 дней
4) Вроде все совпадает
Ну и, соответственно, в отчете «УнифицированнаяФормаТ13 MAG 14 08 2009 ЗиУП 2_5_15» выводится: К 8(64), ОТ 4(30)
Еще уточню: 13.04 произошло перемещение с изменением и должности, и подразделения.
чел чемто гитлера напоминает :)…
Подскажите!!! Формируя этот отчет по сотруднику, я так и не вижу двух строк по сотруднику, который перемещался у меня по подраздлениям, а все также одна строка в которой указаны все дни работы и если выбираю «выводить с разбивкой по подразделениям» он всего лишь делает одно и то же только с разными подразделениями только и всего, а где же отдельно у каждого подразделения по этому сотруднику количество только в этом подразделении отработано никто не знает и как проверить!!! Это нужно мое мнение, во всяком случае на практике встречаются личности которые требуют такую разбивку. Спасибо!!!
Я правильно поняла, кадровое перемещение сотрудника из одного подразделения в другое учитывается только тогда, когда ставим отбор по конкретному подразделению? Возможно ли с помощью вашего отчета получить табель по всему предприятию в разрезе подразделений с учетом кадровых перемещений сотрудников из одного подразделения?
из одного подразделения в другое?
До момента проведения бухгалтерских документов начисления зарплаты Т13 формируется по кадровым документам. После проведения — по бухгалтерским.
Но всё одно — это недоработка у 1с, что кадровые перемещения из подразделения в подразделение не отражаются в Т13. ОДНАКО! И в этой обработке — НЕ ОТРАЖАЮТСЯ ! Вот тебе и скриншотЪ….
Те, кому нужны гибкие отборы, нормальный вывод должностей и т.д.: посмотрите мою разработку (http://infostart.ru/projects/3405/) . Там всё должно считаться нормально. Корректно отрабатываются ВСЕ кадровые перемещения и изменения графиков. Корректно (относительно введённых данных, конечно) рассчитываются ВСЕ отклонения (как кадровые (план), так и расчётные (факт)).
Увы, разработка в первоначальной версии была выложена здорово давно, и её. похоже, просто мало кто замечает.
Мде.. похоже клиенты с табелем не только у меня активизировались))
Автору спасибо.
На новом релизе (2.5.18.2) не пашет… Хотя в типовом командировки по прежнему включаются в отработанное время. В 1С ответили странно туманно:
«Да, такое поведение отчета Т-13 отделом разработки признано правильным, поскольку время командировки является рабочим временем и в остальных формах учета времени не относится к неявкам. В частности, в более подробной форме Т-12 как раз командировки явно не включены в раздел неявок (последние там перечислены), т.е. на самом деле командировки неявками не являются и, по-видимому, в текст описания неявок в Т-13 попали по ошибке.»
Т.е. сослались на то, что они так делают в Т-12, хотя рекомендациях по заполнению различие между ними не делается. При этом, если верить постановлению Госкомстата РФ №1 от 05.01.2004:
«…При отражении неявок на работу, учет которых ведется в днях (отпуск, дни временной нетрудоспособности, служебные командировки, отпуск в связи с обучением, время выполнения государственных или общественных обязанностей и т.д.), в Табеле в верхней строке в графах проставляются только коды условных обозначений, а в нижней строке графы остаются пустыми….»
Т.е. служебные командировки это все-таки неявки!!!
Спасибо за отчетик! :{}
Нашла ошибочку: когда на дату кадрового перемещения приходится не явка, а какое-нибудь отклонение (например сотр в это время был в отпуске) то отчет это отклонение отображает не верно. А именно продляет его до начала следующего отклонения, либо до конца месяца.
А так же присоединяюсь к замечанию ptaha
Извиняюсь. Оказывается эта ошибка и в стандартном отчете есть. 🙁
Не учитывается дата возврата кадрового перемещения.
Спасибо за отчетик!
Спасибо! Хороший отчет!
Спасибо, работает.
Спасибо. Очень здорово!
Хорошая разработка помогла по работе! Большое спасибо автору за этот Табель.
(10) bns, ваще ужас =)
Я бы сменил изображение, времена изменились, можно и за экстремизм попасть %)
Для зуп 8,3 есть такой отчет?
В конфигурации если было кадровое перемещение он не видит. ставит последнее место работы. Отдел кадров это не устраивает
(28) для ЗУП редакций 3.3.х, 3.4.х и 3.5.х этот отчет я не делал.