В помощь пользователям КЗК 2




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

41 Comments

  1. Арчибальд

    Эк закрутил 😮

    Reply
  2. Ёпрст

    Ну и ?

    А что принципиально нового то ?…

    Давно ужо все пихают в ert всё что не поподя — файло,ВК и т.д…

    Тот же формекс или 1c++

    Reply
  3. АЛьФ

    Я вот тут подумал: может делать подобное внедрение прямо в модуль обработки при компилировании?

    Reply
  4. Artem N

    Декомпилятор для 1С 7.7 уже написан. Всё бесполезно 😉

    Reply
  5. JohnyDeath

    (4) Ссылку в студию!

    Reply
  6. Artem N

    (5) Релиз пока не вышел 🙂

    Есть картинка только 🙂

    Reply
  7. script

    А про декомпилятор информация откуда ❓

    Reply
  8. Artem N

    (7) От автора 😀

    Reply
  9. Donat

    А что автор говорит по поводу релиза?

    Будет ли он открытым и когда?

    Reply
  10. Artem N

    (9) Релиз будет, факт.

    По поводу открытости вопрос сложный. Скрывать там особо нечего (написано всё это, хе-хе, на C#), но и финансовый вопрос интересен. Когда — думаю, в очередной период сдачи налогового расчёта по авансовым платежам по транспортному налогу 😀

    P.S.: Декомпилятор не работает без запущенного экземпляра 1С. Фича! 🙂

    Reply
  11. script

    Я эту тему создавал не для обсуждения декомпилятора 👿

    Делайте отдельную тему и мусорте там

    Reply
  12. WKBAPKA

    вот если бы для 8.1 была бы приблуда, а так для 7.7. уже не актуально

    Reply
  13. gavril

    (12) +1

    обидно что пообещанное на конец 2009-го так и не вышло 🙁

    Reply
  14. WKBAPKA

    2(13): обещаного 2 года ждут 😉

    Reply
  15. Tatitutu

    (10)

    P.S.: Декомпилятор не работает без запущенного экземпляра 1С. Фича!

    а на рисунке (6) НЕТ запущеннного )))

    да рисунок…

    Reply
  16. script

    Задолбали короче говоря…

    Какая польза от этого декомпилятора то

    Серьезных коммерческих продуктов с помощью КЗК все равно никто не делает.

    Многие как и Я пользуются КЗК что бы временно защитить разработку которая была сделана на условиях оплаты по факту. Что бы тебя не кинули

    После оплаты я код всегда открываю. Многие делают точно так же.

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

    По этому давайте прекратим эту тему про де компилятор вообще.

    Reply
  17. Tatitutu

    (16) Как скажешь…

    — тему твою в форуме поднял

    — плюс поставил

    — комментарий написал

    и все для того чтобы в лицо сказали «ЗАДОЛБАЛИ»

    хорошо хоть не послал 😥 и на том спасибо.

    Красиво пишешь , но не верю … слова расходятся с делом.

    ответ тогда следует читать в (2) там все четко написано

    Reply
  18. script

    Извините кого обидел — но тему декомпилятора я не поднимал.

    Reply
  19. script

    Напостил про декомпилятор Artem N

    Reply
  20. АЛьФ

    2(6) Судя по картинке, декомпилятор этот делается на основе демки КЗК. Если это так, то автора ждет неприятный сюрприз на реальных защищенных обработках. И его желание финансово что-нибудь поиметь с этого вполне может обернуться не очень хорошими последствиями для здоровья.

    Reply
  21. Artem N

    (20) На картинке вообще testcases, неужели не очевидно? 🙂 Задачи поломать КЗК2 автор не ставил.

    (19) Извини, так получилось. Но в (7) ты сам меня поддержал 😉

    Reply
  22. АЛьФ

    2(21) «Задачи поломать КЗК2 автор не ставил» — очень странно видеть такое утверждение в комментариях к теме о КЗК в контексте декомпилятора. С учетом того, что в 7.7 и декомпилировать-то нечего, если не используется КЗК.

    Reply
  23. Artem N

    (22) Если в настройках КЗК2 «Дополнительная обработка скомпилированного кода» флажок установлен, то декомпилятор, понятно, не декомпилирует 🙂 Потому что он для этого не предназначен.

    А вот если этот флажок сброшен, то на выходе получаем девственно чистый код…

    Но я продолжаю придерживаться точки зрения (4), потому что деобфуксация возможна 😉

    Reply
  24. АЛьФ

    2(23) Попробуй. За руки никто не держит. Пример конфиги со скомпилированным глобальником я тебе выслал. Как получишь из него «девственно чистый код», милости просим.

    Reply
  25. iov

    Итак подведя итог ПОИМЕТЬ халяву желание не убить!

    и желание сделать красиво — практично — безапасно (но с оплатой труда) тоже. Как результат ? правильно основное правило надо делать продукт взлом которого в разы дороже и сложнее чем просто купить (потом (когда обьем продаж спадет ) -открывать код (и делать закрытый продукт с новыми функциями)- как рекламно распространительный ход работает на ура).

    Reply
  26. Artem N

    (24) Автору писькой меряться не с руки 😀 Да и тебе не 20 лет вроде 😐 Поэтому «на слабо» поведётся тот, у кого будет желание доработать декомпилятор, выпущенный под BSD-лицензией.

    Reply
  27. АЛьФ

    2(26) Да никакого «на слабо». Подобные «декомпиляторы» были еще до выпуска КЗК 2.0, еще на этапе его первоначального публичного тестирования. Если интересно, можешь покопать архивы Мисты и Одинэссии на эту тему. Просто не вижу в этом повода для бравады типа (4). Еще раз: будет чем реально похвастать — милости просим.

    Reply
  28. Abadonna
    11.script 28.01.2010 20:41:29

    Я эту тему создавал не для обсуждения декомпилятора

    Делайте отдельную тему и мусорте там

    Автор-то прав, однако 😀

    Reply
  29. artbear

    (28) Согласен, автор прав!

    Предупреждаю ВСЕХ — Буду модерить все дальнейшее в ветке не по теме!

    Reply
  30. Abadonna

    (29) Ага, только, думаю, «они больше не будут» 😉

    Reply
  31. artbear

    (30) Если автор темы попросит, могу скрыть все сообщения не по теме

    Reply
  32. alexk-is

    (0) Почему бы тексты модулей в описании не покрасить? 🙂

    Reply
  33. script

    Почему бы тексты модулей в описании не покрасить?

    Покрасил 😀

    Reply
  34. artbear

    (33) Что скажешь на (31) ?

    (32) ОФФ. Скрытая реклама 🙂 😀 ?

    Reply
  35. alexk-is

    (34) Я намекнул на качество оформления и направление, в котором можно его улучшить. Автор прислушался к рекомендациям и поправил публикацию. Материал стал выглядеть лучше. Как пользователь КЗК 2.0 я оценил материал как полезный. Для меня полезный и, что не мало важно, неплохо оформленный. За что собственно и поставил плюс.

    …и это несмотря на то, что при оформлении публикации не использовалась Разукрашка, что видно по HTML-коду страницы.

    Reply
  36. АЛьФ

    Так как пользователи КЗК относятся к мысли в (3)?

    Reply
  37. IamAlexy

    (36) ждут КЗК для 8.1 и 8.2

    Reply
  38. alexk-is

    (36) Можно конечно, но актуальнее будет выпустить КЗК для 8.1.

    …или обещенного 3 года ждут? 🙂

    Reply
  39. IamAlexy

    (38) скоро будет три.. недолго осталось 🙂

    Reply
  40. SvSoft

    (36) Ну, как пользователь КЗК2, скажу следующее:

    Если тебе, Альф, не влом, то в виде опции, почему бы и нет 😉

    Reply
  41. IsiKosta

    (36) АЛьф, сделайте возможность встраивать precomp.dll, никак пользователь не может запустить защищенную обработку. Не могу понять, что он не так делает.

    Reply

Leave a Comment

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