<?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='\
полезная вещь +1
Ок.. и у самого так и тянется рука на крестик кликнуть…
+1
+1
Очень простенько написано, но вещь незаменимая! +1
кр. сестр. тал-та )
У меня почему-то крестик пропадает только когда программу свернешь, а потом развернешь, а сразу при загрузке крестик есть! Работаю с RDP через сохраненный ярлык.
его видно но насамомделе его нет…) после перерисовки он и пропадает… завтро новая версия будет с ещеодной фичей…
версия 1.0.1.0
Иногда пользователи выключают компьютер, а терминальное подключение в этот момент
например свернуто. В этом случае, оно тоже благополучно отваливается и висит на сервере
Теперь программа при завершении работы компьютера/выходе из сеанса
если открыто окно терминального подключения, выдаёт
соответствующее предупреждение и выключение компьютера
приостанавливается
ps, сообщение «Перед выключением компьютера необходимо закрыть 1С:Предприятие.»
специально хранится в ресурсах, если кому не нравится или нужно другое, можно поменять
ВАЖНО!!!
Необходимо запускать программу раньше запуска терминального подключения
например, поместить в автозагрузку.
У меня не срабатывает. Windows 2003 Server Enterprice Edition.
В чем может быть причина?
(Girdar):
программа запускается на терминальном сервере или на клиенте?
запускается до запуска терминального подключения?
ОС на клиенте?
версия терминального клиента на клиенте (файл mstsc.exe)?
кто виноват?
что делать?
в каком году было восстание спартака?
Вот ещё бы при запуске из терминала работала. 🙂
(Anonymous):вот бы ещё понять что вы имеете ввиду…
Спасибо автору. А то своих ландухов скоро убивать буду.
Спасибо автору.
Все хорошо, крестик пропал… только вот одна проблемка, совсем маленькая — выключить комп не могу… точнее сказать «нормально» не могу… из розетки пробовал — выключается. ))) Вообщем при попытке выключить/перегрузить/завершить сеанс появляется окошко с надписью «Перед выключением компьютера необходимо закрыть 1С:Предприятие.» и кнопочкой «ОК». Я, значит:
1. нажимаю «ОК» после чего разворачивается терминальное окно (без «Х»),
2. потом я его сворачиваю (т.к. мне ничего больше не остается) и пробую опять выключить/перегрузить/завершить сеанс
3. переходим к пункту «1»
вот такой вот замкнутый круг! ))
это одна из функций программы, о чем честно написано в описании… )
надо завершить терминальный сеанс, или использовать первую версию программы, (ссылка выше), она не контролирует выключение компьютера…
а что мешает в AD прописать завершение отключенного сеанса?
ничего не мешает… только тогда 1с закрывается аварийно и требует переиндексации…
да, и незабываем что кроме терминала у некоторых 1с ещё работает в сетевом варианте 🙂
так, предыдущий мой пост нечитать… праздники праздники…
у меня чтото не работает (Сервер 2000).
скачал, распаковал, запустил екзешник и ничего….
Подключал с сервака, до подключения сесий терминальных
Подскажите может чтото нетак делал??
ехе запускается на клиентском компьютере или на сервере?
какая версия терминального клиента на клиенте (файл mstsc.exe)?
версия 6.0.6001.18000
делал так,
перегрузил сервак, пока никто еще не подключился к нему запустил екзешник с сервака, но ничего не произошло,
опять перегрузил, думал что изменения вступят в силу.
Зашел под юзером, запрета нету.. Вот думаю что не так делал??
>запустил екзешник с сервака
всёравно непойму… запустил на сервере или запустил на клиенте с общей папки на сервере?
зы, запускать надо на каждом КЛИЕНТСКОМ компьютере, а не на СЕРВЕРЕ
зыы, 6.0.6001 — это от висты? уменя на xp SP3 только 6.0.6000
ок попробую с юзеров..
нет 6.0.6001 это у меня от ХР прошки, 3 сервис пак..
ура заработало..
Скажите а есть обратная сторона этого действия..
Как сделать обратно.. если вдруг я передумаю что у меня повился обратно крестик???? Что нужно удалить???
чтобы крестик появился заново, достаточно убить через диспетчер задач процесс
HideRDPxButtoN.exe (ну или убрать его из автозагрузки) и запустить терминальное подключение ещё раз…
я тоже присоеденился к списку у кого заработало, свой «+» вам добавил.
Не в теме пишу но моя прозьба похожа на эту новость..
Может у кого то есть какаято утилита которая позволяет к примеру через 30 минут если пользователь не работает в 1с (в терминальной сесии) автоматически выгонять его??
(28) хм… Саша, не надо этого делать, даже если и найдешь — воплей будет немерянно.
На уровне терминалов — не проблема прибить сессию.
А что значит пользователь не работал? А если бухша сидела и смотрела отчет?
Клавиш не нажимала, мышку не двигала, просто сидела и смотрела.
Искала знакомые цифры 🙂
(28) в свойствах rdp есть время простоя … и привет, правда, если кто-то запустил длительную обработку/перепровод и в этот момент «не активен» , то после прибития, неудобно как-то получиться 🙂
(29) Как бы выводится окошко с предупреждением и обратным отсчетом до закрытия…. Как бы так…
(31) А ей как бы в этот момент директор позвонил и она «на минуточку» отвернулась 🙂
(28) Цель какая прибития? Сэкономить ресурсы сервера?
(28) есть на проклабе такое
«Компонента Waiter является узкоспециализированной и реализует одну-единственную функцию: она умеет определять время бездействия пользователя.
Бездействием считается период, в течении которого V7 не получает сообщений ни от клавиатуры, ни от мыши. Компонента имеет всего три метода: включить слежение, отключить слежение, вернуть время бездействия. » (Гуров С.)
Запустить обработку ожидания и в ней проверять:
— было ли что-то нажато
— сколько «периодов» прошло с момента последнего запуска обработки ожидания, если больше 2-х, — значит, что-то выполнялось.
Цели было вообще то 3.
1. Главная цель была вообще то что выходят неправельно, тоесть висит сесия, вот с помощью этой утилиты и решил проблему с «крестиком».
РЕШЕНО..
2. Когда пишу всем сообщение чтоб строччно вышли из базы, (через 1с-ЧАТ)чтоб как то привлечь внимание к сообщению (ну типа чтоб спикерфон пищал до тех пор пока сесия 1с не закроеться). Юзеров где то 30 чел. пока всех оббегаешь по этажам чтоб вышли правельно то замучишься. А так спикер пищал бы до тех пор пока не закроеться сесия.. (Если юзера нет, то коллега завершила бы работу соседнего компа).
Пока не решил эту задачю.
3. Это таймер на простой.. Но если вы не рекомендуете так выгонять, то она отпадает.
Остаеться решить № 2.
3.
(34) Ну и ? И какие могут быть проблемы в терминале ?
Тупо прибиваешь открытые сессии сам и привет…
Если я правильно понял, программа должна быть запущена до запуска терминального режима. Это неудобно.
Например, у меня подопечные находятся не в соседней комнате, а в соседней области. И квалификация в работе с ПК у них очень низкая. Я бы мог им выслать сабж, чтоб они его положили в указанное место. Потом бы я в батник, который выполняется при удалённом соединении, прописать запуск сабжа… Но автор утверждает, что это невозможно. А это значит, что при появлении каждого нового пользователя я должен ехать в соседнюю область и ручками класть в папку автозапуска сабж. Неудобно же!
под батником подразумевается стартовая программа в настройках терминального подключения или ярлычок на столе у пользователя?
Как бы там нибыло, программа работает на стороне клиентского компьютера, а не изнутри терм. сервера. А вот как доставить её туда уже решай сам. Можно написать небольшой инсталлятор помещающий её в реестр в автозагрузку, или тупо sfx архив вроде
Path=»%systemdrive%Documents and SettingsAll UsersГлавное менюПрограммыАвтозагрузка»
Setup=»%systemdrive%Documents and SettingsAll UsersГлавное менюПрограммыАвтозагрузкаHideRDPxButtoN.exe»
Silent=1
Overwrite=1
и отправить его по почте
Вот даже не знаю как сказать… То ли эта приблуда, то ли другая причина: после установки не могу выключить комп (Пуск-Выключить не реагирует никак), хотя все проги и теминальные сессии закрыты…. Версия 1010.
Винда ХР2008 (СП3).
Тут все слепые собрались, включая 3 этажа бухо-теток ❓ Данная обработка не убирает «крестик» а сворачивает указанную кнопку в вертикальную линию. Если поводить мышкой на границе соседней кнопки «свернуть к окну» вы увидите всплывающую подсказку «закрыть», клацнув на которую терминальчик закроется. Но для лоха сойдет 8)
респект и уважуха!
Блин, как давно мучался этой проблемой!
Плюсы:
Автору за реализацию нужной фичи!
AlexDnepr за зоркость!
В качестве минусов решения всех рубить из терминала могу привести пример когда бухия запустила проведение на ночь.. А тут их.. А утром Вас…
Сама софтина полезная забрал на всякий…
Но вот еще проблема а у меня из инета на терминал ходють, с домашних компов. (ну правда и этот вопрос решен был подключением всех «домашних» на отдельный сервак и запуск тулузы там, но не у всех есть «отдельный» сервак для этих целей.)
А вообще данная проблема была решена одним замечательным способом.
Написана видео инструкция ПРИНУДИТЕЛЬНО ПОКАЗЫВАЕМАЯ при запуске терминала все кто остался в терминале не по делу получали штраф — 500 руб. вечером (иногда приходится и так работать) если кто-то не вышел — снимок экрана и списка процессов пользователей либо пользователи сами звонили и просили их выкинуть (забыли срочно уехали и другое) как итог всегда вкусное кофе и денежные пожертвования в копилку (брать 100 руб совесть не позволяет а вот в копилку суют- самое оно. )
А да и соответственно штраф оформлен как приказ от генерального.
(43) А если сам генеральный нем умеет нормально выходить (да и научиться не хочет)? 😀
Тоже штраф?
(44) Не тут маааленькая хитрость. Я принципиально не знаю паролей пользователей а после того как я закрыл принудительно его недописанный документ, он запретил это делать если только по звонку (а звоню я в 24.00 или 2.00) и после этого спокойно сплю до 12-13 часов. а если трубку не взял то на утро он и ничего не скажет почему не сделано сам же распорядился. Так что крайним не останусь.
Знаки припинания — зло…. ибо их надо ставить.
ИМХО лучшее решение данной проблемы. Респект автору.
Маленький минус: программа немного устарела и работает только на mstsc версии 6.0.6000 и старше; в частности в Windows XP (SP3) с обновлением KB956744 не работает :cry:.
Чето не работает. Стоит server 2003 (32-bit) — запускаю прогу вручну, с автозагрузки, с включенной 1С-кой, с выключенной — кнопка Закрыть как была так и осталась… 😥
> Чето не работает. …. с включенной 1С-кой
А при чем здесь включена 1С или не включена ❓
Данная прога «убирает» крестик в панели клиента терминального сервера и ни-че-го «не знает» об 1С ❗ Кроме того mstsc должен быть версии 6.0 или старше — см. пост №47.
версия 1.0.1.1:
добавлена поддержка RDP клиентов от XPSP3, Vista, Windows7
Заглянул в исходники, дарю самый простой способ проверить на повторный запуск;)
Показать
спасибо
то что нужно
Пользуюсь очень давно. Очень полезная вещь. Отдельное спасибо за W7
Годная вещь.
Поставим нашим бухам.
Очень простенько написано, но вещь пришлась по вкусу нашему руководству.
а как вообще убрать верхнюю панель?
(56) в свойствах подключения закладка Экран, там галка
(57) да, спасибо. Уже и сам нашел. Только напрягает то, что панель показывается первые 5 секунд
Спасибо автору. Все работает Хорошо. Кнопка «Х» становится недоступна. Но ЕЁ можно нажать между кнопок «Прямоугольник» и «Х» доступна маленькая полосочка Win2003Server.
Хоть штрафуй, хоть предупреждай (как написано выше) все равно находятся те, кому ‘проще и быстрее’ выходить из терминальной сессии через [X]. Данное решение помогло этих злобных юзеров ‘приучить’ как культурно надо выходить.
Спасибо от админа и коллег по сопровождению 1С.
GK.CBR
У меня заработало Windows Server 2003, тоже присоеденился к списку у кого заработало и поставил свой «+» .
А на 2008 64- битном будет работать? А то извели юзвери.
Огроммммное спасибо!!! то что нужно!!!
Правда прививать придется с боем…
Хотели воспользоваться данной программкой на предприятии (в домене), но наблюдаются какие-то странности, а именно, если у пользователя нет рабочего стола, т.е. в настройках прописан запуск приложения, то у одних пользователей при входе прописанное приложение не запускается (чистый экран), у других — очень долго завершается терминальный сеанс при закрытии приложения(1С). При отключении проги всё нормализуется.
(65)программка никаким образом не лезет в терминальный сеанс, она тупо скрывает крестик. думаю просто совпадение
(66)
ну как это не лезет, если работает напрямую с окном терминала?
(65) sp,
и как тогда затавить пользователя выйти?
(18)
и как тогда решить этот краеугольный вопрос?
Ну не может закрыть по крестику, ну оставил сессию открытой, ну сервер автоматически закрыл неиспользуемую сессию…
А как быть с 1С, которой очень не нравится подобное обращение?
В windows 7, в утилите версии 1.0.1.1 кнопка терминального сеанса в окне исчезает, но если окно с сеансом свернуть, то в панели задач при наведении указателя на окно кнопка Х присутствует. Получается, что проблема закрытия сеанса не решается полностью… Есть ли решение этой проблемы?
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced]
«ExtendedUIHoverTime»=dword:000186a0
этот параметр реестра устанавливает очень долгую задержку перед показом всплывающего меню, фактически отключает его
но ещё остается правый клик на свернутом приложении, там тоже есть кнопка закрытия, я так и не нашел как его отключить
Стоит и у меня эта пряталка крестика
Все это все равно костыли
Пока пипл не поймет и не прочувствует своим телом что любая ошибка это извините мпх в (_._) ничего принципиально не поможет. У меня пипл уходит просто забывая выйти из базы. Пока не сделать что при неправилтном завершении или незавершении работы турникет на выход не откроется и придется для исправления ситуации перется на тпетий этаж — только такие злобные методы рулят. Остальное — пофиг
10 лет почти прошло, ужс)
Спасибо, полезно.
(71) а до сих пор актуально….. 😉
(71) настолько актуально, что было бы просто идеально сделать под win10 😹
(71) отставить, все ок, спасибо