Покерок для 7.7




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *