<?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='\
Сделай пжл для 8.1 а то обработка под паролем. Ругается на функцию ЗначениеНеЗаполнено
Значение не заполнено! Пора уже об этом методе забывать, или код открывайте!
To Molot:
1. ЗначениеНеЗаполнено — это функция а не метод.
2. Ваши рекомендации по тому как мне писать программы я не принимаю, и мне они не интересны.
3. Обработка делалась для конфигурации УТ 10.2, в ней даже после перехода на 8.1 должна быть функция ЗначениеНеЗаполнено (смотри рекомендации на дисках ИТС). Если нужна была обработка под конфигурацию УТ 10.3 — достаточно было просто попросить. Я считаю, что это не повод для отрицательного голосования, т.к. никакой ошибки нет.
Да очень даже ничего ..
Только «понотов» бы поменьше .. типа «бегающая строка»
А так еще не плохо бы документы взаиморасчетов или кнопку на открытие ведомости по взаиморасчетов по текущим параметрам
to German: спасибо за комментарий, пожелание по отчетам принял к сведению, будем добавлять
1. Все через 1С написано. Товара в Заказе 6шт, получено 5. Пишет «50% Получено частично».
2. Структура подчиненности заказа интересно для чего нужна. Чтобы базу повесить? А, не, я понял, чтобы СКЛ продать.
3. Я всегда знал, что никто в документе долг смотреть не будет. И вот свершилось !!! Написали обработку для просмотра долга в документе !!! САП в панике !!!
П.С. А почему она называется АСП-Днепр, а не АСП-Днепр-Волга-Тигр-Ефрат. Пожалуйста исправьте название.
НЕ могли бы Вы подсказать обработка платная? У меня ни одного заказа не отображается.
обработка платная, но в этой версии должно показываться 10 заказов.
У меня ничего не отображается. Почему бы Вам не сообщить стоимость обработки и не указать как ее приобрести здесь?
потому что те кому обработка нужна, обычно в приват обращаются с такими вопросами. Продавать через infostart не собираюсь.
Минус однозначно за «обработка платная … Продавать через infostart не собираюсь». Вообще, рекомендовал бы суппорту такое удалять без колебаний. Те, кто такое пишет, либо кидалы, ищущие нубов, либо жмоты, боящиеся кинуть пару wmr на развитие портала, который их пиарит.
(нулевой планете)можешь удалять, твое мнение мне глубоко … а делать наценку на обработку ради вашей прибыли я не буду. У меня не одна компания купила монитор заказов, и никого я не кидал. и ты бы про пиар помолчал.
Класная обработка, спасибо пригодилась!
kak to vse pusto
Сколько стоит, куда оплачивать?
по вопросам покупки пишите на vsmokvin@gmail.com