Решение игры "Балда"




Принцип обмена данными из 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='\

24 Comments

  1. 10555

    Блин люди хэлп) у меня что-то не открывается это программка файл формата dt что делать то помогите

    Reply
  2. Feodal

    как создать базу данных? Как зайти в режим конфигуратора? Впервый раз про такое слышу.

    Reply
  3. Feodal

    Нет, с 1С дел не имел.

    Reply
  4. Feodal

    Это что значит, мне 1С надо установить на комп?

    Reply
  5. Feodal

    А бесплатно его можно установить?

    Reply
  6. Трактор

    (7) Это развлекуха только для 1Сников. Остальным дешевле написать тоже самое хоть на яваскрипте.

    Reply
  7. Feodal

    Спаисибо, буду стараться, пока!!!

    Reply
  8. 10555

    😀 мда а я то думал думал гадал гадал что такое что да как где всё взять даж программисты думали а вон оно надо еще мне скачать 1с сраный бля если уж писать так для всех ,что ю все пользовались или быть жлобом и продавать как многие делают уроды….

    Reply
  9. I_G_O_R

    (14) сверху же написано: Инфостарт — это профессиональное сообщество людей, занимающихся автоматизацией учета и управления с помощью программы 1С:Предприятие., так что тут все так или иначе связано с 1С

    Reply
  10. Noy
    а вон оно надо еще мне скачать 1с сраный

    (14) ага, а потом еще ср..ый виндовс… а потом окажется что для этого еще и комп нужно покупать!

    Полегче с выражениями, уважаемый!

    Reply
  11. 10555

    да я не читаю все подряд мне это не нужно… программисты бля без вас бы ниче не было было б все круто … а то придумывают всякое…

    ну комп и виндовс есть у меня а вот 1с нафиг он нужен

    стоко программ стоко говна а нафиг многое не нужно и как хочу так и говорю… я еще тут тни кого не оскорблял лично…

    Reply
  12. 10555

    я только хотел играть как почти все нечестно с решателем….у меня стоко целей которых ты точно своей головой не допетришь.ю..потому что вы мыслите токо в 1 русло у меня есть такой программист чекнутый заумный ботан…не меня любят многие почему ты так решил…такое написать не зная человека…вот как раз жаль мне тебя…

    короче если хочешь поговорить пиши в личку…а если хочешь встречи я докажу тебе всё что ты захочешь и опровергну всё что ты думаешь правдой…

    тут не чего рассуждать тут только о 1с болтают…

    Reply
  13. 10555

    я вообще-то сказал тебе не писать а в личку…и ты мне тут не угрожай…а как тебе и не то и не другое а или и то и другое одновременно… короче ботан ты лучше не беси меня ладно если хочешь поговорить давай… я сказал не писать а в личку а ты не понял наверно ты туп…

    Reply
  14. Feodal
    (1) Создай пустую базу данных, зайди в нее в режиме конфигуратора, выбери меню Администрирование — Загрузить информационную базу, погоди секунд пять, выйдет окошко что информационная база успешно загруженна перезапустить, там выбираешь ДА, и конфигурация успешно загружена.

    Это я сделал.

    Изначально в обработку генерация слов надо внести слово, из 5 букв.

    Это не могу сделать, навожу курсор на секцию Б31 и нажимаю букву Б, чтобы попробовать ввести слово БАЛДА. но буква не вводится. Подскажите как буквы вводить?

    Reply
  15. Feodal
    Изначально в обработку генерация слов надо внести слово, из 5 букв.

    Потом нажать на кнопку анализ, это генерации всех уникальных буквосоставляющих этого слова.

    Кнопку анализ надо нажимать после ввода слова из пяти букв. Попробовал все равно нажать анализ, выходить меню справа огромное, что с ним делать не понимаю.

    Reply
  16. petriks16

    а можно ли загрузить свой словарь?

    Reply
  17. paulpit

    Чем больше вставлено букв, тем дольше думает, а при оставшихся не закрытых 2 или3 ячейках, должен быстрее думать

    Reply
  18. kupc

    Господа что то у меня не прет, все это сделал — «Создай пустую базу данных, зайди в нее в режиме конфигуратора, выбери меню Администрирование — Загрузить информационную базу, погоди секунд пять, выйдет окошко что информационная база успешно загруженна перезапустить, там выбираешь ДА, и конфигурация успешно загружена.» а что потом куда жать??? у меня 1с Enterprase-8

    Reply
  19. vitek-nara

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

    Reply
  20. balabani

    Блин люди хэлп)

    Reply
  21. _Ramzes

    (33) AZU,

    Мне кажется что рассылка рекламы в комментариях не приветствуется на данном сайте.

    Reply
  22. markgenuine

    Лишняя потеря времени, только знающие люди смогут запустить текущую фишку.

    Reply
  23. _Ramzes

    (37) markgenuine,

    Публикация была в 2009 году выпущена. Я несколько раз изменял полностью алгоритм расчета, что позволяло выходить в топ по данной игре.

    Инструкция о том как пользоваться указана. Что именно у тебя не получилось?

    Reply
  24. _Ramzes

    (37) markgenuine,

    И судя по тому что ты не скачивал файл (а это видно над твоим сообщением), ты даже не пробовал запустить конфигурацию. 🙂

    Так же видно что ты только зарегистрировался и у тебя нулевой рейтинг, значит ты пустышка.

    Reply

Leave a Comment

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