Как отключить рекламу и обновление при запуске БП 2.0, 3.0




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

27 Comments

  1. HameleonA

    Уважаемый, вы о чем??? Какое снятие конфигурации с поддержки? Во-первых, кто тот человек, который из за напоминания будт снимать конфигурацию с поддержки, а во-вторых, это делается и без снятия…например так: http://infostart.ru/public/201803/

    Reply
  2. alexdm

    Бредовое решение. Этим вы на корню убиваете возможность обновления конфигурации через интернет при наличии ИТС и штатной конфы.

    Reply
  3. pragromist

    (1) HameleonA, а ещё три окна куда деть?

    Reply
  4. Yury1001

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

    Reply
  5. pragromist

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

    Reply
  6. alexdm

    (4) Yury1001, Это, похоже, очень умный бухгалтер попался… Встроенный механизм обновления очень сильно помогает, когда конфа штатная, юзеры сами обновляются без проблем, хотя и дольше, чем руками.

    Reply
  7. alexdm

    (6) Понимаете, то, что Вы опубликовали — это вполне очевидно для 99% программеров и не требует практически никаких затрат времени в случае измененной конфигурации. Если конфа штатная, то это — не решение. Так что ценность Вашей публикации стремится к нулю, увы…

    Reply
  8. pragromist

    (7) alexdm, хочу вас заверить такие бухгалтера есть и чем меньше город — тем их процент выше)

    Reply
  9. pragromist

    (8) alexdm, это моя первая публикация — выбрал самое простое из часто встречающегося, от этого и буду расти над собой.

    Через пару часов выйдет продолжение http://infostart.ru/public/336794/ надеюсь получится лучше)

    Reply
  10. pragromist

    ну, точнее не продолжение, а следующая попытка

    Reply
  11. alexdm

    (10)

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

    Самое простое для большинства здесь настолько очевидно, что нет смысла изобретать велосипед. Так что публикуйте что-нибудь более-менее серьезное, посмотрим…

    Reply
  12. pragromist

    (12) alexdm, буду стараться

    http://infostart.ru/public/120053/ )))

    Reply
  13. alexdm

    (13) Ну не до такой же степени… :)))

    P.S. У меня куча всего написанного за 15 лет работы, но пока что не считаю достойным это здесь выкладывать.

    Reply
  14. Созинов

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

    Reply
  15. OrsoBear

    Считаю, что это минус в карму самой фирме 1С.

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

    К тому же, чекбоксы вроде «Не показывать это сообщение» не работают.

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

    Решение топорное, но, предложить другого, более изящного, пока нечего.

    Потому пусть будет.

    Reply
  16. urbanist

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

    Reply
  17. ufedor

    Считаю, что этот топик необходимо поместить в раздел «вредные советы»

    Кажется, где-то тут пробегала обработка которая отключает рекламу и прочие сообщения штатными способами без изменения конфигурации

    Reply
  18. clev

    Посмотрите мое решение:

    http://infostart.ru/public/318735/

    В БП 3.0 точно работает без снятия конфигурации с поддержки. По аналогии можно и для 2.0 сделать.

    Reply
  19. alexdm

    (16) OrsoBear,

    Считаю, что это минус в карму самой фирме 1С.

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

    К тому же, чекбоксы вроде «Не показывать это сообщение» не работают.

    Плюсанул только за это. У меня, блин, уже сформировалось стойкое неприятие бренда «Петелинка» только из-за зае задолбавшей рекламы в 1С…

    Reply
  20. slimper

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

    http://infostart.ru/public/242593/

    http://forum.infostart.ru/forum1/topic87810/

    Reply
  21. Константин С.

    Публикация из разряда 18+, чтобы «дети» не читали

    Reply
  22. pragromist

    (19) clev, в 2.0 некоторые окна открываются безусловно — видно по тексту

    мне больше понравилась ссылка http://infostart.ru/public/242593/

    Reply
  23. alexdm

    В последних версиях ЗУП 2.5 тоже появилось предложение перейти на 3.0… Ладно, когда предлагали с БУХ 2.0 перейти на 3.0 она хотя бы была уже более-менее вменяемая, ЗУП 3.0 сейчас это паровоз на тротиле, когда рванет — непонятно, в следующем релизе только обещают доделать многие фишки, которые нужны были еще полгода назад и нормально функционировали в 2.5.

    Reply
  24. Stim213

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

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

    И, кстати, ваша проблема решается и без изменения конфигурации.

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

    к ярлыку 1С дописывается подстрока запуска этой обработки /Execute

    Reply
  25. b-dm

    Спасибо за статью, мне она понравилась, так и делаю в своих конфах, отключаю всю эту лабуддень.

    Reply
  26. Vitko_freedomcars

    Спасибо большое. Сделал Вашим способом, все очень радует.

    А нет ли у Вас подобной инструкции для ЗУП 2.5? Там тоже реклама, только не получается применить метод, предложенный для БУХ 2.0

    Reply
  27. Gorr

    Рекомендую для этого использовать возможность добавления расширение модулей появившуюся в платформе 8.3.9 и позволяющую вместо типовых процедур клиентских общих модулей вызывать свои процедуры и функции. Снимать конфу с поддержки вовсе не понадобится.

    Все что нужно для этого сделать это прописать в расширение общего модуля ОбщегоНазначенияБПКлиент всего три строки кода:

    &Вместо(«ПредупредитьОНеобходимостиОбновленияПрограммы»)

    Процедура Пустышка(Параметр)

    КонецПроцедуры

    Reply

Leave a Comment

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