Script Creator от Microsoft




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

49 Comments

  1. Olga_siberia

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

    Reply
  2. Abadonna

    (0) Krasnoyarsk — rules 😉

    Reply
  3. fAngel

    Спасибо

    подробно расписана утилита

    http://www.samag.ru/art/02.2006/02.2006_02.html

    Reply
  4. andrewalexk

    🙂

    прикольная утилита но куда она в инет-то лезет?

    Reply
  5. AmoreMe

    Для andrewalexk. Специально посмотрел TCPView от Sysinternal … Ни куда она не лезит…

    Reply
  6. Душелов

    (4) Очень часто софт в инет лезет за проверкой обновлений на сайт производителя.

    Reply
  7. hogik

    Не понимаю. На мой взгляд, это должно находиться в разделе «закладки» с ссылкой на http://www.microsoft.com/downloads/details.aspx?FamilyID=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en

    Reply
  8. hogik

    (5)(AmoreMe)

    «Ни куда она не лезит»

    Угрюмо лезет по 84.53.182.96 ;-)))

    Reply
  9. AmoreMe

    (8) Инструмент Whois: 84.53.182.96

    IP: 84.53.182.96

    inetnum: 84.53.128.0 — 84.53.191.255

    org: ORG-AT1-RIPE

    netname: EU-AKAMAI-20041105

    descr: Akamai Technologies

    descr: PROVIDER Local Registry

    country: EU

    admin-c: NARA1-RIPE

    admin-c: NF1714-RIPE

    tech-c: NARA1-RIPE

    tech-c: NF1714-RIPE

    status: ALLOCATED PA

    mnt-by: RIPE-NCC-HM-MNT

    mnt-lower: AKAM1-RIPE-MNT

    mnt-routes: AKAM1-RIPE-MNT

    mnt-domains: AKAM1-RIPE-MNT

    source: RIPE # Filtered

    organisation: ORG-AT1-RIPE

    org-name: Akamai Technologies

    org-type: LIR

    address: C/O Noel Freedman, 8 Cambridge Center

    address: 02142

    address: Cambridge, MA

    address: United States

    phone: +16174444768

    fax-no: +16174444768

    admin-c: NF1714-RIPE

    admin-c: NARA1-RIPE

    mnt-ref: AKAM1-RIPE-MNT

    mnt-ref: RIPE-NCC-HM-MNT

    mnt-by: RIPE-NCC-HM-MNT

    source: RIPE # Filtered

    role: Network Architecture Role Account

    address: Akamai Technologies

    address: 8 Cambridge Center

    address: Cambridge, MA 02142

    phone: +1-617-938-3130

    abuse-mailbox: abuse@akamai.com

    admin-c: NF1714-RIPE

    admin-c: JP1944-RIPE

    tech-c: NF1714-RIPE

    tech-c: JP1944-RIPE

    tech-c: APB15-RIPE

    nic-hdl: NARA1-RIPE

    mnt-by: AKAM1-RIPE-MNT

    source: RIPE # Filtered

    person: Noam Freedman

    address: Akamai Technologies

    address: 8 Cambridge Center

    address: Cambridge, MA 02142

    phone: +1-617-938-3130

    abuse-mailbox: abuse@akamai.com

    nic-hdl: NF1714-RIPE

    mnt-by: AKAM1-RIPE-MNT

    source: RIPE # Filtered

    % Information related to ‘84.53.182.0/23AS20940’

    route: 84.53.182.0/23

    descr: Akamai Technologies

    origin: AS20940

    mnt-by: AKAM1-RIPE-MNT

    source: RIPE # Filtered

    Reply
  10. AmoreMe

    Но у меня такого не наблюдается 🙂 Молчит как партизан на допросе! И ни куда не лезет! Ещё раз проверил…

    Reply
  11. AmoreMe

    (7) Это то так конечно, но думаю новичку простительно. Разберётся!

    Scriptomatic2 на мой взгляд организован получше и языков поддерживаемых больше (добавлены Perl, JScript, Python) а вот С# и VB.NET отсутствуют… Это кое кому не подойдёт в принципе! Да и расширение .hta многих может не устроить.

    Reply
  12. coder1cv8

    А у меня говорит: «Ошибка при инициализации приложения» (

    Reply
  13. Olga_siberia

    (12)Во первых хотелось бы увидеть скрин диалогового окна с кодом ошибки, во вторых не понятно о чем идет речь о Scriptomatic2 или о той утилите которую выложила я. Раз не ясно ни то ни другое, остается только предпологать если это речь идет о .hta то многие антивирусные программы «очень настороженно» относятся к этому расширению и могут не давать этому приложению норм загрузиться…Предположим у вас стоит(или стоял) Daemon Tools,тогда вместе с собой он прописывает драйвер sptd.sys который активно мешает норм работе отладчикам режима ядра и многим др.системным утилитам. Ну это только предположения т.к. никакой точной инф. вы не выдали…

    Reply
  14. Olga_siberia

    agentz, Legavaz, Евген_1С, Unstoppable, kitminsk, artbear, Rebelx, kitt, tormozit, halushka, fAngel, Abadonna, cs25, PeRom, wer_alex, Tempus, Душелов, coder1cv8, AmoreMe- спасибо за поддержку!!!!!!!!!!!!!!!

    Reply
  15. Душелов

    (12) А мой любимый .Net Framework стоит? 🙂

    Reply
  16. coder1cv8

    (13)

    Речь идет о WMICodeCreator.exe, вот скрин ошибки: http://www.picamatic.com/view/1429479_Error/

    ОС: Win XP Prof SP2

    Антивирус: Symantec

    Какие ещё параметры надо, спрашивайте…

    Reply
  17. Душелов

    (16) Так ему, если я не ошибаюсь, фреймворк 1.1 требуется 😉

    Reply
  18. Душелов

    INSTALLATION AND USE RIGHTS. You may install and use any number of copies of the software on your devices for your use solely with .NET Framework, version 1.1 or later.

    Reply
  19. coder1cv8

    +(16) Если нужен .Net Framework то напишите в заголовке, пожалуйста.

    Reply
  20. Душелов

    (19) Давно пора использовать мелкософтские фреймворки 😉

    Reply
  21. coder1cv8

    (20) Мои взгляды в этом вопросе совпадают со взлядами Джоэла Сполски: http://russian.joelonsoftware.com/Articles/PleaseSirMayIHaveaLinker.html

    😉

    Reply
  22. Olga_siberia

    Программа написана на С# (WindowsForms ) требуется Framework 1.1 (17) Прав!

    Reply
  23. Olga_siberia

    Пожалуйста, лови!!!(19)

    Reply
  24. Душелов

    (21) Есть такой линкер, только зачем мне выкладывать со своими 50кб-шными разработками в архиве еще 4-6 мегов, когда мне просто указать версию фреймворка и все 🙂 Благо, в той же висте 2 фреймворк уже стоит, да и виндус апдейты его ставят 🙂

    Reply
  25. Abadonna

    (19)> Если нужен .Net Framework

    В Киевской поликлинике после Чернобыля:

    — Девушка, а где тут рентген-кабинет?

    — А у нас теперь везде рентген-кабинет!

    coder1cv8, щас почти везде фреймворк требуется, особенно с легкой руки Душелова :))))))))))

    Reply
  26. O-Planet

    Собственно, из-за этой дурацкой тенденции мелких все завязывать на свои библиотеки, которых может и не быть у нормального юзера, не использую MVC++, Builder рулит!

    Reply
  27. Душелов

    (26) Мелкие они такие… Они даже на свою ОС много чего завязали :))))) Понапридумывали фреймворки и директиксы всяческие…

    Reply
  28. Abadonna

    (26,27) Builder стопудов завязан на API, а это, однако, kernel32.dll — ядро виндов 😉

    Другое дело, что Борланд прикомпилирует к исполняемому файлу большинсво кода оттуда — остюда несколько увеличенный размер файла, зато лично я всегда уверен, что заработает в любой винде и всегда

    Reply
  29. Olga_siberia

    (28)ядро состоит из набора функций в Ntoskrnl.exe,а kernel32.dll- это систем.библиотека функции которой вызываются в пользовательском режиме…

    Reply
  30. Olga_siberia

    Молчание — единственная вещь из золота, не признаваемая женщинами.

    Reply
  31. fAngel

    Еще одно место выпрашивания фоток 🙂

    Вам рекламы мало

    Reply
  32. AmoreMe

    (32) О какой рекламе речь идёт? Ну да ладно… А на счёт минуса, это забавно у вас получилось! Возвращать не буду. Так как в рейтинги не верю! И опять же помяну добрым словом господина (hogik) с которым мы однажды сцепились и рука то у него зудилась не меньше чем у вас. Однако вот и разница! Удачи!

    Reply
  33. Olga_siberia

    фото уже есть,я как человек открытый приветствую себе подобных, мне скрывать нечего!!!Фото и имя реально

    Reply
  34. stol6

    Все бы хорошо, но троян в архиве.

    Reply
  35. Olga_siberia

    Так так ребята не надо войны, вам делить пока нечего никаких минусов!!!! Я насчет вируса проверь свой комп дорогой stol6

    Reply
  36. Душелов

    Троянов нет.

    Reply
  37. tormozit

    (37) Там где их нет, они могут когда то появится. Даешь ссылки на оффсайты!

    Reply
  38. Atheist

    На сайте Microsoft эта програмулька в открытом доступе, правда она на C#. Нужно становить Visual C# и скомпиллировать файл и никаких заморочек с вирусами.

    Reply
  39. Душелов

    (39) Так может быть вирус на c# в коде! :)))))

    Reply
  40. Olga_siberia

    ОК(39)

    Reply
  41. Abadonna

    (31)>но если бы ты выложила свою фотографию

    Пооблизывайся 😉 Девушка-то нашенская, красноярская 😛

    Reply
  42. Olga_siberia

    м-да,а главное в тему

    Reply
  43. tormozit

    (39) В таком случае конечно спасибо автору за выложенный скомпилированный вариант.

    Reply
  44. Душелов

    Немного доработал: http://infostart.ru/profile/3975/projects/3004/

    Reply
  45. Froloid

    Симпотная штучка. Душелову +

    Reply
  46. Froloid

    Пардон, промазал (закрылось окно, в истории открыл не ту ссылку) ;0)

    Reply
  47. Olga_siberia
  48. OptimusMaximus

    Реальная, вешь 😉

    Reply
  49. andrewPt

    Так ему, если я не ошибаюсь, фреймворк 1.1 требуется

    Reply

Leave a Comment

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