Продукт vs Процесс




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

40 Comments

  1. Hans

    Никто не читает уже что ли? День прошел — отзывов нет.

    Reply
  2. Hans

    Собери все свои статьи в книгу. Выложи на инфостарте за деньги. Может будут брать.

    Reply
  3. 1c-intelligence

    (3) там обратный процесс идет. Есть книга, а статьи — просто проекция.

    Reply
  4. Hans

    (4) а где книга?

    Reply
  5. 1c-intelligence

    (5) в издательствах, читают.

    Reply
  6. genayo

    Не является ли расчет себестоимости в УПП тем продуктом, который навязан потребителю?

    Reply
  7. 1c-intelligence

    (7) зависит от контекста.

    Reply
  8. genayo

    (8) Так сам по себе расчет себестоимости не нужен, нужен финансовый результат…

    Reply
  9. 1c-intelligence

    (9) по факту — да, не нужен. Или просто готовить не умеют, довольствуются фин.результатом из двух проводок.

    Reply
  10. 1c-intelligence

    (9) непонятно, правда, откуда потом берутся 1.5к скачиваний структуры затрат (https://infostart.ru/public/93020/).

    Reply
  11. genayo

    (11) Так продукт признан качественным, поэтому «специи» для него пользуются популярностью.

    Reply
  12. genayo

    (10) Это вопрос, конечно, ближе к философскому, нужно ли именно так считать себестоимость, и нужно ли вообще ее считать…

    Reply
  13. 1c-intelligence

    (12) я не об этом. Фин.результат — это пара цифр. Реальная структура себестоимости — это много цифр. Их можно получить, правильно настроив распределение затрат, ну и, вообще, ведя нормальный учет. Но делать этого не хочется. А раз не хочется, то проще признать расчет себестоимости «не нужным», техническим этапом на пути определения фин.результата.

    Ладно, отклонились.

    Reply
  14. TODD22

    (13)

    Это вопрос, конечно, ближе к философскому, нужно ли именно так считать себестоимость, и нужно ли вообще ее считать…

    И нужно ли вообще заниматься производством и расчётом, когда можно ничего не делать. Ведь «если ничего не делать, то ничего не будет» японская пословица.

    Reply
  15. genayo

    (15) Ну вот, например, сторонники ТОС считают, что необязательно http://tocpeople.com/2011/04/vy-eshhe-uchityvaete-sebestoimost/

    Reply
  16. TODD22

    (16)

    Ну вот, например, сторонники ТОС считают

    Ну и? Есть сторонники плоской земли, ктулху, летающего макаронного монстра и тд. Каждый верит в то что хочет.

    Reply
  17. genayo

    (17) Это не вопрос веры, это вопрос целесообразности.

    Reply
  18. TODD22

    (18)Любой вопрос «целесообразности» должен иметь под собой экономическое обоснование.

    Reply
  19. genayo

    (19) Если предприятие использует данный подход, и работает с постоянной прибылью — нужно ли экономическое обоснование? Ну ладно, это уже оффтоп, не про качество.

    Reply
  20. genayo

    Ближе к качеству. Если требование бизнеса-потребителя к автоматизации — быстрый запуск фич, пусть даже с костылями и ошибками, является ли такой продукт качественным?

    Reply
  21. 1c-intelligence

    (21) да.

    Reply
  22. genayo

    (22) А для внешних пользователей продукта, которые испытывают проблемы при своей работе?

    Reply
  23. TODD22

    (20)

    Если предприятие использует данный подход, и работает с постоянной прибылью — нужно ли экономическое обоснование?

    Много таких предприятий знаете? Ну вот так что бы вообще не считали СС? Просто кидали в котёл затраты, а в конце года выгрибали деньги из сейфа и считали прибыль, ну или убыток если в сейфе вдруг денег не оказалось.

    Нафантазировать то можно много чего и предприятия без учета затрат и расчета СС и то как классно будет работать без всего этого. Но надо бы на землю спустится. Много производственных предприятий не ведут учёт затрат и не считают СС?

    Reply
  24. Hans

    (6) Долго еще читать буду? Какие ориентировочные сроки выхода книги?

    Reply
  25. genayo

    (24) Не считать себестоимость классическими способами, как в УПП, например, <> не учитывать затраты. И я прекрасно понимаю, что не всем альтернативные варианты учета затрат могут подойти.

    Reply
  26. 1c-intelligence

    (23) для каждого индивидуально, в этом и проблема — субъективность оценки качества.

    Reply
  27. 1c-intelligence

    (25) сроков не называют, прям как программисты. Могут и год читать.

    Reply
  28. TODD22

    (26)

    Не считать себестоимость классическими способами

    Так не считать СС вообще или не считать её реализованным способом в УПП разные вещи как бы.

    Reply
  29. genayo

    (27) Так один и тот-же продукт может быть одновременно и качественным, и некачественным? Я тут на типовые от 1С намекаю, ЗУП3, в частности.

    Reply
  30. TODD22

    (29)

    Так один и тот-же продукт может быть одновременно и качественным, и некачественным?

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

    Если на пакете молока написано 3.2 % жирности, а там окажется 2.9 % или 3.7% то это уже фальсификат, потому как не соответствует тому что указано на упаковке. И не важно что там то же молоко.

    Reply
  31. 1c-intelligence

    (29) конечно.

    Reply
  32. genayo

    (31) Я не про это — утрируя, Борис Нуралиев считает ЗУП3 качественным продуктом, так как там быстро внедряются новые фичи, а пользователи ЗУП3 с ним не согласны 🙂

    Reply
  33. TODD22

    (33) Так надо тогда что бы все одной системе измерений это качество измеряли.

    Reply
  34. genayo

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

    Reply
  35. TODD22

    (35) Нет никакой проблемы. Система оценки должна быть одна, то есть принята обеими сторонами.

    Reply
  36. genayo

    (36) Реальность такова, что ее нет. Для производителя молоко, например, качественное, если оно изготовлено в соответствии с ТУ производителя. Для потребителя этого явно не достаточно…

    Reply
  37. TODD22

    (37)

    Для потребителя этого явно не достаточно…

    Ещё раз….

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

    Если я произвожу зелёные муфты, то на основании своих предпочтений красного цвета перед зелёным ты не можешь говорить что мои муфты не качественные. Ты либо должен взять мою систему оценки качества либо я твою. Либо искать другие муфты красного цвета.

    Reply
  38. genayo

    (38) По ТУ производителя молоко делается с добавлением сухого молока. Потребитель считает продукт с сухим молоком некачественным. Хотя, если буквоедствовать, потребитель, который не покупает твой продукт, не является твоим потребителем :))

    Reply
  39. TODD22

    (39)

    По ТУ производителя молоко делается с добавлением сухого молока. Потребитель считает продукт с сухим молоком некачественным.

    Так управляй ожиданиями потребителя, для этого вроде как и придумали «маркетинг».

    Reply
  40. 1c-intelligence

    Друзья, прошу прощения за спам — поучаствуйте в голосовании.

    Reply

Leave a Comment

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