<?php // Полная загрузка сервисных книжек, создан 2025-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) echo77, Не хотелось нагромождать и превращать в СППР, конфигурация создана на основании принципа простоты и понятности любому пользователю.
Факт время рассчитывается автоматически?
(3) Информаудитсервис, Да, после установки галочки выполнено.
Автор, скачал вашу программу и она не работает как заявлено.
Можете ко мне подключиться и посмотреть, что не так !?!?!?!
(5) PavelZnaikin, Что именно не получается?
(6) PavelZnaikin, Попробуй скачай по новой, перезалил последнюю версию.
Так, чтобы скачать надо снова платить, можете мне на почту отправить
(8) PavelZnaikin, Вроде ссылка месяц действует, по которой скачивал.Попробуй, если не получится скину на почту.
(9) Уже пробовал, скачать по ней можно только один раз.
(10) PavelZnaikin, куда кинуть?
(11) в личку ящик сбросил
(12) PavelZnaikin, Сбросил.
А почему вкладка «Текущие задачи» не отображает задачи. Их можно увидите только на вкладке «Все задачи»
http://screenpresso.com/=lgmmb
(14) PavelZnaikin,
1)
Текущие задачи: задачи со статусами Новая, Утверждена, В работе, Выполнена
Закрытые задачи: задачи со статусом Закрыта по текущему пользователю.
Нераспределнные задачи: задачи со статусами Новая и Утверждена, но без исполнителя.
Все задачи: задачи во всеми статусами по всем исполнителям.
2)
Или не указан исполнитель. Текущие задачи отображаются только по исполнителю.
Все это настроено. Можете ко мне по тимвиверу подключиться и глянуть
(16) PavelZnaikin, Значит не связал пользователя с исполнителем, зайди в спр пользователи, настройки пользователя, выбери основного исполнителя.
(17) Скинул вам в личку архив с одной задачей. Посмотрите, что там не так?
(18) PavelZnaikin, Имя пользователя в конфигураторе должно соответствовать имени пользователя ИБ.
Спасибо
А какой функционал заложен в кнопку «Ознакомиться с задачей» на вкладке «Не распределенные задачи»
(21) PavelZnaikin, Через тонкого клиента к этой базе подключается клиент и ставит самостоятельно задачи, такие задачи выделяются цветом, чтоб не упустить поставленную задачу, кнопка ознакомиться означает , убирает выделение строки, что означает, что руководитель увидел задачу.
(21) PavelZnaikin, У клиента свой интерфейс, полностью ограниченный.
(23) Спасибо!
Здравствуйте. Качнул Вашу конфу. Вот что нашел. 1. При работе через веб интерфейс. При установке исполнителя, и ознакомится с задачей — выходит ошибка о недопустимости модальных окон. 2. При нажатии на кнопку ознакомится с задачей при пустой таблице выходит ошибка о том что не найдена ссылка.
Нужен функционал по рассылке уведомлений исполнителю и контрагенту. Доделаете за вознаграждение ?
(26) Добрый день. Какая именно рассылка нужна. Данный функционал есть в конфе. Происходит рассылка при разных событиях. Например при смене статус или из задачи можно напрямую отправить письмо.
Только поставил. Спасибо, буду разбираться.