<?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='\
(0) скриншоты где?
+(1) фиг с ними, со скриншотами, и так ясно.. А почему из реестра не цепляет? Нафига файлы плодить?
Понял. Мне не нужно, но прикольно. Плюсую.
есть сотня баз, и две сотни пользователей, которые ходят с места на место.
«Запускалка баз 1с 7.7» позволяет держать все настройки на сервере и не париться, что у кого-то база не прописана,
кроме того они не забудут пароль, и не передадут его (пароль на вин редко передают, ведь в личном профиле личные данные, напр аська и по этому звери виндовый пароль не передают)
причем если например у пользователя «отвалился» сетевой диск, то все базы с этого диска у него пропадут из списка выбора 10
Есть еще всякие вкусные мелочи которые поймешь когда начнешь работать 🙂 все расписывать — долго, вещь простая и понятная
последнее:
есть различия между двумя списками, для «дополнительных» баз можно подключаться если списка пользователей нету вообще, это удобно например для копий (поднял, и снес файлик), такая база появиться у всех кто имеет файловый доступ
А надо ли это? пароль и создан для того чтобы все было зашито (см приказ Пу от 2007 г). А так удали папку с пользователями и заходи как хочешь. Сейчас проблема как блокировать удаление этой папки, без вреда для работы с ней.
ты просто не прочитал, там все написано.
Для «Основного» списка баз 1с не будет запускаться если вин логина нету списка пользоватей
Для «Дополнительного» списка — это нормально (список для всяких копий, тестов и т.д.)
каталог usrdef, так-же как *.md для всех пользователей кроме админа базы необходимо сделать «только для чтения», по моему это делать обязательно ВСЕГДА и для ВСЕХ баз
Не пойму что нужно писать под параметром сеператор…. Допустим у меня пользователь в конфигураторе указан администратор, что мне нужно в ини файле прописать помимо местонахождения базы данных и платформы…?
to (7)
1. если не использовать доп контроль по различным доменам/рабГрупам, то этот параметр не нужен
2. я рекомендую пользователя «Администратор» оставлять с паролем в конфигураторе, и писать его в список исключений (что-бы под ним ни кто не входил)
3. например в винде у меня логин «DV» тогда достаточно создать пользователя в конфигураторе с логином «DV» и дать ему права на папку
Кстати кто кинет пример получения по логину наличия прав на открытие конфигуратор (но только именно парсинг файла, без всяких внешних DLL),
прикручу авто доступность конфигуратора и монитора и сделаю отчет по всем базам на предмет безопасности.
просто я себе компоненту в дельфи тогда сделаю, пока у меня собрано там: список пользователей, SQL параметры, права на доступ к файлам, работа с AD, Реестр стартапа 1с. (не хватает списков ролей и прав)
(1) добавил скрин.
я так понимаю, работает только если отдельно зверь заходит в терминал?
просто у нас по ярлыкам терминальным
а компы в домене
(11) работает и в терминале и без, главное, что-бы у каждого пользователя была отдельная учетка (в принцепе может и вообще по локальным учеткам, но тогда надо все компы внести в список доменов)
то-есть в терминал должны входить под доменными учетками а не все под одной, да и вообще так правильнее делать, может чуток больше гемора при регистрации пользователя, но зато можно права на папки нарезать
(12) с опубликованными приложениями не знаю как будет работать, даже не думал на эту тему! может и будет а может и нет… Для нас это было не актуально
тоесть а пароли запоминает, в каком формате? 😉
она пароли вообще не запоминает, и не сравнивает
посмотри модуль который надо в конфу интегрировать, все поймешь.
Можно общий пароль поставить для всех пользователей и всех конфигураций, но это скорее не нужно
добавлен сканер файловой безопасности, подробности в документации
хочу поинтересоватся, на сколько будет интересен коммерческий интерес если доделаю:
1. вместо списков, деревья
2. файл с настройками будет зашифрован и конфигурирование будет в диалоге
3. типовые шаблоны для авто установки файловых прав
4. возможность вставить перед запуском базы произвольный кусок реестра в ветку для выбраной базы
5. отправку почты всем пользователям базы
6. автоматическое добавление кода в гл модуль
7. временное отключение базы из списка выбора
ну и т.д. рюшечки (может кто еще чего посоветует)
(17) а целевая аудитория в этом случае — кто?
(19) целевая аудитория будут «правильные» конторы с большим количеством баз.
Эта штука прилично экономит время на всякие подключения юзеров и должна поднимать безопасность.
тем конторам которые ставят всем пользователям полные права на все — конечно она не нужна
мыслишка интересная… проверим у себя. Единственно, у нас не один терминал. В данном случае настроек нужно будет тоже хранить на всех серверах?
(20) у нас серверов то-же много, но все настройки лежат в одном месте, конкретное решение будет зависить от Вашей топологии.
А вот базы с кривыми путями (типа \комп1с) делать не желательно, ибо будет тормозить запуск.
Интересная идея по закрытию. Правда у меня 1c+.exe выдает при запуске конкретной базы то есть файл настроек уже пройден выдает «Не удается найти указанный файл». Могу предположить что это файл запуска, но путь стандартный скопирован из обычной запускалки. Может для запуска ещё библиотечки нужны ?
(22) для 1с+ никаких библиотек не нужно
для самой 1с нужна административная установка на сервер
другие базы с этого компа запускаются?
(23) Да при стандартном запуски 1с запускается и через «запускалки» при запуске 1c+.exe выдает только ошибку. Она ищет исполняемый файл? Административная установка не помогла. Может быть разница что запуск с рабочей станции без серверного ПО ?
(23) Да при обычном запуске кстати, процедура отлично отрабатывает полностью проходя проверку отладчиком, но очень понравилась идея только с базами доступными для пользователя, поэтому есть желание посмотреть через 1c+.exe
(25) собственно проблемма решилась, путь к exe содержал пробел 🙂
новенькое: блокировка базы от пользователей
интересна версия с возможность указания глобальных параметров для каждой базы отдельно?
типа для каждой базы можно указать свой путь к екзешнику и т.д.
хотел попробовать и толку нет вовсе не показывает ничего, просто пустота, однако и user1 прописал в базе и в настройках путь до базы и файла запуска указал.
кстати, описание более полное чем сам конф файл.
(29) покажи файл настройки
вот 😉
(31)
убери вообще строку
Separator=_
и не должно быть пробелов в строке
Root=C:Program Files1Cv77BIN1cv7s.exe
если сепаратор не убирать то в конфигураторе имя пользователя должно быть
user1_PHOTOLAND
и еще в файле win все букы должны быть в верх. рег «kirilenko» — не пойдет
1. ну так написано же что если старые имена то без домена
2. про имя большими буквами не слова в документации 🙂
3. сама программа 1с лежит в таком каталоге и в другой перемещать у нас нельзя так как очень много на него подвязано.
(34)
1. про большие буквы для старых имен — не обязательно, для имен доменов — обязательно
3. сделай административную установку платформы на сервере и все будет работать
всмысле административную?
(32) А может можно как-нибудь подправить исходники, чтобы понимал пути с пробелами?
Ведь не сложно же.
Буду очень благодарен.
(37) будет настроение — сделаю, там еще одно решение почти готово — использование разных каталогов EXE файла для разных баз.
(38) Не хочу показаться наглым, но можно узнать когда у тебя будет настроение?
Просто сегодня озадачился такой проблемой и решил попробовать сам написать подобную программу. Но я в нормальных языках практически не шарю, поэтому я бы делал такое решение долго. Потом решил поискать аналоги и наткунлся на твою разработку и понял, что лучше я точно не сделаю.
Может хотя бы фикс с пробелами выложишь? Там ведь просто кавычки добавить (или я вообще ламер?)
(38) может на этой неделе сделаю, мне там нужно доделать использование разных EXE а выкладывать старый билд профиксеный я особого смысла не вижу.
Кроме того кавычки разные бывают 😀 и надо будет потестить на длинных каталогах (эта не явная проблемма старых систем которая не возникает сейчас, по сколько слитные имена каталогов в 500 знаком не делаюи, а вот с пробелами — бывает).
(40) Уговорил 😀
А можешь еще такую фичу добавить:
Создать в ini-файле раздел [UsersAliases], в котором бы давались соответствия между именами пользователей Виндовс и 1С.
Т.е. у меня, например, есть пользователь Виндовс с именем «Симпатяжкина», но в 1С она входит под логином «Оператор». При наличии в файле настроек строчек:
стартер бы искал пользователя в 1С уже не по «Симпатяжкина», а по «Оператор»
версия 2.1, профиксино:
1. предупреждение если не найден исполняемый файл
2. вывод в центр активного окна а не рабочего стола (были проблеммы с двумя мониторами и т.д.)
добавлено:
1. индикатор заполнения списка баз
2. сохранение лога времени создания списка баз
3. возможность для каждой базы определить отдельный исполняемый файл (директорию) 1с
Блин, когда уже люди прочистят мозги от шаблонов, навязанных 1С?
Доколе можно издеваться над юзерами этим мерзким флажком «Монопольно» ?
Трудно разве сделать ДВЕ отдельные кнопки — «Предприятие» и «Монопольно»?
(43) дело вкуса, на мой взгляд флажек лучше чем кнопка, ибо нужно кликнуть 2 раза и значит вероятность ошибки меньше.
а делалось именно максимально приближенно к внешнему виду штатной 1с
чутор исправил версию 2.1, исправление только одно — увеличил размер окна на 5 пикселей, а то на висте появлялись скролы.
Перед до мной тоже стала проблема безопасности попробуем ланчер
Вобщем стала передо мной такая задача массовая смена паролей для всех пользователей подойдет данный ланчер для этого или нет?
(47) нет, она предназначена для полного отказа от паролей
(43) а это у тебя какая запускалка?
(54)
Это моя личная, местечковая была запускалка.
хотелка:
1. отключение режима работы по логин 1с = логин вынь
2. + простая блокировка отдельных баз — просто ставим типа галочки напротив базы — и все не запускает
п.с. мне нужна просто как блокировка запуска определенных баз (на время обновления конфигурации , чтобы юзвери не ломились).
хотелка:
1. отключение режима работы по логин 1с = логин вынь
2. + простая блокировка отдельных баз — просто ставим типа галочки напротив базы — и все не запускает
п.с. мне нужна просто как блокировка запуска определенных баз (на время обновления конфигурации , чтобы юзвери не ломились).
п.2 для меня тоже актуален.
Понимаю, что не по теме, но подскажите, пожалуйста, какой-нибудь «выгонятор» пользователей. «Выгонятор» — обработка, которая, например, по всему списку соединенных пользователей посылала сообщение о прекращении функционирования программы через пять минут, советовала сохранить данные и выйти из программы. Непослушных по прошествии отведенного времени отрубить от базы.
Спасибо!
как же.. разбежались делать хотелки…
Интересный вариант реализации. спасибо. +1
Приветы, есть 3000 хочу потратить на доработку под себя.
ICQ: 482199220
Skype: Svoboden46
E-mail: ir-da@yandex.ru
🙂
Забыл подписаться на ответы этой темы ))