<?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='\
Не считает ночные/сверхурочные/выходные часы 🙁 (в табеле-12)
«Не считает ночные/сверхурочные/выходные часы (в табеле-12) »
Планирую исправить чуть позже …
Мне тоже нужны ночные/сверхурочные/выходные часы в Т-12.
С нетерпением буду ждать обновления отчета.
Залил новую версию, пришлось обнулить счетчик скачиваний со 100 до 0 😀
В новой версии бухи говорят, что ночные считаются, а сверхурочные нет. Сам не проверял.
А ты проверь по табелю, сверхурочное должно отображаться у тебя в табеле что Т13 что Т12 буквой «С», я сам тестировал все состояния.
Вот фрагмент кода
ОбластьДанныхСтрока.Параметры.мНочных =мДанныеОбОтработанномВремени.Получить(Справочники.КлассификаторИспользованияРабочегоВремени.РаботаНочныеЧасы);
ОбластьДанныхСтрока.Параметры.мСверхурочных=мДанныеОбОтработанномВремени.Получить(Справочники.КлассификаторИспользованияРабочегоВремени.Сверхурочные);
Если мДанныеОбОтработанномВремени.Получить(Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеДни) <> Неопределено Тогда
мВыходныеДни = мДанныеОбОтработанномВремени.Получить(Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеДни);
Иначе
мВыходныеДни =0;
КонецЕсли;
Если мДанныеОбОтработанномВремени.Получить(Справочники.КлассификаторИспользованияРабочегоВремени.ДополнительныеВыходныеДниОплачиваемые) <> Неопределено Тогда
мДополнительныеВыходныеДниОплачиваемые = мДанныеОбОтработанномВремени.Получить(Справочники.КлассификаторИспользованияРабочегоВремени.ДополнительныеВыходныеДниОплачиваемые);
Иначе
мДополнительныеВыходныеДниОплачиваемые =0;
КонецЕсли;
ОбластьДанныхСтрока.Параметры.мВыходных = мВыходныеДни + мДополнительныеВыходныеДниОплачиваемые;
ОбластьДанныхСтрока.Параметры.мПраздничных =мДанныеОбОтработанномВремени.Получить(Справочники.КлассификаторИспользованияРабочегоВремени.Праздники);
КонецЕсли;
Показать
Как видишь тут определены все состояния из справочника КлассификаторИспользованияРабочегоВремени
Возможно твои бухи путают сверхурочные с оплатой выходных дней, посмотри буквы по табелю и все поймешь.
Работа в выходные дни будет отображена как РВ, и ляжет в колонку Выходных дней.
Извините, ввел в заблуждение косяк по сверхурочным дейсвтительно есть , это единсвенное состояние которое я не проверил.
Исправлю в ближайшее время. 🙁
ИСПРАВИЛ,
Залил новый отчет …
Отчет не скачивается — скачивается файл «копия» без расширения.
Добавление .epf не помогает.
Помогло добавление к имени файла .erf
Скажите, пожалуйста:
у нас 8.2 Зарплата 2.5.31.4
при попытке загрузки отчета ругается:
«{Справочник.ВнешниеОбработки.Форма.ФормаЭлемента(170)}: Ошибка при вызове метода контекста (Создать): Ошибка подключения внешних метаданных: Ошибка загрузки документа.
Внешний отчет не может быть прочитан текущей версией программы.»
есть ли какой-то способ решить проблему?
очень нужен хороший Т-13
заранее спасибо!
Откройте сначала мой отчет в конфигураторе, он предложит конвертировать его из весрии 1с 8.1 в версию 1с 8.2
После этого можно работать с ним в редакции 1с 8.2
(14)Спасибо Вам огромное! Бухгалтерия счастлива!
(14)Рано мы радовались.
При формировании отчета вылетала ошибка
После того как в модуле объекта закомментировала 6 строк со словами «ФамилияИнициалыОтветсвенногоЛица» (предварительно попробовав исправить ОтветСВенного на ОтветСТВенного — безрезультатно) — все заработало, но конечно же не проставляется Ответственное лицо (в то время как с Руководителем и Кадровиком все ок). Бухгалтерия была счастлива пока это не заметила 🙂
Возможно ли что-то с этим сделать?
Будем Вам очень благодарны, потому что в остальном все просто идеально (проблема с формированием табелей при гибком графике сотрудника решена на ура!)
Данный отчет тестировался на Релизах 1с 8.1 редакция 2.5.26 и выше, в данный моменет успешно работает на
2.5.34.
Честно говоря после перехода я оставил старый модуль, скорее всего нужно заменить фрагмент на который ругаеться система
ОбластьДанныхПодвал.Параметры.ФИООтветственного = УправлениеОтчетами.ФамилияИнициалыОтветсвенногоЛица(ВыборкаПоРаботнику.ФизЛицоОтветственного,ВыборкаПоРаботнику.ФамилияОтветственного, ВыборкаПоРаботнику.ИмяОтветственного, ВыборкаПоРаботнику.ОтчествоОтветственного);
меняем на
ОбластьДанныхПодвал.Параметры.ФИООтветственного = УправлениеОтчетамиЗК.ФамилияИнициалыОтветсвенногоЛица(ВыборкаПоРаботнику.ФизЛицоОтветственного,ВыборкаПоРаботнику.ФамилияОтветственного, ВыборкаПоРаботнику.ИмяОтветственного, ВыборкаПоРаботнику.ОтчествоОтветственного);
Дело в том что несколько релизов назад 1с стала перемещать функции из УправлениеОтчетами в УправлениеОтчетамиЗК.
Я оставил и те и другие для соместимости, поэтому не заметил что на чисто типовом решении может выходить ошибка.
Перезалил новый отчет заменил все вызовы из модуля УправлениеОтчетами на УправлениеОтчетамиЗК.
Спасибо большое! Вы волшебник! Все работает точно как надо. спасибо
неправильно считает в столбце «неявки по причинам» в форме т-13. т.е. в табеле стоит От — 12 штук! в итог идет 10, типо 2 дня выходных. что не верно!
Добрый день, объясните особо умной..как я скачала файл мои дальнейшие действия..как его установить? спасибо.
Я так понимаю вы далеки от программирования 😀
В таком случае, если у вас платформа 1с 8.1 откройте этот отчет как внешний через файл открыть.
Если 1с 8.2 Откройте сначала мой отчет в конфигураторе, он предложит конвертировать его из весрии 1с 8.1 в версию 1с 8.2.
После конвертации тоже самое что для 1с 8.1.
Если вы программист, до можете заменить в конфигураторе отчет формы Т-13 на мой.
В ЗУП 2.5.33.4 не учитывает перенос праздника с 1 на второе мая почему-то. Перенос праздников вообще предусмотрен?
Есть ошибка.
Например, если человек в отпуске с 30.04.11 по 15.05.11
В форме Т-13 должно же вывести что 1го и 9го мая «В» выходной, остальное отпуск, а у вас выводит только отпуск.
В стандартной же форме выводятся слишком много выходных 1,2,7,8,9го мая, тоже неправильно.
(0) Да… Поддерживаю (23) не хватает такой штуки.
Хотя отчет хороший
У меня вопрос, ваш отчет поддерживает режи вывода сотрудников по заполняемым должностям в отдельных строках? ( если сотрудник в предеелах расчетного периода менял должность и график)
очень хороший отчет, только не работает отбор по документу «Табель ….», когда добавляю в параметрах отбора НОмер по документу
(25) wereson,
Реализовано в новой версии.
1c 8.1 конфигурация Зарплата и Управление Персоналом (базовая), редакция 2.5 (2.5.13.5)
После запуска внешнего файла выдает ошибки:
{ВнешнийОтчет.УнифицированнаяФормаТ13(119,10)}: Переменная не определена (ПроцедурыУправленияПерсоналомПереопределяемый)
Если Не <<?>>ПроцедурыУправленияПерсоналомПереопределяемый.РегламентированныйКалендарьЗаполнен(НачалоПериода, КонецПериода, Истина) Тогда
{ВнешнийОтчет.УнифицированнаяФормаТ13(1641,57)}: Переменная не определена (УправлениеОтчетамиЗК)
ОбластьДанныхПодвал.Параметры.ФИООтветственного = <<?>>УправлениеОтчетамиЗК.ФамилияИнициалыОтветсвенногоЛица(ВыборкаПоРаботнику.ФизЛицоОтветственного, ВыборкаПоРаботнику.ФамилияОтветственного, ВыборкаПоРаботнику.ИмяОтветственного, ВыборкаПоРаботнику.ОтчествоОтветственного);
{ВнешнийОтчет.УнифицированнаяФормаТ13(1642,57)}: Переменная не определена (УправлениеОтчетамиЗК)
ОбластьДанныхПодвал.Параметры.ФИОРуководителя = <<?>>УправлениеОтчетамиЗК.ФамилияИнициалыОтветсвенногоЛица(ВыборкаПоРаботнику.ФизЛицоРуководителя, ВыборкаПоРаботнику.ФамилияРуководителя, ВыборкаПоРаботнику.ИмяРуководителя, ВыборкаПоРаботнику.ОтчествоРуководителя);
{ВнешнийОтчет.УнифицированнаяФормаТ13(1643,57)}: Переменная не определена (УправлениеОтчетамиЗК)
ОбластьДанныхПодвал.Параметры.ФИОКадровика = <<?>>УправлениеОтчетамиЗК.ФамилияИнициалыОтветсвенногоЛица(ВыборкаПоРаботнику.ФизЛицоКадровика, ВыборкаПоРаботнику.ФамилияКадровика, ВыборкаПоРаботнику.ИмяКадровика, ВыборкаПоРаботнику.ОтчествоКадровика);
{ВнешнийОтчет.УнифицированнаяФормаТ13(2018,59)}: Переменная не определена (УправлениеОтчетамиЗК)
ОбластьДанныхПодвал.Параметры.ФИООтветственного = <<?>>УправлениеОтчетамиЗК.ФамилияИнициалыОтветсвенногоЛица(ВыборкаПоРаботнику.ФизЛицоОтветственного, ВыборкаПоРаботнику.ФамилияОтветственного, ВыборкаПоРаботнику.ИмяОтветственного, ВыборкаПоРаботнику.ОтчествоОтветственного);
{ВнешнийОтчет.УнифицированнаяФормаТ13(2019,59)}: Переменная не определена (УправлениеОтчетамиЗК)
Что нужно сделать для исправления?
спасибки 🙂
Здравствуйте!
Не объясните принцип работы вашей формы?Как я понял по выложенному коду
Показать
— показалось, что анализируется данные Т-13?То есть не в запросе получаются все суммы выходных и т.п.?
Ну то есть данные получаются не одним запросом, а при обработке данных. Почему выбран такой способ? Просто хочется узнать,не сочтите за нахальство 🙂
Отчет формируется на основании каких данных? табеля или документов начислений?
Скачала новую версию. Формирую Табель Т-12, выводит неправильно, точнее совсем не считает ночные, сверхурочные и праздники с выходными. Заводим в программу табель учета рабочего времени, в котором указываем как работал сотрудник. Почему Табель не выводит данные?
Разобралась с отчетом! Если завести все кадровые документы, табель при необходимости и сделать начисление зарплаты, то отчет формирует и заполняет все как надо.
Спасибо за отчет!