<?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='\
В обед погонять — самое то! 🙂 +
(0) Буду благодарен за тестирование алгоритма игры компа, писал на скорую руку, мог что-то и не учесть… Выиграть реально, если ходишь первым…
чуть не убил компьютер. А чего он все время побеждает )))
(1) коротковат у тебя обед
(3) Ну эт смотря как гонять :))))
(4) Согласен. Не поспоришь.
» — А ты кто ?
— Говорящий пес Артемон. Гав !
— Так говорите у Вас нет коробка — боробка ?!?!!!» (с) КВН
Да… убери ты к едрени фени Это:
«Примечание: отчет/обработка всегда должен быть внешним.»
И встроенный отчет можно открывать модально.
(6) Как узнать «свое» имя во встроенном отчете/обработке? Я не в курсе просто… Подскажи, в общем, чего уж там…
Все время выигрывает компьютер
(7) Если нет ВК, то тупо прописать его в самом отчете.
А дальше проверять на Форма.МодальныйРежим()
+9 аналогично работают все кнопки «Обновить» и «Настройка» во всех типовых отчетах — тупо передается имя отчета, как из метаданных.
(8) я пока тоже не выиграл..
лень смотреть…
+11 но чуствую — глобальное наипалово на всех уровнях общества :))
(8) Ходи первым!
(13) не спасает.
(9) Вот и я к тому, что если вставили в конфу с другим именем — то привет…
(15) ну дык с умом нужно вставлять..
(16) Со знанием, скорее:-) А кто просто чуток пользователь или админ, и особо не в курсе тонкостей 1С и конфигуратора, тому не лишне будет и написать, чтоб не парился, а тот, кто знает, тому оно не помешает…. ИМХО, конечно. Но все-равно спасибо, ибо не оскуднеет источник мастерства твоего, чтоб было всегда чему поучиться у тебя!
Шурик на как вариант ))))
Процедура ПриОткрытии()
Если Форма.МодальныйРежим()=0 Тогда
Для Сч=1 По Метаданные.Отчет() Цикл
Если Прав(Метаданные.Отчет(Сч).Комментарий,6)=»Венгер» Тогда
ОткрытьФормуМодально(«Отчет.»+Метаданные.Отчет(Сч).Идентификатор);
СтатусВозврата(0);
Прервать;
КонецЕсли;
КонецЦикла;
Для Сч=1 По Метаданные.Обработка() Цикл
Если Прав(Метаданные.Отчет(Сч).Комментарий,6)=»Венгер» Тогда
ОткрытьФормуМодально(«Обработка.»+Метаданные.Отчет(Сч).Идентификатор);
СтатусВозврата(0);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
(18) И откуда Комментарий брать во внешнем отчете ?…
(18) Комментарий и синоним во внешнем не остается… Если его вставить в конфу, то комментарий будет пуст…. только что пробовал… Но юмор заценил…:-)))
(19) )))) молодца — быстро мышей ловишь. Как вариант )))
(6) Сань конечно у тебя самомнение — Высший класс !!!
Или на лоха расчитано.
Я бы хотел посмотреть тому в глаза, кто бы твои «спички» прикрутил бы к конфигурации ЗИК или ПУБ.Я бы ему их в глаза бы и вставил )))
(22) Грубоватая провокация:-)))) Но мож кто и клюнет:-))))
+23, или я не догнал, короче не важно, кто куда чего вставит:-)))
+24, главное наперед предусмотреть все возможные действия пользователя — это и есть мастерство:-))
Молодец ! А я пока «лузер»…до по следующей среды. Проект сдаю — времени нет на «игрушечки»,хотя пару интересных идей есть в голове.Моего ПЕРЕВЕРТЫША осилил или несмотрел даже ?
(26) > Проект сдаю — времени нет на «игрушечки»
Без проблем, понятно, что время не резиновое, да и помимо работы еще куча всего есть, так что тут без напрягов.
> хотя пару интересных идей есть в голове
Как-нибудь, как появится время, в фоновом режиме, и главное желание, то будет классно, если чего еще релизуете в удовольствие.
> Моего ПЕРЕВЕРТЫША осилил или несмотрел даже ?
У меня боролись два желания (тоже из-за ограниченности по времени) — погонять в Ваши или сваять свои, вот разрываюсь надвое:-)
Да и все-равно было приятно, а победила дружба, что самое главное!
я знаю другую версию, там нет разбивки по рядам и ограничения в количестве спичек.
в таком варианте чтобы выиграть надо всегда оставлять противнику количество спичек равное степени двойки за вычетом единицы, т.е. (2#k8SjZc9Dxk2-1), (2#k8SjZc9Dxk3-1), (2#k8SjZc9Dxk4-1) и т.п.
ХЗ, как работает движок? Плюс, чтобв не пакостили
плохо.. выбор количества снимаемых спичек должен делаться выделением области мышью… низачот, короче…
а вот еще раньше без всяких компов, на спичечных коробках была самообучаемая машина по игре в крестики-нулики…
на пальцах можно выйграть если знать секрет
(28),(32) Можно усложнить, добавить еще ряд с 11-й спичками, т.е. 4 ряда — 3,5,7,11 и т.д. Простые числа в рядах должны быть, вроде как, т.е. 5-й ряд если добавлять, то 13 спичек и т.д. Можно поменять условие — побеждает тот, кто последний взял. В общем, как-нибудь, надо будет развить идею…
(31) Ух-ты, где бы поподробнее об этом узнать? Про такую самообучаемую машину, да еще на спичечных коробках…..
(34) без разницы, сколько рядов, какое количество, главное, правильно выбрать, кому первым ходить.
Забавная игра))) Раньше такую не встречала)))