<?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) Сейчас поравлю, этот глюк вызван тем, что в программе используются переменные «Ширина» и «Высота» совпадающие по названию со свойствами формы.
(1) Исправил
Интересно, а есть ли 1С: Сутенёр? Хотя бы простенький
(4) Про сутенера не слышал, а вот 1С:Публичный дом как-то на Мисте обсуждался. Сошлись тогда на том, что такая разработка нацелена на неосвоенный сегмент рынка и принесет своему создателю нехилый профит.
какой кнопкой ставить флажек?
(6) флажка пока нет, в ближайшее время доделаю
ждем. без него неполноценная игра.
(8) Добавил установку/снятие флажков из контекстного меню в клетке.
объясните подробнее как ставить флажки.
(10) щелкнуть правой кнопкой мыши на ячейке и выбрать в меню пункт «Пометка»
если флажка в ячейке нет, он будет установлен
если флажок уже установлен, он будет снят
там есть пункты меню: вырезать, копировать и др. но пункта «Пометка» нет. Может файл на сайте не обновили после доработки?
Есть пункт меню «вставити примітку» у меня на укр. но поле не активно.
(12) проверил, файл обновлен
вот добавил картинку, там показано как устанавливать отметку
(13) Нашел ошибку, обновил файл, теперь можно скачивать
(15) Для слова «Пометка» не был введен украинский эквивалент, поэтому пункт меню не создавался если у пользователя был установлен украинский язык
создался, называется «помітка» 🙂 жаль, что не на клавиатуре, но покатит.
вместо таких флажков можно просто красную клетку например, нагляднее будет, ато бледненькие.
(0) красная клетка обычно появляется на взорванной бомбе (это как бы кровь премешанная с мозгами сапера-неудачника :), не хотелось бы этот цвет применять для обычной клетки, но что-нибудь придумаю
может синий цвет, или шрифт покрупнее сделать
а назначить какую-нибудь кнопку на флажек? Был бы удобнее.
Еще для поднятия интереса было бы не плохо игру с отсчетом времени и с возможностью установки личного рекорда.
я вообще фанат сапера
(21) я тоже люблю эту игру, + у нее не очень сложный но интересный алгоритм, поместился приблизительно в 200 строчек 1Сного кода, остальное — примочки
все хорошо, только под 8.2 не открывается
(20) Написал «Сапёра» с отсчетом времени и с возможностью установки личного рекорда, и флажок ставится правым щелчком мыши.
http://infostart.ru/public/62411/