Новая платформа 8.2.12.80. Можно ли ее ставить?




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

25 Comments

  1. fishca

    А проверка запуска на этом релизе на копии базы производилась?

    Reply
  2. nikresh

    У меня было подобное, но значително мягче 🙂

    вот такое ещё наблюдаю:

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

    дипетчер задач Windows показывает, что значительно растёт объем памяти под процессы rphost.exe

    и не уменьшается при завершении работы в «Конфигураторе» — до следующего перезапуска сервера 1С.

    Reply
  3. Re:аниматор

    у мя все работает на 8.2.11.236 при попытке перейти на 8.2.12.80 начались вечные ошибки, все ошибки фатальные с закрытием программы. 1с открылась с худшей стороны ((

    http://www.infostart.ru/forum/forum26/topic34871/

    Windows 7

    Reply
  4. batyrkin

    На сайте 1С висит список официально признанных ошибок километровой длинны, причем даты выхода следующего релиза платформы даже не запланирована 🙂

    Я на этом релизе работал только в конфигураторе, но тоже ощутил тормоза и т.д.

    ЗЫ — похоже у них кто то из ведущих в отпуске или уволился 🙂

    Reply
  5. Поручик

    Как .о..й, гм, нутром чуял. Поработаю я пока с 220, нервы целей будут.

    Reply
  6. iov

    Лучшее враг хорошему. А как показало время 1С тестирует все на пользователях. Причем за их же деньги. Чтож может через годик платформа и станет надежнее.

    Reply
  7. Alav

    (6) Быстрее 1С выпустит платформу 9.0, чем «платформа и станет надежнее.»

    Уже год прошел с момента официального выпуска, а она с каждым релизом надежнее не становиться. И после выхода очередного релиза тут же следом еще 5 релизов с исправлением. Причем если после 10 вышло 2 «патча», то в 11 и 12 их уже было по 4.

    Reply
  8. Melfis

    После установки 8.2.12.80 сервер начал валится буквально на ровном месте. Отваливается процесс rphost без видимых причин. После перезапуска может проработать и пару суток, а может отвалится и при подключении первого же клиента. Думаю вообще откатится вообще на 8.2.11.232 ибо с ней вообще никаких проблем не было кроме отваливания сеансов пользователей. (Сеанс отсутствует или удален) . Так что 8.2.12.80 явно сыровата. БД Postgre/ OC Fedora Core 11/ Железо Xeon E5506 2130, 32гб DDR3. Крутится все вместе на одном сервере. Пробовал запускать на отдельной машине в OVZ контейнерах 8.2.12.80, отваливаются даже без нагрузки, что там нагрузка, даже без сети валятся. Все мы бета-тестеры 1с 😀

    Reply
  9. iov

    причем продавцы уверенно продвигают 8.2 и потом клиенты смотрят ТАКИМ взглядом когда говоришь что они приобрели геморрой за свои же деньги и желательно откатится на 8.1 или на крайний на 7.7 (да простят меня восьмерочники в 7.7 проблемы все уже облизаны и известны) там хоть за живучесть не так страшно.

    Reply
  10. Поручик
    желательно откатится на 8.1

    Уже не откатишься, если база сконвертирована и конфа заточена под 8.2.

    Reply
  11. BoricH

    Я так понял, не я один на эти грабли наступил..

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

    Тут я повелся на то, что в нете не попадал на жалобы на платформу, и на то, что 1С, по прохождении недели не запланировали новый билд платформы..

    З.Ы. Хотя, если быть совсем честным, тонкий клиент на новой платформе был более шустрым..

    Reply
  12. Evgeny2009

    Я сначала ставлю на клиенскую свою машину, если всё в поряде то на сервер ставлю. А тут почитал статейку эту. качнул поставил. Сразу происходит завершение работы 1С. Плюнул, снёс! поставил … .75. Всё в норме.

    В тех поддержке вообще просят на 8.1 откатиться.)) Вот она реальность!

    Reply
  13. Арчибальд

    С учетом анонсированного закрытия 8.1. с 11 года — ребята попали…

    (12) На семерку катиться надо…

    Reply
  14. Sergafan10

    Во попадалово! А я на неё переходить с клюшек собрался 😮

    Reply
  15. Rabajaba

    Поставил 12.75 в день релиза — полет нормальный, ни одной ошибки.

    Поставил на 4 разных компа + сервер, в рабочей до 15 человек.

    Почитайте changelog на первый релиз 12.х, у меня там несколько критичных ошибок исправлено, на 11.х уже обратной дороги нет 🙂

    Reply
  16. OBEH

    Я тоже пока на 8.2.12.75 тестирую и дорабатываю конфу. Вроде пока без проблем.

    Был один случай, когда сервер, на котором стоит 8.1 в рабочем режиме ЗУП и 8.2 в тестовом завис прилично. Сказали, что 8.2 его загрузила полностью. Сильно не заморачивались, перезагрузили сервер полностью. Не хотел бы таких повторений постоянно и на рабочей базе.

    Reply
  17. Gilev.Vyacheslav
  18. BoricH

    (17) Это конечно не может не радовать.. Но судя по всему у 1С не хватает тестеров..

    Вот они и проводят эксперименты..

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

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

    Reply
  19. Sergafan10

    (18) По RDP или VNC 😎

    Reply
  20. Sergafan10

    Что-то мало в описухе исправленных ошибок. Здесь вроде о большем кол-ве речь идёт.

    Reply
  21. BoricH

    (19) ..ну да.. когда у тебя более 40, вопящих при каждом обновлении, подразделений, на каждом из которых минимум по 3-5 одновременных подключений…

    У меня сейчас общее количество «тонких» более 30 шт, а планируется до 200…

    P.S. А после последнего моего обновления платформы… Вспомнили и «1С-Ексель», и «Твоя 1Ц» или «Ц1» 🙂

    Reply
  22. Chif13

    Обновили до 8.2.12.80. Внесла изменения в конфу, пыталась сохранить конфу с реструктаризацией… 100 раз перекрестилась, что копия была… Писал что нарушена структура и не входил даже в конфигуратор. Сохраняла в файл, на файловой копии реструкторизировала, снова в файл и заливала в реал.базу… Вся ночь коту под хвост… Спасибо родной 1С за новую платформу, скучать не дает….

    Reply
  23. BoricH

    А в 1С таки зашевелились..

    http://users.v8.1c.ru/getpg.aspx?id=Platform_8_2_12_92

    14.11.2010 — Ориентировочная дата выхода 8.2.13

    Reply
  24. BoricH

    💡 Мне вот недавно друг подкинул наблюдение: у 1С все парные релизы глючные, а непарные — нормальные..

    Сразу вспомнил 7.7 (7.70.027,025,023,021,019) — стабильные, (7.70.020,022,024) на памяти вообще нет.. Видать глючные были, и их никто не ставил…

    8.1 — не особо запомнилась, но.. последний релиз на сайте 1С 8.1.15..

    8.2 — (8.2.11.236 — стабильный), 8.2.12 — глючный.. Судя по всему 8.2.13 должень опять быть стаблильным!

    Reply
  25. sb007

    8,2,12,80 + PostgreSQL на линуксе..

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

    Reply

Leave a Comment

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