Убираем Splash Screen для платформы 77.27 (в Терминальном режиме)




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

44 Comments

  1. iov

    я так понимаю просто пропатченый файл?

    Reply
  2. grigr

    да пропатченный, в поиске искал и для платформы 77.27 не нашел

    если кто знает где есть, пожалуйста приведите ссылку

    (и что бы для любой версии sql и net)

    или как говорится не нравится просто не обращайте внимания

    сам уже долго пользуюсь и очень доволен

    Reply
  3. ACE$

    а смысл в этом? У меня 1с7 27-го релиза работает в терминале в штатном режиме, и проблем никаких не вижу.

    Для чего сплэш убирать?

    Reply
  4. grigr

    если не видишь смысл убирать, пусть и так все работает…

    не у всех быстрые каналы и безлимитка!

    эта картинка может до 30 минут грузиться и скушать около 1 мб

    тратится время и круглые суммы только за одну заставку

    Reply
  5. CheBurator

    (4) чтобы было быстрее — закрой на экране эту сплэш заставку любым другим окном — она пролетит быстро….

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

    А я вообще не понял, о чем речь. Где кому чего мешало?

    Reply
  7. grigr

    (5) да, а можно еще окно свернуть и подождать

    только у меня на сервер десяток переферийных точек, на каждой точке по несколько менеджерова, а таких клиентов несколько

    — в итоге несколько сотен человек. мне теперь всем это объяснять?

    (6) не парься. если не сталкивался с тормозным запуском из-за заставки у 77 то тебе это и не нужно

    Reply
  8. ACE$

    ага, теперь понял

    действительно, косяк есть такой. Сам сталкивался, когда лезу по рдп через инет. «Лечилось» переподключением сессии рдп. Благо канал позволял.

    Кстати, тормозит оно и на быстрых каналах.

    Reply
  9. grigr

    да, всегда тормозит

    а у меня 1с после патча через пол секунды запускается 😉

    Reply
  10. pip38

    я сам пользуюсь облегчённой заставкой, без неё бухгалтера бывает теряют 1с.

    она и видно, что пускается 1с и так, как штатная — не душит канал.

    если нужно пришлю…

    pip38@mail.ru Павел

    Reply
  11. grigr

    (10) спасибо, я уже к этой привык…

    Reply
  12. vikorn

    патчеров и статей в инете как это исправить как грязи, еще один велосипед

    Reply
  13. МимохожийОднако

    А в параметрах запуска разве нет NOSPLASH?

    Reply
  14. grigr

    (12) ссылку пожалуйста на патч для платформы 77.27 (я выше уже просил, никто пока не дал) или уже пропатченную!

    (13) есть, а ты пробовал с этим параметром запустить? или почитать для чего он, и разобраться для чего данный патч 😉

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

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

    Reply
  15. МимохожийОднако

    (14) Не надо нервничать. Вместо вопросов на вопрос дай более подробный комментарий. И люди к тебе потянутся 🙂 Я, например, с подобной проблемой не сталкивался. И с удовольствием бы положил в загашник эту примочку, если она реально полезна.

    Reply
  16. rvkiselev

    Сия поделка, вообще-то, есть нарушение лицензии, если, что 😉 делай как в (5) указано и будет тебе счастье…

    Reply
  17. grigr

    (13) про NOSPLASH читайте тут, это вообще другая тема и предназначение

    http://www.imho.ws/showthread.php?s=5e6a587f9986bdc954391730946733ef&p=1352629#post1352629

    (15) а никто и не нервничает 😉 . специально для вас (уже в 3 раз) добавил информацию в шапку, либо почитайте комментарии, тут уже все написано…

    (16) на (5) уже ответил отчасти в (7),

    хороша работайте в сетевом режиме, тогда работа с 1с81 в терминале так же нарушает все лицензии из-за необходимости делать BackEnd_8.x_Patch

    Reply
  18. grigr

    предложение протестировать — всем обладателям терминального сервера с 1с77

    ограничьте скорость сетевухи до 10 мбит и зайдите на него через подключение с 1с, или еще лучше попробуйте подключиться через не очень быстрый интернет:

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

    а затем подсуньте патченную ДЛЛ и сравните скорость запуска.

    Reply
  19. grigr

    про патч и нарушение Лицензии 1С — тут нет коммерческого ущерба для самой 1С (к тому же у меня все ПО куплено) т.к. никак не ограничивается ее функциональность.

    Фирма 1С сама предусмотрела в ряде случаев замену стандартной заставки или ее отключение (в режиме запуска OLE), этот патч просто дополняет еще один такой случай.

    Если начнут гонять и сажать за OpenConf (который тоже заменяет типовые файлы 1С), тогда и прекрачу это использовать 😉

    Reply
  20. vikorn

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

    + сами ддлки для 27 релиза патченные уже в сети валяются

    Reply
  21. zhurba

    (15) «Примочка» полезна реално ;). У меня канал на терминальный сервер нормальный, необходимости казалось бы нет, но длл-ку все-равно поменял — эфект ощутимый.

    Reply
  22. grigr

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

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

    Reply
  23. grigr

    (21) !!! первый человек, который попробовал и отписался. На широком канале тоже кстати приятней работать и даже локально когда 1с мгновенно запускается.

    я рад что Вам помогло 😉

    Reply
  24. andrue-t

    «… необходимо для работы в Терминальном режиме»

    если ты понимаешь что такое терминальный режим,

    в терминальном режиме «передается весь экран клиенту»

    и какая разница, что там на экране

    это скорее всего подойдет тем кто «тянет» прогу с сервера из административной установки…

    Reply
  25. grigr

    (25) да понимаю 😉 именно поэтому и нужен данный патч

    т.к. заставка при отрисовке выводится ПОПИКСЕЛЬНО высыпаясь на экран

    то при медленном соединении — при отрисовке на удаленом рабстоле 1 пиксела

    клиенту (токое ощущение) передается весь экран что создает еще больший тормоз!

    Reply
  26. andrue-t

    (26)

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

    это идет вразрез с принципами терминала…

    фрагмент:

    «# Когда сервер шлет данные для вывода на экран очень быстро и терминал не справляется с объемом рисования — терминал перестает обновлять экран и рисует картинку только в буфере кадра, в оперативной памяти. Это хорошо заметно в консольных приложениях, например, если из командной строки сервера выполнить команду ‘type длинныйтекстовыйфайл’. За счет того, что не происходит вывода в медленную видеопамять, терминалу удается просчитывать кадр быстрее и тем самым быстрее справиться с объемом отрисовки. C другой стороны, пользователи очень негативно относятся к тому, что терминал перестает обновлять экран. Человек любит всякое движение на экране. Поэтому через некоторые интервалы времени терминал обновляет картинку на экране, даже если в очереди еще стоят невыполненные команды от сервера. Маленькие значения сделают изображение на экране более живым. Большие значения могут привести к задержкам при обновлении экрана и за счет этого позволят терминалу быстрее выполнить большие объемы отрисовки.»

    Reply
  27. alexmal

    Работает! +

    Reply
  28. v.l.

    (16) У меня такой фокус не пройдет — в терминале в качестве среды выступает батничек, и explorer не грузится, и параметр nosplashscreen работает, вот только юзер тогда не запоминается

    Reply
  29. const000

    (19) А наличие ущерба не обязательное требование для подозрения в «пиратстве».

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

    (27) Это все реклама майкрософт. Эффективность и применимость этой фичи явно оставляет желать лучшего в данном конкретном случае.

    З.Ы. Было бы классно, если бы кто из зубров взялся написать простенькую для понимающего чаловека (как мне кажется ) приблудинку, которая из под себя запускает 1С и при этом поверх основного его окна рисует белый прямоугольник до момента пропадания этого окна — и никаких проблем с лицензией в принципе.

    Reply
  30. orefkov

    Убирать заставку совсем — имхо некузяво как-раз из-за того, что не виден процесс загрузки и тп. На медленных каналах достаточно сделать в качестве заставки одноцветный прямоугольник — даже при работе через модем грузиться махом. http://www.itland.ru/forum/index.php?showtopic=5223

    Reply
  31. Shagan

    Способ от orefkov самый лучший, спасибо.

    Reply
  32. grigr

    (27) не совсем врубаюсь в алгоритм отрисовки, но факт есть факт, 1с тормозит при запуске

    (29) а какая разница как стартует платформа? из батника или нет, и при чем тут эксплорер?

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

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

    (31) а что мне дает лицезрение процесса загрузки??? какая сейчас таблица грузится или индексируется.

    хотя Ваше право можно любоваться и на черный прямоугольник.

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

    пс

    давайте не будем больше морочаться с вопросам лицензий…

    Reply
  33. v.l.

    (33) у меня батник стартует 1С. Если explorer не грузится, нет возможности всунуть окошко — ибо 1С выступает в качестве «оболочки», т.е. среды.

    Reply
  34. grigr

    (34) а в чем собственно проблема, какое окошко ты туда хочешь вставить?

    у меня в терминале тоже 1с стартует вместо оболочки и эксплорера нет

    Reply
  35. const000

    (34) А почему первой строкой батника не прописать запуск окошка? Или программка, рисующая окно будет из себя запускать 1С, а сама грузиться батником вместо нее.

    Reply
  36. jonny_s

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

    Reply
  37. grigr

    (37) проверил работает!

    Reply
  38. Lars Ulrich

    проверил, работает и на 77.25.. прикольно 🙂

    Reply
  39. grigr

    (39) лучше аналогичный патч сделать на длл-ке от 25 релиза

    на всякий случай

    Reply
  40. rvkiselev

    (38) Это для тебя был новостью?

    Reply
  41. rasswet

    у меня работает.

    Reply
  42. valbir

    Работает на 7,7 2.27 проверено!

    Reply
  43. grigr

    (43) это вообще что??? жаль что за такой комент не могу тут Минус поставить

    (Модераторы, плиз удалите это сообщение)

    Reply
  44. asg1975

    Все работает! Респект. Пользовался частенько пока 8-ка не задушила 7-ку (почти :))

    Reply

Leave a Comment

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