<?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='\
Супер вообще!!!! Только вот бомберу бы имя задавать :))))
Да можно и задать…
Мастер!
по окончании уровня бомбер продолжает летать над пустым городом
(4) Есть такое… поправлю..
Спектрум форэва!
(4) Обновил.. щас ужо не летает 🙂
в вайне от этерсофта не пре 🙁 тут же вылетает (конфликт самого вайна и формекса). В виндовом терминале не смог перехватить клавиатуру.
Но идея — супер!
(8) А формекс какой версии?
Попробуй явно воткнуть ПерехватКлавиатуры(НовоеЗначение) через объект Сервис.
При нажатии (-) скорость растет, при (+) падает. Нелогично
(10) Эт, чтоб лишний раз не баловались..
🙂
Нет описания кнопки Esc :). Нет паузы — «Начальник пришел».
(12) ок.. ща будет.
+13 Обновил..
Есть теперь и пауза и «защита» от начальства, описание кнопок управления, ну и скорость верная.
все отлично. а можете сделать чтобы бомбы летели не вертикально, а по пораболе, то есть скорость горизонтальная будет постоянная(равная скорости самолета), а скорость вертикальная будет увеличиваться по мере приближения к земле.
((Формулы, описывающие свободное падение v=gt, h=gt2/2, v2=2gh,
где v — мгновенная скорость тела; t — время падения; h — высота, с которой падает тело; g=9,8 м/с2)).
Тогда будет труднее попасть, а так мышку поставил над домом и сразу попал.
Но вообще отлично.
(15) да можно попробовать, там бомба ни к чему не привязана — просто изменяются атрибуты реквизита..
еще хотелось сбрасывать бомбы, не дожидаясь пока предыдущая упадет на землю. То есть одно нажатие пробела — одна сброшенная бомба.
(17) Неее… тут в этом и весь смысл — самолет снижается всё время и пока бомба не долетит до конца, новую сбросить нельзя..
А так было бы — зажал пробел и стер с лица земли город за один проход…
Це же прототип игрухи с спектрума.
+18 Нужно просто снижение побольше выставить — тогда врезаться в город будешь чаще и тут уже важна будет меткость бомбометания..
Класс! 🙂
а можно добавить табло результативности, типа: уровень, количество домов(кубиков), количество сбросов бомб, количество попаданий и процент попаданий.
(21) хорошо…доделю.
А вот, по-поводу параболлы…
У меня для скорости вычисления попадания,после бомбометания сразу отсеиваются все дома, и добавляется в список попаданий только те дома, в которые попадает бомба, и потом в полёте бомбы сравниваются вертикальные координаты только этих домов и бомбы…
В противном случае, нужно было бы обходить каждый дом и сравнивать с ним..
Хотя… попробую в понедельник.
Что-то подобное пробовал на фокспро 2.6, ещё в досовском варианте, лет этак мнадцать назад.
(23) Я тоже вытер слезу по фокспро 2.6.
После того, как нажал на Enter и восстановил окошко — пауза не отрабатывает. Не выводит из паузы.
вообще пауза не работает 🙁
(25) так и было задумано…
по ентеру — скрытие, потом восстанавливаешь и жмешь паузу..
(26) всмысле ?
(27,28) Ну вообще не работает… я ее жму, а эффекта — ноль…
компутер: ноут Dell inspiron 1501, на борту Vista Home Basic
(29) можешь в коде написать
Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО)
Сообщить(КодКлавиши);
и посмотреть, равент ли он 19.
Если не равен, то в коде поменять на любой другой подходящий код в этом месте
ИначеЕсли КодКлавиши=19 Тогда
когда открываю бомбера и нажимаю любую клавишу 1с вываливается. Оказывается при открытии «гРФорма=СоздатьОбъект(«Общие.Форма.Привязка»);»
не создается, формекс загрузился , в чем проблема?
(31) Это тут вообще ни коим боком.. там всё в попытку обёрнуто.
Нет 1с++ или соответствующего класса — нет и привязок формы..
ЗЫ: Формекс какой версии?
версия 2.0.5.92
в том месте он в исключение уходит
(33) Так и должно быть.
Это никак не влияет на «падение» 1с-ины..
Помимо формекса, другие ВК есть?
Народ, у меня ошибка сразу идет, «РасшФ.УстановитьФорму(Форма); Значение не представляет агрегатный объект (УстановитьФорму)», что не так ?
Судя по коду «ЗагрузитьВнешнююКомпоненту(«formex.dll»)» проскакивает без нареканий.
Все, разобрался, оказалось formex надо было в базу класть, а не в BIN.
(36) вовсе не обязательно, в бине тоже найдет.
уже все закомментировал — все равно
(35) там ошибка в коде.. качай последнюю..
(37) Найти то нашел, тока вот не заработал.
нашел , в бине валялся новый формекс а в каталоге старый . Видимо со старого грузился
(39) после того как DLL перекинул в каталог базы, пока ошибок никаких не было )
(38) На вкладке «О программе» какая версия формекса светится ?
В глобальнике, или еще где нет случаем Сервис.ПерехватКлавиатуры(0); ?
(42) Првильно, ибо при первом запуске формекс загрузился, а я вот забыл там в исключение воткнуть РасшФ = СоздатьОбъект.. вот и ругалось на «нет метода»
ОФФ Вопрос автору, как вы думаете в семерке можно сделать что-то вроде С/Pascal (нужное зачеркнуть) robots?
(45) при желании можно всё.
(46) Я как то пробывал это сделать, уперся в распараллеливание работы нескольких алгоритмов.
(47) многопоточности в 1с нет.. можно только эммулировать, делая несколько сеансов..
+48 либо так, например:
http://avb1c.narod.ru/?=a20
(49) Это через функцию на форме?. Если да то я так и делал, предполагалось что модули роботов во внешних обработках. Эти обработки запускались внутри функций расположенных на форме, но 1С сказала что так делать нельзя :). И я это дело забросил. Может имеет смысл по другому сделать подключение модулей роботов?
(50)Открывать форму из формул диалога можно, либо в ложном закрытии формы, либо использовать метод формекса, который «лечит» это.
(51) Ага, спасибо
РасшФ.ОбработкаОжидания(«БомберЛететь»,СкоростьБомбера);
Поле агрегатного объекта не обнаружено (ОбработкаОжидания)
— FormEx.dll стоит… Ошибка является после нажатия, к примеру, пробела…
Все, ПРОСТО обновить до последней версии ВК. Все сразу работает. Этого не было сказано в описании на первой странице. Вот и не сделал в свое время))
Надо бы добавить такой комментарий.
а еще обезьяна была кидала палку по параболе…
(55) Да много чего было.. Ща поставлю эмулятор спектрума, покачаю игрушек..
(56) Неужели с кассетника? 8)
(57) не… хотя должен быть где то..
Вот только кассетника давно нет
вот с таких сайтов и им падобных:
(58) У меня до прошлого года еще на пятидюймовых дискетах с сотню игрушек хранились. Вынес на мусорку вместе с «Пентагоном», часа не прошло, как кто-то оприходовал :))
(59) сначало ZX Spectrum 48 с Elite, а после Pentagon 128 с Lotus Esprit — были уже тогда в 3D!!! и круче GTA IV и современных симуляторов 🙂
а фантазию как развивали!!!
p.s. тогда — это в 89-93 годах 🙂
+60 а еще раньше был компутер Башкирия 32к и Хобби (вроде 64 хм…) и там на них была игра Клад — это вообще шедевр тогда был 🙂
год 87-88 вроде
+ Клевая игрулина, сразу вспоминаешь денди )))
клевая вешь, вспоминаются сразу детства, денди, геймбои))))
Замечательная игрушка на Спектруме была, жаль так ни разу не прошел уровень.
Застревал на третьем. Хотя бы загружалась минуты за две. Да и сохранения нет (вернее, при наличии дисковода была у некоторых аппаратная возможность).