<?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С остается открытой на сервере. В сети был способ редактирования файла mstsc.exe (терминальный ехе-шник), после которого при нажатии на «крестик» полоски терминала появлялось сообщение типа: «Сначала закройте 1С». Правда, редактирование файлов Windows это нарушение закона! Так же в сети есть способ изменения стартера 1С, т.е. при закрытии 1С в терминале – закрывается и терминальная сессия, удобно и пользователи не вредят.
Прикольно. Только у меня 1440 х 900 поставил 1438 х 850
действительно, вещь хорошая… Но если пользователей больше сотни, и все «хотят», это всем выставлять ручками?
Конечно это можно допилить политиками… Или еще лучше, расчитывать высоту экрана терминальной сессии исходя из высоты рабочей области клиентского экрана.
А если набрать в командной строке «mstsc /?» то можно увидеть еще много чего интересного
Простенько и со вкусом.
(1) Насчет закрытия пользователем окна терминала вместо 1С — в свойствах пользователя на сервере выставляем кому что надо: для понимающих — чтобы сессия отключалась, для непонимающих — чтобы закрывалась.
(3) Если пользователей много — лучше всего ставить Citrix. Вышеописанное — для ситуации когда его по каким-то причинам поставить нельзя.
(5) Ситуация эта когда нет желания платить за доп лицензии цитрикса 😀
когда можно обойтись стандартным рдп клиентом
ПС плюс в копилку
(1) помогает вот это:http://infostart.ru/public/14344/
Все гениальное просто…. Плюс….
могу сказать, что цитрикс сам по себе вещь весьма не дешевая… Посему у нас как рез те самые 100+ зверей сидят под стандартным mstsc
а при закрытие 1 с сессия остается активная, т.е. 1с закрываеться а терминальное окно нет остается просто синий экран который приходиться выключать через админа. Это как можно решить.
(10) Надо понять причину незакрытия. Их бывает несколько.
1. 1С запускает какую-то другую (невидимую) программу, которая не закрывается. Например, внешняя компонента защиты конфигурции доп. ключом (не путать с ключем самой 1С). Дело в том что если Вы логинитесь на рабочий стол, то выбор в Эксплорере завершения работы — это именно завершение работы (однако если просто убить процесс эксплорера завершения работы не произойдет).Если у Вас стоит запуск конкретной программы — то ее закрытие это не есть закрытие сессии, которое происходит при заверении всех запущенных программ. Проверяется анализом запущенных процессов. Попробуйте также вместо 1с запускать блокнот — будет сессия закрываться или нет.
2. Просто не закрывается сессия — по аналогии с тем, как бывает что при выборе завершения работы windows окошко «завершение работы» горит несколько минут и потом в системном журнале находим сообщения «неудалось сохранить реестр» и пр. Причины по моему самые разнообразные — левый софт, сбоит железо, винда криво активировалсь и пр.
Размер окна терминала легко задаётся ключами /w: (ширина) и /h: высота.
Команды смотрятся mstsc /?
Если у Вас Windows Server 2008, то рекомендую технологию RemoteApp.
http://www.oszone.net/5542/ и здесь http://gotch.techfaq.ru/archives/282
«Terminal Services RemoteApp™ (TS RemoteApp) – это технология, позволяющая пользователям получать доступ к удаленным приложениям через службы терминалов. Удаленные приложения на базе технологии TS RemoteApp ведут себя так, будто они запущены на локальном компьютере пользователя. Пользователи могут запускать эти приложения бок о бок с локальными. Если пользователь запускает на одном сервере терминалов несколько удаленных приложений, все они выполняются в рамках одного общего сеанса служб терминалов. Вы можете использовать веб-доступ к службам терминалов (TS Web Access), являющийся ролью служб терминалов, для обеспечения пользователям доступа к приложениям TS RemoteApp с помощью веб-обозревателя.»
Инструкции:
(12) спасибо за совет насчет /w: и /h:
я часто смотрю и подправляю базы по интернету через mstsc, а когда
видишь что происходит на твоем рабочем столе, действительно, удобно.
Спасибо! Очень познавательная статья.Мне, как буха,перебивающегося на подножном корме,очень пригодится!!!
однозначно плюс — удобно!
Вот и решина проблема старых принтеров 🙂 при подключение в терминал, а то старые принтеры под 2008 и 2008 R2 не робят 😥 , драйверов нет,
может кто знает как запустить Canon LBP-810, xerox 3110, напишите kobol74@ya.ru 😉
Огромные плюсы +++++++++++++++++++++++++++++++++++++++++
(17) Попробуй использовать программу ScrewDrivers — это быстродействующее и простое в использовании приложение. Этим решением могут воспользоваться администраторы, которые хотели бы предоставить пользователям возможность печати документов из любого приложения на любом сетевом принтере. ScrewDrivers автоматически обнаруживает атрибуты пользовательского принтера и создает полнофункциональный виртуальный принтер.
Плюс и только плюс, спасибо очень облегчили жизнь!
+
Странно — ниогда с полосами прокрутки в терминале не сталкивался. Работаю с 8-кой из под ХР
Однозначно +.
Попробую реализовать у себя такое..
Юзайте бесплатную программуhttp://remotedesktopmanager.com/
И никакой головной боли с размерами экрана и черными полосами не будет 🙂
То что надо. ❗
огромный плюс.
Citrix отказались от данного решения (в пользу стандартных функций)
Проблем нет полет нормальный. А в качестве минусов решения всех рубить из терминала могу привести пример когда бухия запустила проведение на ночь.. А тут их.. А утром Вас… Сома софтина полезная забрал на всякий…
Но вот еще проблема а у меня из инета на терминал ходють, с домашних компов. (ну правда и этот вопрос решен был подключением всех «домашних» на отдельный сервак, но не у всех есть «отдельный» сервак для этих целей.)
сори ссылка на софтину порерялась
http://infostart.ru/public/14344/?PAGEN_1=2#comm
очень даже спасибо огромное, меня бухгалтерия ужо зако….ла.
Так что еще раз огромное спасибо
Удобно и практично.
Однозначный +
Вещь то удобная но вот что-то мне подсказывает, что таким образом у бедного Админа останется куча запущенных 1с в терминале… ТК пользователи, наверняка будут просто закрывать Окно терминала не вырубив 1с — следовательно можно забыть про автоматический бекап баз))
(31) Эта проблема как раз решена — см. конец статьи — «Дополнение от 23.12.2009» и последний скринштот. Видимо что-то глюкануло и вам выдалась первоначальная версия статьи, где этого дополнения не было!
HideRDPxButtoN и никто после этого «не то окно» не закроет.
Просто ставите «проблемным» клиентам программу
)) А ну тогда — все ок… Соглашусь со всеми, вещь удобная, спасибо…
HideRDPxButtoN я уже давно качал, а то уже не знал что с пользователями делать..
кстати, можно использовать ещё параметры запуска mstsc
/w и /h (ширина и высота соответственно)
интересно — а можно ли сделать так чтобы окно mstsc запускалось без заголовка стандартного — на него бездарно расходуется экранное пространство
(34)
Раньше (на CRT мониторах) можно было картинку немного растянуть по вертикали и сместить вверх.
полезная штука! спасибо!
Нужная и полезная вещь! Спасибо!
(1) Даже если пользователь закрыл окно терминала (при запущенной 1с), всегда есть возможность открыть его с того же места. И дать пользователю П…! Иначе Админ всегда (хоть по ходу работы) может вмешаться в сеанс пользователя так, что тот будет 2!!! мыши на экране видеть! Али я не прав? росто следить за ними надо! А то начинают с «Косынки», а кончают… сервер не справляется. Я имею ввиду прокси…
Поставил 974 (1024 — 50) все подошло.
Спасибо, стало гораздо удобней
Отличная фишка, сам очень долго ковырялся пока не зашел сюда, теперь всем настроил терминал, сеть не тормозит, все счастливы, а еще вопрос, в терминале можно ведь чтоб именно 1с запускалась, но допустим нужно несколько баз 1с держать открытыми это нужно для каждой базы отдельного пользователя? или просто разные ярлыки запуска базы? я пробовал и так и так что-то не получилось ((
(40)… а можно просто ПОЛНЫЙ доступ на сервер дать, который ограничен правами пользователя. Это подходит для тех, к кому у админа есть доверие!!! А для сети меньше загрузка, и пользователям можно машинки попроще ставить!
P.S. Сам свои слова извращением считаю! Ибо!!! Для пользователя сервер — это что-то далёкое, недоступное и святое! Иначе админ будет должен одновременно над всеми с плёткой стоять! Всё равно накосячат!!!…
Написано доступно и понятно. А главное актуально для нашего предприятия. Огромное спасибо!!!
Однозначно нужная и полезная вещь! Спасибо! Ставлю +.
Да крутая фишка) а я еще делаю чтобы клиенту автоматом 1ска запускалась через настройку на сервере.
очень полезная статья