<?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. Не сортирует список физических лиц по алфавиту
2. Список физических лиц появляется только после записи документа
(1) Спасибо за отзыв. Посмотрю, что можно сделать
(1) Внёс исправления
Да, функционал востребован. Установили на ЗКГУ 3.1.4, платформа 8.3.10.2639, клиент-сервер, SQL. Работает, но очень медленно, с включенным фильтром по текущему сотруднику перемещение по списку, а также переключение между списком сотрудников и списком начислений и обратно происходит очень долго — примерно 20 сек(((
(4) 3.1.4 только сегодня установил. Будем посмотреть
Скачал версию 1.2. Но сортировка почему-то не работает?
Также не работает пока не запишешь документ!
У меня ЗУП 3.1.5.212 платформа 8.3.10.2699
В конфигураторе вижу вроде есть в контекстном меню «Сортировать по возрастанию» и «Сортировать по убыванию»
На 3.1.6 ожидается вариант? Или эта заработает?
(10) на 3.1.6 работает.
Но нет возможности отсортировать физических лиц.
(9) (11) Починил сортировку
(12) А в личку можете скинуть исправленный вариант?
(13) Скинул
День добрый! На релизе Зарплата и управление персоналом, редакция 3.1 (3.1.8.112) перестала работать
(15) Добрый! Еще не ставил 3.1.8, чуть позже буду разбираться.
(15) Выпустил обновление для 3.1.8
(1) Попробуйте настроить глобальную сортировку таблиц в документах:
Настройки — Дополнительные настройки — оставьте одну галочку на имени сотрудника
Хорошая идея. Но еще бы итоги в документе Назначение планового начисления и цены бы не было.
(19) ок, подумаю на этим. Но после отпуска ))
Поставил на 8.3.12.1685 3.19.205 — в одной базе работает, в другой ошибка — …РежимСовместимости у объекта не совпадает… (???)
(21)
а релизы у баз какие?
Платформа 8.3.12.1685 ЗКГУ 3.1.9..205
В первой базе тоже пропало и больше не встает
(23) Ага, ясно. 205-й я еще не устанавливал. Скорее всего разрабы изменили режим совместимости конфигурации на 8.3.13.
(24), Платформа 8.3.13.1513 ЗКГУ 3.1.9.205 — работает; режим совместимости не меняли, по-прежнему Версия 8.3.12.
А как скоро будет? И какая система получения нового? Снова платить?
(26) Могу выслать в личку. Но дело в том, что я проверил, в 205-м режим совместимости не изменился, так что дело не в этом.
У Вас конфа на поддержке? Можете проверить её свойства?
(27) Установил 8.3.13.1513
В конфе режим, как у Вас — 8.3.12
(28) И все равно не работает? Можно скрин ошибки?
Может, файл укосяченный? Сбрось свежий
(30) В ЛС
(31) Встало без проблем, но итогов по колонкам нет
(32) Итоги выводятся в форме документа, для печатной формы с итогами есть вот эта публикацияhttps://infostart.ru/public/458500/
Здравствуйте!
Качал давно версию 1.2.
Если это возможно — пришлите, пожалуйста, через личку свежую
для последних релизов ЗУП
(34) Отправил