Writer




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

19 Comments

  1. script

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

    Reply
  2. FEAS88

    (1) Это ваше мнение и Вы на него имеете право, НО на чем оно основано не понятно, оно скептическое и негативное. Вам также говорят люди когда вы что то делаете на работе, на проекте ? Второе, а как вы можете ответить за всех и утвердительно, Вы людей не спрашивали. В-третьих люди уже этим пользуются и многим приносит пользу. Конечно фразой насмешили «для обучения», обучение здесь не причем, мы работаем серьезно и уже давно. Приложение скачивается и покупается во многих странах. Наша команда разрабатывает и не только это приложение, а комплекс для торговых представителей.

    Reply
  3. gubanoff

    (0) это на 1С?

    Reply
  4. FEAS88

    (3) Да на 1С 🙂

    Reply
  5. SyachinS

    Личное мнение. Интерфейс судя по скриншотам сделали как попало.

    Reply
  6. script

    (2) Извините пожалуйста, я не хотел Вас обижать. Просто идея утопична. Кто будет для этого использовать 1С, когда есть, например «Евернот», которые есть на всех платформах,ну и про скорость работы, я думаю, не нужно объяснять.

    Ну а для изучения механизмов моб. платформы — конечно круто. За это и плюсанул.

    Reply
  7. minarenko

    Дизайн конечно аховый

    Reply
  8. pm74

    нормально

    Reply
  9. cargobird

    6-й скриншот: «Исправте его» («Исправьте его»).

    Reply
  10. Nelli_A86

    Чем оно лучше, чем совершенно бесплатные кроссплатформенные OneNote или Google Keep?

    Reply
  11. корум

    (10) Импортозамещение, поддержка отечественного производителя!

    Reply
  12. v3rter

    Судя по отзывам, механизм автосохранения требует доработки, особенно в аварийных ситуациях. За образец поведения можно взять Microsoft Office, например. Некоторые подчеркивания красным на скриншотах могут быть непонятны нетематической аудитории.

    Что до меня, то почему-то обычного встроенного «блокнота» хватает. На любой платформе. Видимо, я читатель, а не писатель )

    П.С. После прочтения скринов захотелось туда, «где тепло и любят поэтов»(с).

    Reply
  13. FEAS88

    (6) Согласен, что наше приложение не Evernote, недостатки есть. Но они тоже начинали когда то.

    Не было бы компании Apple если бы они думали, что есть непобедимый IBM, зачем было начинать?

    Всем разработчикам Infostart можно не парится и даже не начинать, ведь есть 100500 Франчайзи и вообще все разработки клиентам не нужны.

    Но это ведь не так! Наш брат — простой парень имеет право делать и самое главное не боятся и не думать что есть великий Microsoft или Google.

    Мы просто делаем, стараемся предложить людям выбор. Сами развиваемся и помогаем другим.

    Спасибо ВАМ за плюс! И за комментарий.

    Мое жизненная личная позиция — пока есть хотя бы 1 человек на земле значит ему это может быть надо. и второе мнение «каждый откусит свой кусок пирога». Мы просто предлагаем выбор. ))

    P/S Evernote конечно не пример для подражания, и скорость работы оставляет желать лучшего — лично я им не пользуюсь(раньше пробовал и не пошло) и это одна из причин по которой вот и пришла идея создать своё.

    Reply
  14. FEAS88

    (10) Выше я коллеге ответил.

    1. пока есть хотя бы 1 человек на земле значит ему это может быть надо. и второе мнение «каждый откусит свой кусок пирога». Мы просто предлагаем выбор. ))

    Если люди устанавливают то значит другие приложения не удовлетворяют или они ищут удобное.

    Лично я пользуюсь своим приложением Fregat Writer , иногда для списков использую Google Keep.

    Но сравнивать Writer и Keep нельзя приложения для разных дел. Можно использовать вместе.

    Writer это ближе к OneNote но упрощено и сделано так, чтобы было удобно писать. Ещё сделаны специальные функции для писателя ( в том числе и переводчик)

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

    + Импортозамещение как отметил коллега. И конечно мы не собираем ни какие личные данные, статистику, не следим и не отсылаем.

    Про Microsoft и Google не скажу, не знаю. :)))

    Reply
  15. FEAS88

    (12)Согласен, есть проблемы у клиентов. Лично у меня и у коллег проблем с сохранением(то что пропадает текст) на устройствах не было. Проверяли на множестве эмуляторов и физических устройствах. Будем решать и анализировать из-за чего это. Либо ошибка у нас, либо в платформе.

    Раньше были вылеты из-за не стабильности платформы 1С, но сейчас уже вылетов практически нет и к быстродействию вопросов нет. НО есть ошибки платформы.

    Честно нас это расстраивает так как многие ошибки зависят не от нас. И они долго не исправляются.

    Это все накладывает на нас ограничения и создает первое негативное впечатление, и сводит старания на нет ((. Снижается оценка, следовательно установки и тд.

    Хотя людям все равно нравится, они устанавливают, я думаю так как идея хорошая и мы делаем с душой для людей.

    P.S. Кстати многие проблемы чисто человеческого характера. Что то пользователь не так делает или не понимает. Многие проблемы мы решили, после того как человек к нам обратился, многим помогли.

    Новые скрины перезальём скоро. 🙂

    Reply
  16. v3rter

    (15) Я имел в виду механизм периодического автосохранения в некие временные файлы, которые потом можно при необходимости можно вытаскивать и сохранять.

    Reply
  17. FEAS88

    Текст сохраняется в память устройства в виде файлов, а не только в базе.

    (16)

    Reply
  18. iliabvf

    Отзыв из Google play:

    «Seems like a legit app to me, exception being that UI looks absolutely horrid»

    1.

    such as to cause horror; shockingly dreadful; abominable.

    2.

    extremely unpleasant or disagreeable:

    horrid weather; She thought her uncle was horrid.

    3.

    Archaic. shaggy or bristling; rough.

    И вы не виновны, просто интерфейс мобильной 1С именно horrid

    Погуглите мобильные дизайны.

    Reply
  19. FEAS88

    Я знаю как выглядят мобильные дизайны. Работаем с тем материалом который есть пока.

    Writer в дизайне уступает другим аналогам я не спорю. Учимся

    Но наш другой продукт для бизнеса(для торговых агентов) я скажу что вполне выглядит хорошо, посравнению с другими аналогами у которых дизайн из 90-х.

    Можете взглянуть http://infostart.ru/public/522248/

    Он покрывает все нужные функции и выглядит достойно

    Reply

Leave a Comment

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