Compiere — система управления предприятием и взаимоотношениями с клиентами на базе открытого кода




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

23 Comments

  1. support

    Хотелось бы услышать ваше мнение о системе. Может кто сталкивался с ней по роду своей деятельности? Какие перспективы на российском рынке? Вообще, приветствуются любые комментарии по затронутой теме.

    Reply
  2. CheBurator

    баян! 😉 уже упоминалась… по крайней мере — я о ней слышал и даже лазил че-то там повтыкать.. не впечатлило…

    Reply
  3. CheBurator

    а все почему? потому что у меня уже есть один конструктор…

    Reply
  4. support

    (3) в смысле? 1С? 🙂 Если нет, то предлагаю просветить Сообщество.

    Reply
  5. CheBurator

    (4) угу, прально понимаешь…

    Reply
  6. CheBurator

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

    Reply
  7. Abadonna

    Вспоминаю год 1996… Надо было наладить складской учет в фирменном магазине K&К (ал. диски, шины, сопуствующие, шиномонтаж), где я командовал. Написал на FoxPro, даже и работало очень неплохо. Потом мне кто-то сказал: «Не парься! Есть одна программа…». Так я и пришел к 1С, тогда еще 2.0 Проф. Так что действительно удобный конструктор (3-5), и лично я смысла не вижу поиска альтернатив. Согласен с Чебуром.

    У 1С есть один большой плюс (как и у Винды) — уже много спецов, которые могут программить в этих средах, и много пользователей, которые знают какие кнопки тыкать 😉 Девочка-оператор, которая вводила документы в ТИС, УТ, БП и т.д., без особого психологического надлома так же легко будет их вводить и в полностью самописной конфе

    Reply
  8. Шёпот теней

    всё рассыпается на одном вопросе: «а как она работает «зАдним» числом» ..?

    и….

    … «.. и только мёртвые с косами стоятЬ … и тишина…» …

    да что тАмА «заднее число» — большинство НЕнаших ПО даже не может сторнировать а «красное» сторно — ставит большинство ПО в тупик …

    … смЕЕЕшно …

    Reply
  9. support

    Кому данная тема интересна, прошу поддержать плюсами.

    Reply
  10. Шёпот теней

    тема интересная без сомнения …

    … ну не могут и не понимают ихнее ПО ни «заднее число» ни «красное стороно» …

    … поэтому для расширению кругозора хорошо, наверное и для практики хорошо если сравнивать а не обходится рекламными проспектами …

    … вот …

    Reply
  11. viacht

    Самое главное для меня, что данная система вроде как нормально уживается в Линуксе, в отличие от 1с

    Reply
  12. Тот

    Много лет назад я писал опус «советы конкурентам». С тех пор могу только подтвердить всё сказанное тогда.

    1. 1С используют все потому что её все используют. Как Windows.

    2. Даже бесплатный софт будет бодаться с 1С очень долго. Как Linux.

    3. Фирма 1С активный игрок на рынке и готова «раскошелится» когда увидит на нем угрозы для себя. Как Газпром.

    4. Реклама… Красиво у всех, всё и всегда. Как 1С.

    Reply
  13. support

    (14) Анатолий, рад видеть вас на Инфостарте. Легендарная личность!

    А сейчас статьи уже не пишите?

    Reply
  14. cruse

    Посмотерел внешний вид и копать внуть уже не хочеться. Можно ли судить о системе по внешнему виду? Ага. Я думаю, стройность в представлении дает надежду о стройности архитектуры.

    Reply
  15. kurator1C

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

    Если видим мнооого минусов, значит тема интересная, но боян 🙂

    (10) Шёпот теней, разве 1С справляется с зАдним числом?

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

    Reply
  16. kurator1C

    Кстати посматрите на на ссылки партнеров… многое станет ясно.

    Кому не ясно intellect-service — это почти удавшийся конкурент 1С со своим бэстом.

    Почему говорю «почти удавшийся», потому что по сути бэст — это реклама 1С )))

    (Кто сталкивался с обоими продуктами, наврное, поймет)

    Странно, что сейчас на их сайте нет даже упоминания о бэсте.

    Но это мое мнение…

    ————————

    Вообще я начинаю подозревать некоторые элементы теории заговора в 1С.

    Работая на рынке АСУ вот 15 лет, внедрив за это время кучу проектов (в том числе и БЭСТ, и галактику, пробывал парус, разрабатывал свои системы, ну и пока остановился на 1С) стал замечать тенденции появления и исчезновения различный систем АСУ.

    Начинает складываться впечатление, что это 1С создает такие фирмы, через 3-5 лет закрывает проект, чтобы все в очередной раз убедились: от 1С, как от судьбы, не уйти 🙂

    Типовая ситуация (ооочень частая к сожалению):

    1. клиент покупает подобные «штучки», как правило в результате платит даже больше, чем заплатил бы за 1С.

    2. ближе к концу внедрения внедренец и клиент устают друг от друга, и внедренец «исчезает».

    3. Клиент парится еще год-три в поисках других внедренцевсуппортов, готовый платить в два раза болдьше, чем запрашивают 1С-ники.

    4. В конце концов среди концов нашел конец он наконец в лице 1С.

    В редких случаях особо не визучие прежде, чем прийти к 1С проходят 2 цикла.

    ————————————-

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

    Reply
  17. larisab

    Способ мышления понятен — это как башни — близнецы взорваны самими американцами, СШГЭС — самим Дерипаской и т.д. — из того же ряда 😉

    Reply
  18. AnryMc

    (0) Я не специалист по разным учетным системам, но периодически хожу на разные выставки и презинтации. Практически не видел реализации в других (западных) системах следующего:

    1) «Осознание» события задним числом. Например: Приходит платеж от контрагента без указания договора, расчетного докеумента, в другой валюте (для них это нормально — см. например, Конвенцию ООН о международных договорах купли-продажи). Мы обязаны отразить поступление денег на текущий счет, и только через несколько дней понять по какому это договору (если их несколько) деньги, по какому курсу взаиморасчетов.

    2) Понятие «налоговое событие» — в западных системах вообще неизвестно…

    3) А например одна услуга, часть которой идет с НДС, а часть по 0 ставке, причем часть идет на затраты, а часть из прибыли и все эти 4 части — различные суммы…

    4) Зарплата вообще довольно запутанный участок (у каждого расчетчика свое виденье — причем правильное, из неоднозначности законодательства), плюс огромное количество методов удержаний и начислений, которое просто не снилось на западе…

    Reply
  19. cool.vlad4

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

    Reply
  20. AnryMc

    (0) Меня, и многих руководителей, возможно, заинтересовало бы сравнение различных систем по принципу:

    1) Автоматизированный участок (Склад, взаиморасчеты, … или Розница, Производство…)

    2) Количество рабочих мест

    3) Напряженность документооборота (среднее кол-во первичных документов в день, …)

    4) Сроки и стоимость приобретения и внедрения для различных систем.

    Если кто-то может привести такую информацию — буду благодарен.

    Здесь мелькали фразы типа » невнедряли ХХХ, и вернулись к 1С».

    Опишите хотя бы примерно: Почему не внедрили (Основная проблема), Сколько внедряли (Время) и Сколько потратили (деньги)

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

    Спасибо.

    Reply
  21. AnryMc

    (21) cool.vlad4, У них нет, им не нужно. Но мыто должны это купить и внедрить с нашими заморочками…

    Reply
  22. cool.vlad4

    прочитал ветку забавно..всех волнует зАднее число? не, ну только вдуматся заднее число…никто с этим не справляется, потому, что нет в этом логики,…а делать, к сожалению нечего…

    (23) не надо…нам и с 1Ской плохо как в анекдоте

    Все уезжают в Израиль, а старый еврей остается, его и спрашивают, почему?!!!!!-А мне и здесь, плохо…

    Reply
  23. quick

    Слишком большой порог входа для разработчика.

    Это же ентерпрайз жаба со всеми прелестями, это вам не 1с-ое жалкое подобие бэйсика.

    Тут и накосячить простора намного больше

    Reply

Leave a Comment

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