Покерок для 7.7




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

85 Comments

  1. miandrew

    ню ню, хватай плюсык

    Reply
  2. coder1cv8

    Ну ёлки! Почему под семерку-то?! Где ж её взять в наше-то время?… )

    Reply
  3. Ёпрст

    Под снеговика не интересно..

    Reply
  4. O-Planet

    Только под семерку! Снеговиков — в ацтойник…

    Reply
  5. zaic

    Любители снеговика обзавидуйтесь..)

    Только карта как всегда не прет и начальные 100 у.е. быстро кончаются…

    Вот это вещь…

    Reply
  6. Хряк

    Супер!!!

    Reply
  7. jhfrek

    Круто!!! Молодец! Ты гений!

    Плюс однозначно!

    Reply
  8. Armando

    Ух ты!))) Мне, как бывшему дилеру, вдвойне приятно шпилить в оазис, да еще и в 1ске))

    Reply
  9. support

    Впечатляет, что можно сделать в 1С 7.7, просто мастер работы с формой!

    Reply
  10. Vitek

    Ёпрст одним словом 🙂

    Reply
  11. Ёпрст

    Найдена куча ошибок, скоро кину новую версию.

    Reply
  12. NoMax

    Ага еще надо и СтрипПокерок 🙂

    Reply
  13. Ёпрст

    Исправил ошибочки, тестим дальше

    По просьбе Чучундера, добавил русские названия игр.

    Reply
  14. Cifer

    Такого в 1С я еще не видел!

    Reply
  15. JohnyDeath

    Афигеть! Вот это с формой действительно поработали! Отлично!

    Reply
  16. Shurik

    Класс!!!

    Reply
  17. Tempus

    Просто супер!!!!

    ЗЫ вот до чего доводит административный запрет на установку игр 😀

    Reply
  18. ILM

    Автор, а для 8-ки нет? 😉

    Reply
  19. Abadonna

    (18) А найти просто прогу «Покер» для винды — слабо?

    Объясните дураку: зачем игры ВНУТРИ 1С?

    Reply
  20. Ёпрст

    (18) Неа…

    (19) Не в игре дело, а в штатной возможности ловли клика мыши … может, кому и сгодится.

    А это так, баловство от безделья, пока конец квартала не подойдёт.

    Reply
  21. Abadonna

    (20) >а в штатной возможности ловли клика мыши

    Тады плюс :)))

    Reply
  22. Ёпрст

    Да и в общем, лепить в учетной программе вещи, не предназначенные для этого, тоже, иногда полезно…:)

    Xonix,шахматы,питоны,тетрисы,15-ки, даже герои на 1с написаны… У меня коллекция >50 игр где то валяется.

    Вот и «пополнил» ряды ..

    Reply
  23. Ёпрст

    (21) Один минус… В не модальной форме нужно как-то «избавится» от флажка…Пока не придумал как 🙁

    Не растягивается он за пределы формы…

    Reply
  24. Ёпрст

    Хотя нет, если правильно кинуть за многострочную часть — улетает за пределы формы. Так что, можно лепить свои кнопки, к примеру.

    Reply
  25. jhfrek

    Это действительно круто. Когда пишут игры именно на 1С. На языке которая в основном рассчитана только для бухгалтерского учёта.

    Reply
  26. AlexanderSM

    Часа три резался, впечатляет!!!

    Reply
  27. Shaman100M

    Просто нет слов. Супер!!! Так просто ловить клик мышки… флажком! Ну, я пробовал кнопкой, но она вылезает наверх все равно. Абалдеть!

    Reply
  28. const000

    ТАКОЕ оформление заслуживает плюса!!! Браво!

    Reply
  29. Ёпрст

    (27) Как бы его еще так в компаунде самом поправить, чтоб его вообще невидно было 🙂

    Пока сделал только так, чтоб текстовое поле вообще не удаляется в пофигураторе с формы. :))

    Попробуйте удалить копирайт «Ёпрст» …

    Reply
  30. Abadonna

    (29)>Попробуйте удалить копирайт «Ёпрст» …

    Удалил 😉 Но не в пофигураторе

    Reply
  31. Ёпрст

    (30) Ну, не в пофигураторе я и сам горазд…:)

    Ну вот можно же делать «плавающие окошки» в 7-ке, на синьёре есть примерчик, правда вот где применить, пока неизвестно…

    Хоткеи навешиваются и т.д…

    Вот и хотелось бы, поправить мальца компаунд, чтоб, флажок, например, вообще был невидимым, или к примеру, сделать круглую, или хотя бы трапециидальную кнопку..

    Reply
  32. JohnyDeath

    (31) Ну вот можно же делать «плавающие окошки» в 7-ке, на синьёре есть примерчик, правда вот где применить, пока неизвестно…

    А можешь ткнуть носом в этот примерчик? А применение мы найдём! 😉 (например в журнале документов открывается плавающее окошко с графом подчиненности текущего дока. Юзер клацает на один док в этом графе — в журнале он становится текущим, клацает на другой — теперь «другой» текущий)

    Reply
  33. JohnyDeath

    +(32) АЛьФ в FormEx-е делал плавающие окна, но, к сожелению, они крайне нестабильны.

    Reply
  34. Ёпрст

    (32) http://www.sinor.ru/%7Efilez/frames.ert

    вот применить, ну пока никак 🙂

    Reply
  35. JohnyDeath

    (34) прикольно… правда не более того. Оно ж плавающее только для текущего окна. А настоящее плавающее — оно ж над всеми окнами текущего приложения плавает.

    А как сделано? Я что-то не понял фишки.. (

    Reply
  36. Ёпрст

    (35) В компаунде поправлен параметр один, не помню какой уже 🙁

    Можно сравнить с любой обычной ert-кой — там сразу видно.

    Вот тоже баловался. пока добился только того, чтоб текстовое поле с формы в пофигураторе не удаляется… да и так, по мелочи.

    Reply
  37. Abadonna

    (35,36)

    «ЗАМЕНИТЬ»,»STATIC»,»1342177793″,»191″,»320″,»75″,»16″,»0″,»0″

    «©Ёпрст»,»STATIC»,»1342177280″,»274″,»21″,»39″,»13″,»-1″,»-1″

    Скорее всего два последних нуля на две минус единицы

    Reply
  38. Abadonna

    +(37) Ага! Так и есть. Так что я и пофигураторе удалил ;))))

    Reply
  39. Ёпрст

    (37) Это были мои поиски в ковырянии компаунда 🙂

    (38) Так и есть, это чтоб тект не удалялся..

    А про фреймы — там тоже изменен параметр, тоже легко ищется.

    Reply
  40. Ёпрст

    Вообще , ковырялся с параметрами в компаунде, нашел, где хранятся галки типа «невидимый» и т.д, менял всё на всё от балды…

    Пытался сделать кнопку невидимой, но чтоб событие она ловила как надо. Сначала вроде успех — кнопки нет, тыркаешь — есть событие, но кнопка тварь появилась на форме :(((

    А потом чисто случайно обратил внимание на флажок… вот собственно отсюда и родился покерок.

    Reply
  41. Abadonna

    (39) Жаль только, что нельзя заблокировать изменение самого текста. А то можно было бы демки для ламеров с непечатными словами делать 😉 А при покупке — высылать пилюлю

    Reply
  42. Ёпрст

    (41) Можно прятать в мокселе, тоже упарятся искать )

    Reply
  43. JohnyDeath

    (42) нукась, поделись идеей.

    мне оно, конечно, нафиг не надо, но ради спортивного интереса, хочется посмотреть как люди извращаются 😉

    Reply
  44. JohnyDeath

    Ёпрст, если тебе неприятно то, что мы все отвлеклись от «покерка» и вдарились в извращения над формой, ты только свистни, мы сразу отвалимся.

    Reply
  45. Ёпрст

    (43) Ну ё… Посмотри, где в в том же покерке все картинки, и куда делось всё присвоение глобальных переменных…В том числе заполнение таблицы значений самими картинками, и т.д и т.п…

    🙂

    Reply
  46. Ёпрст

    (44) Наоборот, мот еще кто чего полезного подкинет.

    Reply
  47. Abadonna

    (0) Написал бы статейку для продвинутых:

    1. Что какой флаг означает в Dialog Stream?

    2. Как что-то спрятать в мокселе?

    и т.д 😉

    Reply
  48. Ёпрст

    (48) Писатель из меня хреновый, я даже описание к игре написать не могу… да и лень впереди планеты всей 🙂

    Reply
  49. andrey314

    жжешь

    Reply
  50. Попытка1С

    Очень круто!

    Жаль что я играю только в безлимитный холдем =))

    Reply
  51. Ёпрст

    (50) Тогда нужно было бы писать игру как минимум за комп, или по сетке как-то прикручивать…

    Reply
  52. Altair777

    (22) > даже герои на 1с написаны

    А какие Герои? Меча и Магии? 🙂

    Reply
  53. Ёпрст

    (52) Да. Могу кинуть, если надо.

    Reply
  54. Altair777

    Надо!

    На почту или здесь выложите?

    Если бы еще и Линейку…. 🙂

    Reply
  55. Ёпрст
  56. Altair777

    Пасиба!

    Reply
  57. p1l1gr1m

    Это жесть как она есть, все что могу сказать.

    Reply
  58. Ёпрст

    (57) В каком смысле ?

    Reply
  59. vkr

    (58) В смысле — «Тихо, шифером шурша, крыша едет, не спеша…»

    Смена шифера на жесть… 🙂

    ——

    А вот интересно, если бы кто сляпал аналог виндовозной cards.dll, то, зная алгоритмы разных пасьянсов

    (они давно известны), можно было бы склепать 1С-ный аналог, скажем, знаменитого пакета SolSuite 2008… 🙂

    Reply
  60. Ёпрст

    (59)

    Всё можно, если лень перебороть…

    Reply
  61. kentavr27

    Впечатлило, улыбнуло 🙂

    Теперь осталось покопаться, как оно все нарисовано. С первого взгляда пока не нашел.

    Сама логика игрушки где-то упущена. Со временем (выиграл 2300$) игрушка

    начинает жутко тормозить и на цифре 2300 1С ка вывалилась с критической

    ошибкой…

    Reply
  62. Ёпрст

    (61)

    «Сама логика игрушки где-то упущена»

    Да нет там вообще логики никакой…Тупой рандом при раздаче и подсчет очков кратный 500 … всё.

    Reply
  63. motogon

    А нет, еще не добил… и это возьмем, клас, молодцы авторы!

    Reply
  64. dav405

    (20) От безделья, говоришь …

    А что тогда у эттих рюских получаться, если они НЕ безделничать?

    Их бин в полный аут … +

    Reply
  65. Ish_2

    Мама дорогая !!

    Это даже не увлечение программированием.

    Это — страсть.

    Я бы даже сказал «нездоровая» страсть.

    Reply
  66. Арчибальд

    (65) Это показательный мастер-класс с красочными иллюстрациями.

    Слушай Ёпрста (с) Чебур.

    Reply
  67. Ёпрст

    (65) Это ностальгия… по казино..

    Reply
  68. zzerro

    Ильич улыбнул 🙂 плюс однозначно

    Reply
  69. Баклага

    Пасьянчик бы, хотя бы YUCON

    Reply
  70. DarkAn

    ППЦ, где картинки? У меня крыша едет…

    Про перехват клика — идея понравилась 🙂

    их вообще штатными средствами найти можно?

    Reply
  71. Ёпрст

    (70) Конечно можно..

    Там вообше всё штатно сделано.

    Reply
  72. Ёпрст

    +71 не найдешь — кричи.. покажу..

    Reply
  73. Oleg_46

    Да, Сильная вещь. Для меня много нового.

    Reply
  74. zk96

    ……, то есть Здорово!

    Reply
  75. vamleshka

    Ну чувак ты крут, придумал же. Я бы тоже хотел писать игры на 1с — не, но за это никто не платит. Респект !!!!

    Reply
  76. Master07

    Даже не думал что это возможно.

    Reply
  77. khizhov

    Прикольно, сыгранём

    Reply
  78. mgmac

    Давай напишем на 1С покерного бота, я скажу как он должен играть а ты будешь писать код)

    Reply
  79. Ёпрст

    (79) я слишком ленивый для этого..

    Да и.. Для какой из 1000 разновидностей покера будем писать бота ?

    Для техаса ?

    Reply
  80. anv77

    Забавно)

    Reply
  81. EugenLiquor

    Ха-ха, прикольно) Люблю играть в покер на покерстарс, но не думал, что запилят в 1ску)

    Reply
  82. Master07

    Ет просто гениально, всегда любил в покер поиграть ….

    Reply
  83. Иваныч

    Скачаю Шефу, он в интернете сидит за покером, а так хоть посмотрит, как дела в фирме идут

    Reply
  84. enamchuk

    Можно модифицировать покер, раз он работает в 1С — играть на зарплату :))) Ставки делать с зарплаты 🙂 Здорово же)

    Reply
  85. Gvozdod

    Не понятно из описания. Игра с ботами или можно с коллегами на работе рубануться?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *