Альтернативный стартер 1С




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

48 Comments

  1. YAN

    Что-то я не пойму зачем он?

    Reply
  2. valent

    и Аваст ругается…

    Reply
  3. АЛьФ

    Да, Аваст ругается на «Win32:Gamex [Wrm]». Об этом писалось в комментах к этой программе еще на Проклабе два года назад. Может кто потестит файл другими антивирусами? А то придется удалить.

    Reply
  4. wizard

    Касперский не ругается.

    Не смог импортировать базы из 8.1

    Многовато орфографических ошибок.

    Не хватает сканирования каталога с базами.

    Reply
  5. DDD2005

    Symantec тоже сказал все ГУД, а аваст если често выкинь он половина траянов не ловить, и на влешку записывает вирус и кричит что там вирус а из памяти у себя не убирает! Не раз на такое натыкался!

    Reply
  6. DDD2005

    Жаль нет выбора по нескольким конфам запуска движка

    1. 8.1

    2. 7.7. ЗиК DBF

    3. SQL и т.д.

    привязка только к 3 запскалкам

    А так +

    Reply
  7. brr

    (2) Авира и НОД32 ничего не нашли

    (4) Разработка обновлялась последний раз в 2005 году

    Reply
  8. brr

    (6) Мне тоже жаль, но из всех стартеров которые я видел это самый удобный, особено при большом количестве баз

    Reply
  9. a1ex.5k

    Всем привет. Давно пользую, оч нравится. Обновилась до v 1.0.8 http://1c.proclub.ru/modules/mydownloads/personal.php?lid=5036&cid=4

    Reply
  10. brr

    Ура!!! Пошел качать. 🙂

    Reply
  11. brr

    Я считаю модераторам стоит удалить этот пост. Поскольку автор намеревается сам разместить свою разработку на инфостарте.

    Reply
  12. nikitan

    Хренотень. Не запускается в режиме конфигуратора. Кричит что ошибка блокировки данных. Родным стартером, в то же время, запускается без проблем.

    Reply
  13. АЛьФ

    2(11) Пусть автор разместит и напишет Доржи. Удалим.

    Reply
  14. molot

    (12) Измерить прямоту рук?

    Пользуюсь уже второй год — ничего лучше пока не придумали! За новую версию — спасибо! Плюс будет автору.

    Reply
  15. a1ex.5k

    Многим нравится эта прога, только где автор? Аффтар, пиши ещче! Можно еще пару идей подкинуть для увеличения функционала.

    Reply
  16. GDMaximus

    А под 8,1 есть?

    Reply
  17. a1ex.5k

    В v1.0.8 есть поддержка 8.1. Можно также задать любую программу для запуска

    Reply
  18. shotsdv

    А мой антивирус кричит что внутри архива вирус…

    Reply
  19. victuan

    2(13) Ни в коем случае не надо удалять эту обработку отсюда.

    Т.к. обработка, выложенная на проклабе не качается. А автор хоть обещал ее выложить на инфостарте но сам свое обещание так и не выполнил.

    Кстати, тут выложена версия 1.0.7. А последняя 1.0.8. Вот хорошо бы ее здесь выложить, т.к. больше ее негде взять. 🙁

    Reply
  20. brr

    Выложил 1.0.8. Все плюсы прошу считать плюсами автору.

    Reply
  21. Baklan

    Это пипец! спасибо

    Reply
  22. RInchin

    а как убрать возможность физического удаления базы и удаления из списка?

    Reply
  23. brr

    Этот вопрос нужно задать разработчику 🙂

    Reply
  24. bazun

    По моему мнению наиболее удобная утилита среди программ стартеров 1С (…);

    +очень удобная функция импорта и экспорта списка настроек через файл MyBases.xml;

    -умела бы она еще и пользователей корректно выгонять, как например (…).

    Reply
  25. sych_grigoriy

    Хорошая программа! Ребят, а можно не 1С БД из неё запускать, а просто программы или файлы?

    Reply
  26. progas

    И кому это надо?

    Reply
  27. Nickon

    Вещь портативная и необходимая. Думаю пригодится!

    Reply
  28. ValeryZ

    Программа полезная и удобная!

    Автору — ОГРОМНОЕ СПАСИБО!

    Reply
  29. ACE$

    кашпировский ругается на monitor.dll

    пришлось добавлять в исключения 🙁

    Reply
  30. ShootNICK

    Поддержку 8.2 уже хочется. 🙂 ❗

    Reply
  31. inspam

    Спасибо однозначно!!! Пользуюсь только ей, ибо по работе приходится работать как с 7.7 так и с 8.1. Хорошая система вложенных групп. (Единственно не получается восстановить список баз при импорте.)

    Reply
  32. torg1c

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

    Reply
  33. q_i

    2ShootNICK (32) У меня баз 8.0 нет (интересно, у кого-нибудь они вообще ещё остались?), поэтому я в настройках в качестве программы для запуска конфигурации 8.0 прописал 1cestart.exe и базы 8.2 добавляю с типом «1С: Предприятие 8.0» — запускает базы 8.2 на отл!

    Reply
  34. ShootNICK

    (35) увы есть 8.0 ; ну и кнопочки — ярлычки.

    были б иходники — можно было б подрихтовать.

    Reply
  35. Nickon

    (35) Все правильно! Тоже так давно сделал и все работает. Так что поддержка 8.2 можно сказать ЕСТЬ.

    Reply
  36. Luba 08

    Отличное приложение. 3 года как им пользуюсь. Только вот сейчас встала задача, что нужно админить базы 7.7, 8.1 и 8.2. Как бы с этим справиться?

    Reply
  37. q_i

    Luba 08, см. #35

    Reply
  38. Luba 08

    Мой вопрос в том, чтобы использовать и 8.1 и 8.2 одновременно. Прописать вместо 8.0 путь к 8.2 не поможет.

    Reply
  39. q_i
    Luba 08 пишет:

    Мой вопрос в том, чтобы использовать и 8.1 и 8.2 одновременно. Прописать вместо 8.0 путь к 8.2 не поможет.

    Собственно это и есть способ использовать 8.1 и 8.2 одновременно.

    В настройках стартера в полях «Программа для запуска конфигурации 8.1» и «Программа для запуска конфигурации 8.0» указываются соответственно екзешники 8.1 и 8.2. При добавлении новой базы 8.1. в список баз в качестве «Версии конфигурации» указывается «1С: Предприятие 8.1» (или «1С: Предприятие 8.1 (серв.)»), а при добавлении новой базы 8.2 в качестве «Версии конфигурации» указывается «1С: Предприятие 8.0» (или «1С: Предприятие 8.0 (серв.)»). Т.о. база «8.1» запускается экзешником 8.1, а база «8.0» (которая на самом деле «8.2») екзешником 8.2.

    Если Вам нужно не это, тогда объясните более подробно что Вы хотите.

    Reply
  40. Luba 08

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

    Еще раз: спасибо за помощь.

    А приложение просто супер!!! С моими 63 базами без него не справиться 🙂

    Reply
  41. WildFire

    Отличная прилада. Мешает только то, что иконка для всех восьмерочных баз одна и та же, несколько сбивает с толку, когда цепляешь базы от 8.2 в качестве 8.0. А так весьма неплохо!

    Reply
  42. commo

    Спасибо отличная утилитка.

    Reply
  43. Veduin

    Периодически используем!

    Reply
  44. ShootNICK

    Всем кто решил перейти на HotTray Starter.NET — есть конвертация списка БД. велкам.

    http://infostart.ru/public/142744/

    Reply
  45. PeterGr

    Отличная программка для 7.7

    Reply
  46. PolAlex2

    Никто не знает — мыло автора «Druid@mail15.com» живое или нет?

    Или как с ним еще связаться?

    Reply
  47. sergey_irk

    Действительно Автор еще живой или нет а то ни сайт ни мыло не отвечают. А так хотелось бы доработанную программулину для 8.3

    Reply
  48. brr

    (49) sergey_irk, http://infostart.ru/public/274485/ это круче, я сам на нее перешёл

    Reply

Leave a Comment

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