<?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) Если найдете, поделитесь.
а что в этом отчете поменялось по сравнению с 2015 годом?
Есть возможность отобрать по обособленному подразделению.
(1)
Новый макет отчета
(4)
Выдаётся ошибка:
Ошибка инициализации модуля: ВнешнийОтчет.РегламентированныйОтчетСтатистикаФорма57Т.МодульОбъекта
по причине:
{ВнешнийОтчет.РегламентированныйОтчетСтатистикаФорма57Т.МодульОбъекта(79)}: Метод объекта не обнаружен (ПолучитьОписаниеТиповСтроки)
у меня ЗУП КОРП, редакция 2.5 (2.5.118.1)
Добрый день!
ЗУП 3.1.2.397, выдает ошибку:
Ошибка инициализации модуля: ВнешнийОтчет.РегламентированныйОтчетСтатистикаФорма57Т.МодульОбъекта
по причине:
{ВнешнийОтчет.РегламентированныйОтчетСтатистикаФорма57Т.МодульОбъекта(72)}: Метод объекта не обнаружен (НовоеДеревоФормИФорматов)
мФормыИФорматы = РегламентированнаяОтчетность.НовоеДеревоФормИФорматов();
(9) на 3.1 этот отчет точно работать не будет, он как минимум на неуправляемых формах, это уже из скринов видно.
(9)Там же написано, что тестилось на УПП1.3, значит он максимум будет работать на ЗУП2.5.
Вот если бы тестили на ЕРП2.Х релиза, тогда бы может и на ЗУП 3.Х он бы пошел).
Смотрите перед скачиванием номера релизов)
Заменила ОбщегоНазначения на ОбщегоНазначенияЗК, открылся, выбираю подразделение «обновить выдаёт ошибку :{Форма.ФормаОтчета2017Кв1.Форма(2296)}: Индекс находится за границами массива
Области[«П0202_»+Инд].Значение = РезультатСотр[СтрНом].Должность;
кто-нибудь знает как исправить? очень нужно. В целом по предприятию формируется, по подразделению нет
А есть эл.выгрузка?
Если исправите ошибку пришлите пожалуйста на mvm.mgp@mail.ru или напишите как исправить самостоятельно
(11) Все верно, на ЗУП КОРП не тестировалось.
(14) Выгрузка есть как в типовой форме.
Замените ОбщегоНазначения на ОбщегоНазначенияЗК
см. выше :» Заменила ОбщегоНазначения на ОбщегоНазначенияЗК, открылся, выбираю подразделение «обновить выдаёт ошибку :{Форма.ФормаОтчета2017Кв1.Форма(2296)}: Индекс находится за границами массива
Области[«П0202_»+Инд].Значение = РезультатСотр[СтрНом].Должность;»
Мне эту ошибку нужно исправить
(19) судя по всему у Вас нету людей для раздела, там отбор идет по подразделению. Если у Вас так как у нас. То нужно делать отбор по КПП.
как у нас: несколько подразделений содним кпп, которые образуют одно обособленное.
что сделал я.
Показать
где .КПП, было ссылка, где &ОбособленноеПодразделениеКПП было &ОбособленноеПодразделение
ну и ЗапросЧисл.УстановитьПараметр(«ОбособленноеПодразделениеКПП»,ОбособленноеПодразделение.КПП);
там есть несколько запросов во всех запросах нужно повторить.
(19) попалась кпп где народу мало, чтобы ошибка не выходила поменял
если сотрудник увольнялся/принимался, то нужно суммарный стаж брать, а не текущего.
и вообще почему-то формат стоит стажа два символа, т.е. максимум отчет выдаст 9.9 лет, три хотя бы надо, чтобы более 10 лет мог показать отчет цифры
{Форма.ФормаОтчета2017Кв1.Форма(2296)}: Индекс находится за границами массива
Области[«П0202_»+Инд].Значение = РезультатСотр[СтрНом].Должность;
Не отрабатывает запрос.
всем у кого есть северные, нужно дорабатывать запрос
везде, где есть ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.РайонныйКоэффициент), нужно еще добавить ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.СевернаяНадбавка)
у обычного пользователя Нарушение прав доступа! под админом открывается. что сделать?
(25)
Дать права обычному пользователю.
(26) Вы правы! а то я через ЖР полезла.
в зарплате 8.3 работает?
как заполнить отчет, если нет кнопки ЗАПОЛНИТЬ?
(29)
Отчет заполняется по кнопке Обновить.
(28)
В ЗУПе не тестировал.
УПП 1.3.96.1.
Расчетчик наш запрыгала от счастья =)
спасибо
ФЗП должен быть в тысячных, а тут полностью. И почему не все начисления попадают в отчет?
(33)
Исправил ФЗП в тысячных. При открытии отчета есть настройка выплат, входящие в ФЗП.
Шляпа… Выгрузка не работает, если открывать как Файл / Открыть… но хоть будучи открытым из общего списка рег. отчетов там может сохранять
Отчет сформировался, но на печать выводятся только 4 страницы, что делать если их больше?
(35)
Выгрузка типовая, смотрите ошибки.
(36)
Требуется доработка.