MP3 проигрыватель для 1С 8.1




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2025-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='\

30 Comments

  1. Душелов

    А что мешает использовать активХ — Windows Media Player ?

    Reply
  2. Abadonna

    Что обработку Файл-Открыть, что Aimp Файл-Открыть. Зачем ВАЩЕ????

    Reply
  3. Fuego

    Объект = Новый COMОбъект(«AMOVIE.ActiveMovieControl»);

    Объект.FileName = ПутьКФайлу;

    Объект.Volume = 0; //Полная громкость

    Объект.Run();

    Reply
  4. CheBurator

    а вот Душелов сделал, что можно посторонее окно в 1Ску захватывать…

    Reply
  5. zaic

    А что мешает использовать winamp?

    Честно пытался послушать каталог или файл — ошибки, на модуле — пароль.

    Reply
  6. Душелов

    (4) Захватывать-то захватывать, а вот управлять им нельзя… Если только попробовать программно на кнопки нажимать или как-то горячими клавишами управлять….

    Reply
  7. Abadonna

    (6) Вот и я про то же! Что за мания тащить все внутрь 1С?

    Как будто других программ нет ваще в винде :)))

    Reply
  8. Abadonna

    И, кстати, проигрЫватель, а не проигрОватель 😉

    Reply
  9. Душелов

    (7) Ну так знают люди (большинство) только 1С, вот и развивается мания 🙂

    Reply
  10. Alexsisit

    Еслу у кого и взникли ошибки , то только из-за самой компоненты «AMOVIE.ActiveMovieControl» … проверялось не на одной машине, все работает исправно ….

    Единственное… проверялось на XP и 2000 SERVER

    Кому данная приблуда не нравиться прошу флудить в другом месте.

    <Abadonna> Кстати, тогда встречный вопрос, зачем же тогда лазить на этом сайте и искать всякие всячины для 1С, если есть куча программ на винде ?

    Reply
  11. Alexsisit

    (5) Когда для юзеру отрубают весь доступ на клиентской машине , да исчо и работа в теминале, вот только так можно спасти юзера от наушников с МР3 плеером на шее 🙂

    Reply
  12. Душелов

    (11) Если юзеру отрубают весь доступ, то тут никакие ВК не помогут…

    > <Abadonna> Кстати, тогда встречный вопрос

    Я не думаю, чт оон лазит по этому сайту и ищет всякие всячины для 1С 😉

    Reply
  13. Alexsisit

    (12) Юзер то канечно нет, а вот сердобольный Админ иль программер может 🙂

    Reply
  14. Abadonna

    >зачем же тогда лазить на этом сайте и искать всякие всячины для 1С

    Абадонна на этом сайте ничего не ищет, в жизни ничего отсюда не скачал, а если и скачал — то не использовал. Я тут общаюсь и сам снабжаю сайт всякими всячинами

    Reply
  15. Душелов

    (14) Отвратительно!

    Reply
  16. Alexsisit

    (14) Уже поглядел ))) .. тоже маниак, все в 1С или из 1С ))

    Reply
  17. Abadonna

    (11)>вот только так можно спасти юзера от наушников с МР3 плеером на шее 🙂

    Не поверишь, но ИМЕННО так я и сижу на работе: с MP3-плейером на столе и одним наушником в ухе. И я никому не мешаю, и музон громко, и одно ухо слышит окружающую среду :)))

    Reply
  18. Alexsisit

    (17) Ладно оставим спор, на самом деле маюсь от безделия и не даю отрофироваться моску :)))

    Reply
  19. Abadonna

    Лана, приделаю к http://infostart.ru/projects/3142/ проигрывание плэй-листа и будет счастье :))))

    Reply
  20. Душелов

    (18) Могу посоветовать начать изучать языки высокого уровня 😉

    (19) Тока винамповского 😉

    Reply
  21. Alexsisit

    (20) Изучать другие области нету ни возможности ни желания.

    Исчо здесь не все досканально изученно.

    Reply
  22. zaic

    (21) windows xp+sp3:

    {Форма.Плейлист(85)}: Поле объекта не обнаружено (CurrentState)

    Если Медиа.CurrentState <> 0 тогда

    может еще что надо для работы AMOVIE.ActiveMovieControl

    Reply
  23. Alexsisit

    (22) Вроде ничего больше не надо .

    Команда CurrentState отвечает за игру композиции, когда она кочаентся CurrentState=0 и в включается следующая по порядку.

    Можете закоментить эту строчку и включать вручную поочереди 🙂

    Reply
  24. seermak

    http://infostart.ru/projects/2707/ — меньше наворотов(скромничаю), больше функциональности

    Reply
  25. Alexsisit

    (24) канечно прикольно , только вот звука радио я так и не услышал. Внизу название песни бежит,а звука нету. Пытаюсь выбрать каталог, выбирает, нажимаешь плей и тишина …. может надо что-то поставить?

    Reply
  26. seermak

    (26) перейдите на ветку http://infostart.ru/projects/2707/ — там ответ на ваш вопрос

    Reply
  27. seermak

    (26) ошибка в названии файла — если в одном из кучи файлов в названии есть символ «&» то весь плейлист не воспроизводится (нашел методом научного тыка)

    Reply
  28. russdandy

    ещё бы перемотку трека сделать…

    Reply
  29. akkvamarin

    У меня сложилось такое впечатление что автор торопился куда-то выкладывая обработку, сыровата программа. Смотрел на ХР, СервисПак-2:

    — Изменить отсчет времени не работает обратно

    — Двойной щелчок запускает след. композицию без остановки другой

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

    — Не оттестировано поведение программы при первом запуске, ошибка почти на всех кнопках по клику

    ЗЫ: и зачем комментить модуль объекта, смысл? не понимаю, собираешся делать ее коммерческой?

    Reply
  30. Alexsisit

    да, сыровата не спорю… делал для себя, поэтому не сильно не тестил. Коммерческой делать не буду, комментил модуль для своих нужд, просто забыл убрать :).

    Reply

Leave a Comment

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