Ошибка не указан клиент администрирования

/////////////////////////////////////////////////////////////////////////////////////////////////// // Прикладной интерфейс #Использовать v8find Перем мНастройки; Перем Лог; Перем мИдентификаторКластера; Перем мИдентификаторБазы; Перем ЭтоWindows; Перем мЭтоУправлениеСеансами, мЭтоУправлениеРегламентнымиЗаданиями, мЭтоПолучениеИнформацииИБ; Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт мЭтоУправлениеСеансами = НРег(ИмяКоманды)=«session»; мЭтоУправлениеРегламентнымиЗаданиями = НРег(ИмяКоманды)=«scheduledjobs»; мЭтоПолучениеИнформацииИБ = НРег(ИмяКоманды)=«info»; Если Не мЭтоПолучениеИнформацииИБ И НЕ мЭтоУправлениеРегламентнымиЗаданиями И Не мЭтоУправлениеСеансами Тогда ВызватьИсключение(«Непредусмотренная команда»); КонецЕсли; ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, ?(мЭтоПолучениеИнформацииИБ, «Получение информации о базе данных (выводится в консоль выполнения скрипта). |Может применяться для проверки работы RAS/RAC.», «Управление сеансами/регламентами информационной базы») ); Если мЭтоУправлениеРегламентнымиЗаданиями Или мЭтоУправлениеСеансами Тогда Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, «Действие», ?(мЭтоУправлениеСеансами, «lock|unlock|kill|search», «lock|unlock»)); КонецЕсли; Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-ras», «Сетевой адрес RAS, по умолчанию localhost:1545»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-rac», «Команда запуска RAC, по умолчанию находим в каталоге установки 1с»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-db», «Имя информационной базы»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-db-user», «Пользователь информационной базы»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-db-pwd», «Пароль пользователя информационной базы»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-cluster-admin», «Администратор кластера»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-cluster-pwd», «Пароль администратора кластера»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-v8version», «Маска версии платформы 1С»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-v8bitness», СтрШаблон(«Маска разрядности платформы 1С {%1|%2|%3|%4}. Требуется указать -v8version», РазрядностьПлатформы.x86x64, РазрядностьПлатформы.x64x86, РазрядностьПлатформы.x86, РазрядностьПлатформы.x64)); Если мЭтоУправлениеСеансами Тогда Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-lockmessage», «Сообщение блокировки»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-lockuccode», «Ключ разрешения запуска»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-lockstart», «Время старта блокировки пользователей, время указываем как ‘2040-12-31T23:59:59′»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-lockstartat», «Время старта блокировки через n сек»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-try», «Число попыток обращения по протоколу rac/ras»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-with-nolock», «Не блокировать сеансы (y/n). Применяется для действия kill — |по умолчанию, при его выполнении автоматически блокируется начало сеансов. |Пример: … kill -with-nolock y …»); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-filter», «Фильтр поиска сеансов. Предполагает возможность указания множественных вариантов фильтрации. Задается в формате ‘[filter1]|[filter2]|…|[filterN]’. |Составляющая фильтра задается в формате [[appid=приложение1[;приложение2]][[name=username1[;username2]]’. |Пока предусмотрено только два фильтра — по имени приложения (appid) и по имени пользователя 1С (name). |Для фильтра по приложению доступны следующие имена: 1CV8 1CV8C WebClient Designer COMConnection WSConnection BackgroundJob WebServerExtension. |Использование wildchar/regex пока не предусмотрено. Регистронечувствительно. Параметры должны разделяться через |. |Действует для команд kill и search. |Пример: … kill -filter appid=Designer|name=регламент;администратор …»); КонецЕсли; Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт ПрочитатьПараметры(ПараметрыКоманды); Если Не ПараметрыВведеныКорректно() Тогда Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры; КонецЕсли; Если мЭтоУправлениеСеансами И мНастройки.Действие = «lock» Тогда УстановитьСтатусБлокировкиСеансов(Истина); ИначеЕсли мЭтоУправлениеСеансами И мНастройки.Действие = «unlock» Тогда УстановитьСтатусБлокировкиСеансов(Ложь); ИначеЕсли мЭтоУправлениеСеансами И мНастройки.Действие = «kill» Тогда УдалитьВсеСеансыИСоединенияБазы(); ИначеЕсли мЭтоУправлениеСеансами И мНастройки.Действие = «search» Тогда Возврат ?(ПолучитьСписокСеансов().Количество()<>0, МенеджерКомандПриложения.РезультатыКоманд().Успех, МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения ); ИначеЕсли мЭтоУправлениеРегламентнымиЗаданиями И мНастройки.Действие = «lock» Тогда УстановитьСтатусБлокировкиРЗ(Истина); ИначеЕсли мЭтоУправлениеРегламентнымиЗаданиями И мНастройки.Действие = «unlock» Тогда УстановитьСтатусБлокировкиРЗ(Ложь); ИначеЕсли мЭтоПолучениеИнформацииИБ Тогда // сообщить информацию Информация = ПолучитьИнформациюОБазеДанных(); Сообщить(Информация); Иначе Лог.Ошибка(«Неизвестное действие: « + мНастройки.Действие); Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры; КонецЕсли; Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; КонецФункции Процедура ПрочитатьПараметры(Знач ПараметрыКоманды) мНастройки = Новый Структура; Для Каждого КЗ Из ПараметрыКоманды Цикл Лог.Отладка(КЗ.Ключ + » = « + КЗ.Значение); КонецЦикла; мНастройки.Вставить(«АдресСервераАдминистрирования», ПараметрыКоманды[«-ras»]); мНастройки.Вставить(«ПутьКлиентаАдминистрирования», ПараметрыКоманды[«-rac»]); мНастройки.Вставить(«ИмяБазыДанных», ПараметрыКоманды[«-db»]); мНастройки.Вставить(«АдминистраторИБ», ПараметрыКоманды[«-db-user»]); мНастройки.Вставить(«ПарольАдминистратораИБ», ПараметрыКоманды[«-db-pwd»]); мНастройки.Вставить(«АдминистраторКластера», ПараметрыКоманды[«-cluster-admin»]); мНастройки.Вставить(«ПарольАдминистратораКластера», ПараметрыКоманды[«-cluster-pwd»]); мНастройки.Вставить(«ИспользуемаяВерсияПлатформы», ПараметрыКоманды[«-v8version»]); мНастройки.Вставить(«КлючРазрешенияЗапуска», ПараметрыКоманды[«-lockuccode»]); мНастройки.Вставить(«СообщениеОблокировке», ПараметрыКоманды[«-lockmessage»]); мНастройки.Вставить(«ВремяСтартаБлокировки», ПараметрыКоманды[«-lockstart»]); мНастройки.Вставить(«ВремяСтартаБлокировкиЧерез», ПараметрыКоманды[«-lockstartat»]); мНастройки.Вставить(«ЧислоПопыток», ПараметрыКоманды[«-try»]); мНастройки.Вставить(«НеБлокироватьСеансы», ПараметрыКоманды[«-with-nolock»]); мНастройки.Вставить(«ФильтрСеансов», ПолучитьСоставляющиеФильтра(ПараметрыКоманды[«-filter»])); мНастройки.Вставить(«Действие», ПараметрыКоманды[«Действие»]); //Получим путь к платформе если вдруг не установленна мНастройки.ПутьКлиентаАдминистрирования = ПолучитьПутьКRAC(мНастройки.ПутьКлиентаАдминистрирования, мНастройки.ИспользуемаяВерсияПлатформы); Если ПустаяСтрока(мНастройки.АдресСервераАдминистрирования) Тогда мНастройки.АдресСервераАдминистрирования = «localhost:1545»; КонецЕсли; КонецПроцедуры Функция ПараметрыВведеныКорректно() Успех = Истина; Если Не ЗначениеЗаполнено(мНастройки.АдресСервераАдминистрирования) Тогда Лог.Ошибка(«Не указан сервер администрирования»); Успех = Ложь; КонецЕсли; Если Не ЗначениеЗаполнено(мНастройки.ПутьКлиентаАдминистрирования) Тогда Лог.Ошибка(«Не указан клиент администрирования»); Успех = Ложь; КонецЕсли; Если Не ЗначениеЗаполнено(мНастройки.ИмяБазыДанных) Тогда Лог.Ошибка(«Не указано имя базы данных»); Успех = Ложь; КонецЕсли; Если (мЭтоУправлениеРегламентнымиЗаданиями Или мЭтоУправлениеСеансами) И Не ЗначениеЗаполнено(мНастройки.Действие) Тогда Лог.Ошибка(«Не указано действие lock/unlock»); Успех = Ложь; КонецЕсли; Если мНастройки.ЧислоПопыток <> Неопределено Тогда Попытка ПопыткиЧислом = Число(мНастройки.ЧислоПопыток); Исключение Лог.Ошибка(«Параметр -try не является числовым.»); Успех = Ложь; КонецПопытки; Если Успех и ПопыткиЧислом <= 0 Тогда ПопыткиЧислом = 1; Лог.Предупреждение(«Параметр -try не представляет собой число попыток. Он будет проигнорирован»); КонецЕсли; Если Успех Тогда мНастройки.ЧислоПопыток = ПопыткиЧислом; Иначе мНастройки.ЧислоПопыток = 1; КонецЕсли; Иначе мНастройки.ЧислоПопыток = 1; КонецЕсли; Возврат Успех; КонецФункции ///////////////////////////////////////////////////////////////////////////////// // Взаимодействие с кластером Процедура УдалитьВсеСеансыИСоединенияБазы() Если Не ЗначениеЗаполнено(мНастройки.НеБлокироватьСеансы) Или ВРег(мНастройки.НеБлокироватьСеансы)<>«Y» Тогда УстановитьСтатусБлокировкиСеансов(Истина); КонецЕсли; Для Сч = 1 По мНастройки.ЧислоПопыток Цикл Попытка ОтключитьСуществующиеСеансы(); Приостановить(500); Сеансы = ПолучитьСписокСеансов(); Если Сеансы.Количество() Тогда Лог.Информация(«Пауза перед отключением соединений»); Приостановить(10000); ОтключитьСоединенияСРабочимиПроцессами(); КонецЕсли; Прервать; Исключение Лог.Предупреждение(«Попытка удаления сеансов не удалась. Текст ошибки: |%1″, ИнформацияОбОшибке().Описание); КонецПопытки; КонецЦикла КонецПроцедуры Процедура УстановитьСтатусБлокировкиСеансов(Знач Блокировать) КлючиАвторизацииВБазе = КлючиАвторизацииВБазе(); ИдентификаторБазы = ИдентификаторБазы(); ИдентификаторКластера = мИдентификаторКластера; Если Блокировать Тогда КлючРазрешенияЗапускаПоУмолчанию = ИдентификаторБазы; Иначе КлючРазрешенияЗапускаПоУмолчанию = «»; КонецЕсли; КлючРазрешенияЗапуска = ?(ПустаяСтрока(мНастройки.КлючРазрешенияЗапуска), КлючРазрешенияЗапускаПоУмолчанию, мНастройки.КлючРазрешенияЗапуска); ВремяБлокировки = мНастройки.ВремяСтартаБлокировки; Если ПустаяСтрока(ВремяБлокировки) И Не ПустаяСтрока(мНастройки.ВремяСтартаБлокировкиЧерез) Тогда Секунды = 0; Попытка Секунды = Число(мНастройки.ВремяСтартаБлокировкиЧерез); Исключение КонецПопытки; ВремяБлокировки = Формат(ТекущаяДата()+Секунды,«ДФ=’yyyy-MM-ddTHH:mm:ss'»); КонецЕсли; КомандаВыполнения = СтрокаЗапускаКлиента() + СтрШаблон(«infobase update —infobase=«»%3«»%4 —cluster=«»%1«»%2 —sessions-deny=%5 —denied-message=«»%6«» —denied-from=«»%8«» —permission-code=«»%7«»«, ИдентификаторКластера, КлючиАвторизацииВКластере(), ИдентификаторБазы, КлючиАвторизацииВБазе, ?(Блокировать, «on», «off»), мНастройки.СообщениеОблокировке, КлючРазрешенияЗапуска, ВремяБлокировки) + » «+мНастройки.АдресСервераАдминистрирования; Для Сч = 1 По мНастройки.ЧислоПопыток Цикл Попытка ЗапуститьПроцесс(КомандаВыполнения); Прервать; Исключение Лог.Предупреждение(«Попытка запуска rac не удалась. Текст ошибки: |%1″, ИнформацияОбОшибке().Описание); КонецПопытки; КонецЦикла; Лог.Информация(«Сеансы « + ?(Блокировать, «запрещены», «разрешены»)); КонецПроцедуры Процедура УстановитьСтатусБлокировкиРЗ(Знач Блокировать) КлючиАвторизацииВБазе = КлючиАвторизацииВБазе(); ИдентификаторБазы = ИдентификаторБазы(); ИдентификаторКластера = мИдентификаторКластера; КомандаВыполнения = СтрокаЗапускаКлиента() + СтрШаблон(«infobase update —infobase=«»%3«»%4 —cluster=«»%1«»%2 —scheduled-jobs-deny=%5″, ИдентификаторКластера, КлючиАвторизацииВКластере(), ИдентификаторБазы, КлючиАвторизацииВБазе, ?(Блокировать, «on», «off») ) + » «+мНастройки.АдресСервераАдминистрирования; ЗапуститьПроцесс(КомандаВыполнения); Лог.Информация(«Регламентные задания « + ?(Блокировать, «запрещены», «разрешены»)); КонецПроцедуры Функция ПолучитьИнформациюОБазеДанных() КлючиАвторизацииВБазе = КлючиАвторизацииВБазе(); ИдентификаторКластера = ИдентификаторКластера(); ИдентификаторБазы = ИдентификаторБазы(); КомандаВыполнения = СтрокаЗапускаКлиента() + СтрШаблон(«infobase info —infobase=«»%3«»%4 —cluster=«»%1«»%2″, ИдентификаторКластера, КлючиАвторизацииВКластере(), ИдентификаторБазы, КлючиАвторизацииВБазе ) + » «+мНастройки.АдресСервераАдминистрирования; Результат = ЗапуститьПроцесс(КомандаВыполнения); Возврат Результат; КонецФункции Функция КлючиАвторизацииВБазе() КлючиАвторизацииВБазе = «»; Если ЗначениеЗаполнено(мНастройки.АдминистраторИБ) Тогда КлючиАвторизацииВБазе = КлючиАвторизацииВБазе + СтрШаблон(» —infobase-user=«»%1«»«, мНастройки.АдминистраторИБ); КонецЕсли; Если ЗначениеЗаполнено(мНастройки.ПарольАдминистратораИБ) Тогда КлючиАвторизацииВБазе = КлючиАвторизацииВБазе + СтрШаблон(» —infobase-pwd=«»%1«»«, мНастройки.ПарольАдминистратораИБ); КонецЕсли; Возврат КлючиАвторизацииВБазе; КонецФункции Функция ИдентификаторКластера() Если мИдентификаторКластера = Неопределено Тогда //Ищем идентификатор кластера по базе ИдентификаторБазы = ИдентификаторБазы(); КонецЕсли; Если ПустаяСтрока(мИдентификаторКластера) Тогда ВызватьИсключение «Кластер серверов отсутствует»; КонецЕсли; Возврат мИдентификаторКластера; КонецФункции Функция ИдентификаторыКластеров() Лог.Информация(«Получаю список кластеров»); КомандаВыполнения = СтрокаЗапускаКлиента() + «cluster list» + » «+ мНастройки.АдресСервераАдминистрирования; СписокКластеров = ЗапуститьПроцесс(КомандаВыполнения); ИДКластеров = Новый Соответствие(); УИДКластера = «»; Для А = 1 По СтрЧислоСтрок(СписокКластеров) Цикл Строка = СтрПолучитьСтроку(СписокКластеров, А); Имя = СокрЛП(Лев(Строка, Найти(Строка, «:») 1)); Значение = СокрЛП(СтрЗаменить(Сред(Строка, Найти(Строка, «:») + 1), ««»«, «»)); Если Имя = «cluster» Тогда УИДКластера = Значение; ИначеЕсли Имя = «name» Тогда ИДКластеров.Вставить(Значение, УИДКластера); Лог.Отладка(«Кластер: « + Значение + » = « + УИДКластера); КонецЕсли; КонецЦикла; Возврат ИДКластеров; КонецФункции Функция ИдентификаторБазы() Если мИдентификаторБазы = Неопределено Тогда мИдентификаторБазы = НайтиБазуВКластере(); КонецЕсли; Возврат мИдентификаторБазы; КонецФункции Функция НайтиБазуВКластере() ИдентификаторыКластеров = ИдентификаторыКластеров(); НайденаБазаВКластере = Ложь; Для каждого УИДКластера Из ИдентификаторыКластеров Цикл Лог.Информация(«Поиск базы « + мНастройки.ИмяБазыДанных + » в кластере « + УИДКластера.Ключ); КомандаВыполнения = СтрокаЗапускаКлиента() + СтрШаблон(«infobase summary list —cluster=«»%1«»%2″, УИДКластера.Значение, КлючиАвторизацииВКластере()) + » « + мНастройки.АдресСервераАдминистрирования; Лог.Отладка(КомандаВыполнения); СписокБазВКластере = СокрЛП(ЗапуститьПроцесс(КомандаВыполнения)); Лог.Отладка(СписокБазВКластере); ЧислоСтрок = СтрЧислоСтрок(СписокБазВКластере); Для К = 1 По ЧислоСтрок Цикл СтрокаРазбора = СтрПолучитьСтроку(СписокБазВКластере, К); ПозицияРазделителя = Найти(СтрокаРазбора, «:»); Если Найти(СтрокаРазбора, «infobase») > 0 Тогда УИДИБ = СокрЛП(Сред(СтрокаРазбора, ПозицияРазделителя + 1)); ИначеЕсли Найти(СтрокаРазбора, «name») > 0 Тогда ИмяБазы = СокрЛП(Сред(СтрокаРазбора, ПозицияРазделителя + 1)); Если Нрег(ИмяБазы) = НРег(мНастройки.ИмяБазыДанных) Тогда мИдентификаторКластера = УИДКластера.Значение; Лог.Информация(«База « + ИмяБазы + » с ID: « + УИДИБ + » найдена в кластере « + УИДКластера.Ключ); Лог.Отладка(«Установлен УИД кластера « + мИдентификаторКластера); НайденаБазаВКластере = Истина; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если НайденаБазаВКластере Тогда Прервать; КонецЕсли; КонецЦикла; Если Не НайденаБазаВКластере Тогда ВызватьИсключение «База « + мНастройки.ИмяБазыДанных + » не найдена в кластере»; КонецЕсли; Возврат УИДИБ; КонецФункции Функция КлючиАвторизацииВКластере() КомандаВыполнения = «»; Если ЗначениеЗаполнено(мНастройки.АдминистраторКластера) Тогда КомандаВыполнения = КомандаВыполнения + СтрШаблон(» —cluster-user=«»%1«»«, мНастройки.АдминистраторКластера); КонецЕсли; Если ЗначениеЗаполнено(мНастройки.ПарольАдминистратораКластера) Тогда КомандаВыполнения = КомандаВыполнения + СтрШаблон(» —cluster-pwd=«»%1«»«, мНастройки.ПарольАдминистратораКластера); КонецЕсли; Возврат КомандаВыполнения; КонецФункции Функция СтрокаЗапускаКлиента() Перем ПутьКлиентаАдминистрирования; Если ЭтоWindows Тогда ПутьКлиентаАдминистрирования = ЗапускПриложений.ОбернутьВКавычки(мНастройки.ПутьКлиентаАдминистрирования); Иначе ПутьКлиентаАдминистрирования = мНастройки.ПутьКлиентаАдминистрирования; КонецЕсли; Возврат ПутьКлиентаАдминистрирования + » «; КонецФункции Функция ЗапуститьПроцесс(Знач СтрокаВыполнения) Перем ПаузаОжиданияЧтенияБуфера; ПаузаОжиданияЧтенияБуфера = 20; Лог.Отладка(СтрокаВыполнения); Процесс = СоздатьПроцесс(СтрокаВыполнения, ,Истина); Процесс.Запустить(); Текст = Новый ТекстовыйДокумент; Пока Истина Цикл ВывестиДанныеПроцесса(Процесс, Текст); Если Процесс.Завершен Тогда Процесс.ОжидатьЗавершения(); // финальный сброс буферов ВывестиДанныеПроцесса(Процесс, Текст); Прервать; КонецЕсли; Приостановить(ПаузаОжиданияЧтенияБуфера); КонецЦикла; Если Процесс.КодВозврата = 0 Тогда Возврат Текст.ПолучитьТекст(); Иначе ВызватьИсключение «Сообщение от RAS/RAC + Текст.ПолучитьТекст(); КонецЕсли; КонецФункции Процедура ВывестиДанныеПроцесса(Знач Процесс, Знач Приемник) Вывод = Процесс.ПотокВывода.Прочитать(); Ошибки = Процесс.ПотокОшибок.Прочитать(); Если СтрДлина(Строка(Вывод)) > 0 Тогда Приемник.ДобавитьСтроку(Вывод); КонецЕсли; Если СтрДлина(Строка(Ошибки)) > 0 Тогда Приемник.ДобавитьСтроку(Ошибки); КонецЕсли; КонецПроцедуры Процедура ОтключитьСуществующиеСеансы() Лог.Информация(«Отключаю существующие сеансы»); СеансыБазы = ПолучитьСписокСеансов(); Для Каждого Сеанс Из СеансыБазы Цикл Попытка ОтключитьСеанс(Сеанс); Исключение Лог.Ошибка(ОписаниеОшибки()); КонецПопытки; КонецЦикла; КонецПроцедуры Функция ПолучитьСписокСеансов() ТаблицаСеансов = Новый ТаблицаЗначений; ТаблицаСеансов.Колонки.Добавить(«Идентификатор»); ТаблицаСеансов.Колонки.Добавить(«Приложение»); ТаблицаСеансов.Колонки.Добавить(«Пользователь»); ТаблицаСеансов.Колонки.Добавить(«НомерСеанса»); КомандаЗапуска = СтрокаЗапускаКлиента() + СтрШаблон(«session list —cluster=«»%1«»%2 —infobase=«»%3«»«, ИдентификаторКластера(), КлючиАвторизацииВКластере(), ИдентификаторБазы()) + » « + мНастройки.АдресСервераАдминистрирования; СписокСеансовИБ = ЗапуститьПроцесс(КомандаЗапуска); Данные = РазобратьПоток(СписокСеансовИБ); Для Каждого Элемент Из Данные Цикл Если Не СеансВФильтре(Новый Структура(«Приложение, Пользователь», Элемент[«app-id»], Элемент[«user-name»])) Тогда Продолжить; КонецЕсли; ТекСтрока = ТаблицаСеансов.Добавить(); ТекСтрока.Идентификатор = Элемент[«session»]; ТекСтрока.Пользователь = Элемент[«user-name»]; ТекСтрока.Приложение = Элемент[«app-id»]; ТекСтрока.НомерСеанса = Элемент[«session-id»]; КонецЦикла; Возврат ТаблицаСеансов; КонецФункции Процедура ОтключитьСеанс(Знач Сеанс) ИдентификаторБазы = ИдентификаторБазы(); ИдентификаторКластера = мИдентификаторКластера; СтрокаВыполнения = СтрокаЗапускаКлиента() + СтрШаблон(«session terminate —cluster=«»%1«»%2 —session=«»%3«»«, ИдентификаторКластера, КлючиАвторизацииВКластере(), Сеанс.Идентификатор) + » « + мНастройки.АдресСервераАдминистрирования; Лог.Информация(СтрШаблон(«Отключаю сеанс: %1 [%2] (%3)», Сеанс.НомерСеанса, Сеанс.Пользователь, Сеанс.Приложение)); ЗапуститьПроцесс(СтрокаВыполнения); КонецПроцедуры Функция ОтключитьСоединенияСРабочимиПроцессами() Процессы = ПолучитьСписокРабочихПроцессов(); Для Каждого РабочийПроцесс Из Процессы Цикл Если РабочийПроцесс[«running»] = «yes» Тогда СписокСоединений = ПолучитьСоединенияРабочегоПроцесса(РабочийПроцесс); Для Каждого Соединение Из СписокСоединений Цикл Попытка РазорватьСоединениеСПроцессом(РабочийПроцесс, Соединение); Исключение Лог.Ошибка(ОписаниеОшибки()); КонецПопытки; КонецЦикла; КонецЕсли; КонецЦикла; КонецФункции Функция ПолучитьСписокРабочихПроцессов() КомандаЗапускаПроцессы = СтрокаЗапускаКлиента() + СтрШаблон(«process list —cluster=«»%1«»%2″, ИдентификаторКластера(), КлючиАвторизацииВКластере()) + » « + мНастройки.АдресСервераАдминистрирования; Лог.Информация(«Получаю список рабочих процессов…»); СписокПроцессов = ЗапуститьПроцесс(КомандаЗапускаПроцессы); Результат = РазобратьПоток(СписокПроцессов); НеВФильтре = Новый Массив; Для Каждого ТекПроцесс Из Результат Цикл Если Не СеансВФильтре(Новый Структура(«Приложение, Пользователь», ТекПроцесс[«app-id»], ТекПроцесс[«user-name»])) Тогда НеВФильтре.Добавить(ТекПроцесс); КонецЕсли; КонецЦикла; Для Каждого Уд Из НеВФильтре Цикл Результат.Удалить(Уд); КонецЦикла; Возврат Результат; КонецФункции Функция ПолучитьСоединенияРабочегоПроцесса(Знач РабочийПроцесс) КомандаЗапускаСоединения = СтрокаЗапускаКлиента() + СтрШаблон(«connection list —cluster=«»%1«»%2 —infobase=%3%4 —process=%5″, ИдентификаторКластера(), КлючиАвторизацииВКластере(), ИдентификаторБазы(), КлючиАвторизацииВБазе(), РабочийПроцесс[«process»]) + » « + мНастройки.АдресСервераАдминистрирования; Лог.Информация(«Получаю список соединений…»); Возврат РазобратьПоток(ЗапуститьПроцесс(КомандаЗапускаСоединения)); КонецФункции Функция РазорватьСоединениеСПроцессом(Знач РабочийПроцесс, Знач Соединение) КомандаРазрывСоединения = СтрокаЗапускаКлиента() + СтрШаблон(«connection disconnect —cluster=«»%1«»%2 —infobase=%3%4 —process=%5 —connection=%6″, ИдентификаторКластера(), КлючиАвторизацииВКластере(), ИдентификаторБазы(), КлючиАвторизацииВБазе(), РабочийПроцесс[«process»], Соединение[«connection»]) + » « + мНастройки.АдресСервераАдминистрирования; Сообщение = СтрШаблон(«Отключаю соединение %1 [%2] (%3)», Соединение[«conn-id»], Соединение[«app-id»], Соединение[«user-name»]); Лог.Информация(Сообщение); Возврат ЗапуститьПроцесс(КомандаРазрывСоединения); КонецФункции Функция РазобратьПоток(Знач Поток) Экспорт ТД = Новый ТекстовыйДокумент; ТД.УстановитьТекст(Поток); СписокОбъектов = Новый Массив; ТекущийОбъект = Неопределено; Для Сч = 1 По ТД.КоличествоСтрок() Цикл Текст = ТД.ПолучитьСтроку(Сч); Если ПустаяСтрока(Текст) или ТекущийОбъект = Неопределено Тогда Если ТекущийОбъект <> Неопределено и ТекущийОбъект.Количество() = 0 Тогда Продолжить; // очередная пустая строка подряд КонецЕсли; ТекущийОбъект = Новый Соответствие; СписокОбъектов.Добавить(ТекущийОбъект); КонецЕсли; СтрокаРазбораИмя = «»; СтрокаРазбораЗначение = «»; Если РазобратьНаКлючИЗначение(Текст, СтрокаРазбораИмя, СтрокаРазбораЗначение) Тогда ТекущийОбъект[СтрокаРазбораИмя] = СтрокаРазбораЗначение; КонецЕсли; КонецЦикла; Если ТекущийОбъект <> Неопределено и ТекущийОбъект.Количество() = 0 Тогда СписокОбъектов.Удалить(СписокОбъектов.ВГраница()); КонецЕсли; Возврат СписокОбъектов; КонецФункции Функция ПолучитьПутьКRAC(ТекущийПуть, Знач ВерсияПлатформы = «») Если НЕ ПустаяСтрока(ТекущийПуть) Тогда ФайлУтилиты = Новый Файл(ТекущийПуть); Если ФайлУтилиты.Существует() Тогда Лог.Отладка(«Текущая версия rac « + ФайлУтилиты.ПолноеИмя); Возврат ФайлУтилиты.ПолноеИмя; КонецЕсли; КонецЕсли; Если ПустаяСтрока(ВерсияПлатформы) Тогда ВерсияПлатформы = «8.3»; КонецЕсли; Конфигуратор = Новый УправлениеКонфигуратором; ПутьКПлатформе = Конфигуратор.ПолучитьПутьКВерсииПлатформы(ВерсияПлатформы); Лог.Отладка(«Используемый путь для поиска rac « + ПутьКПлатформе); КаталогУстановки = Новый Файл(ПутьКПлатформе); Лог.Отладка(КаталогУстановки.Путь); ИмяФайла = ?(ЭтоWindows, «rac.exe», «rac»); ФайлУтилиты = Новый Файл(ОбъединитьПути(Строка(КаталогУстановки.Путь), ИмяФайла)); Если ФайлУтилиты.Существует() Тогда Лог.Отладка(«Текущая версия rac « + ФайлУтилиты.ПолноеИмя); Возврат ФайлУтилиты.ПолноеИмя; КонецЕсли; Возврат ТекущийПуть; КонецФункции Функция РазобратьНаКлючИЗначение(Знач СтрокаРазбора, Ключ, Значение) ПозицияРазделителя = Найти(СтрокаРазбора, «:»); Если ПозицияРазделителя = 0 Тогда Возврат Ложь; КонецЕсли; Ключ = СокрЛП(Лев(СтрокаРазбора, ПозицияРазделителя 1)); Значение = СокрЛП(Сред(СтрокаРазбора, ПозицияРазделителя + 1)); Возврат Истина; КонецФункции Функция ПолучитьСоставляющиеФильтра(СтрокаФильтра) Результат = Новый Структура; СоставФильтра = СтрРазделить(СтрокаФильтра, «|», Ложь); Для Каждого ТекСтр Из СоставФильтра Цикл РазобратьСоставляющуюФильтра(Результат, ТекСтр); КонецЦикла; Возврат Результат; КонецФункции Процедура РазобратьСоставляющуюФильтра(РезультатСтруктура, Составляющая) ПозРавно = СтрНайти(Составляющая, «=»); Если ПозРавно=0 Тогда Возврат; КонецЕсли; ИмяФильтра = Лев(Составляющая, ПозРавно 1); Попытка ПроверкаИмени = Новый Структура(ИмяФильтра); Исключение Возврат; КонецПопытки; СодержаниеСтрока = Сред(Составляющая, ПозРавно + 1); Если ПустаяСтрока(СодержаниеСтрока) Тогда Возврат; КонецЕсли; СодержаниеМассив = СтрРазделить(СодержаниеСтрока, «;», Ложь); РезультатСтруктура.Вставить(ИмяФильтра, СодержаниеМассив); КонецПроцедуры Функция СеансВФильтре(Сеанс) Результат = Истина; Если Не ЗначениеЗаполнено(мНастройки.ФильтрСеансов) Тогда Возврат Результат; КонецЕсли; Результат = Результат И ПараметрСеансаВФильтре(«appid», Сеанс.Приложение); Результат = Результат И ПараметрСеансаВФильтре(«name», Сеанс.Пользователь); Возврат Результат; КонецФункции Функция ПараметрСеансаВФильтре(ИмяФильтра, ПроверяемоеЗначение) Если Не ЗначениеЗаполнено(мНастройки.ФильтрСеансов) Или Не мНастройки.ФильтрСеансов.Свойство(ИмяФильтра) Тогда Возврат Истина; КонецЕсли; ЗначенияФильтра = мНастройки.ФильтрСеансов[ИмяФильтра]; Для Каждого ТекЗначение Из ЗначенияФильтра Цикл ВФильтре = ВРег(ТекЗначение)=ВРег(ПроверяемоеЗначение); Если ВФильтре Тогда Возврат Истина; КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции ///////////////////////////////////////////////////////////////////////////////// СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), «windows») > 0; Лог = Логирование.ПолучитьЛог(«vanessa.app.deployka»);

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

///////////////////////////////////////////////////////////////////////////////////////////////////

// Прикладной интерфейс

#Использовать v8find

Перем мНастройки;

Перем Лог;

Перем мИдентификаторКластера;

Перем мИдентификаторБазы;

Перем ЭтоWindows;

Перем мЭтоУправлениеСеансами, мЭтоУправлениеРегламентнымиЗаданиями, мЭтоПолучениеИнформацииИБ;

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

мЭтоУправлениеСеансами = НРег(ИмяКоманды)=«session»;

мЭтоУправлениеРегламентнымиЗаданиями = НРег(ИмяКоманды)=«scheduledjobs»;

мЭтоПолучениеИнформацииИБ = НРег(ИмяКоманды)=«info»;

Если Не мЭтоПолучениеИнформацииИБ И НЕ мЭтоУправлениеРегламентнымиЗаданиями И Не мЭтоУправлениеСеансами Тогда

ВызватьИсключение(«Непредусмотренная команда»);

КонецЕсли;

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды,

?(мЭтоПолучениеИнформацииИБ,

«Получение информации о базе данных (выводится в консоль выполнения скрипта).

|Может применяться для проверки работы RAS/RAC.»,

«Управление сеансами/регламентами информационной базы»)

);

Если мЭтоУправлениеРегламентнымиЗаданиями Или мЭтоУправлениеСеансами Тогда

Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, «Действие», ?(мЭтоУправлениеСеансами, «lock|unlock|kill|search», «lock|unlock»));

КонецЕсли;

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-ras», «Сетевой адрес RAS, по умолчанию localhost:1545»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-rac», «Команда запуска RAC, по умолчанию находим в каталоге установки 1с»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, «-db», «Имя информационной базы»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-db-user»,

«Пользователь информационной базы»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-db-pwd»,

«Пароль пользователя информационной базы»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-cluster-admin»,

«Администратор кластера»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-cluster-pwd»,

«Пароль администратора кластера»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-v8version»,

«Маска версии платформы 1С»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-v8bitness»,

СтрШаблон(«Маска разрядности платформы 1С {%1|%2|%3|%4}. Требуется указать -v8version»,

РазрядностьПлатформы.x86x64,

РазрядностьПлатформы.x64x86,

РазрядностьПлатформы.x86,

РазрядностьПлатформы.x64));

Если мЭтоУправлениеСеансами Тогда

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-lockmessage»,

«Сообщение блокировки»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-lockuccode»,

«Ключ разрешения запуска»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-lockstart»,

«Время старта блокировки пользователей, время указываем как ‘2040-12-31T23:59:59′»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-lockstartat»,

«Время старта блокировки через n сек»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-try»,

«Число попыток обращения по протоколу rac/ras»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-with-nolock»,

«Не блокировать сеансы (y/n). Применяется для действия kill —

|по умолчанию, при его выполнении автоматически блокируется начало сеансов.

|Пример: … kill -with-nolock y …»);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды,

«-filter»,

«Фильтр поиска сеансов. Предполагает возможность указания множественных вариантов фильтрации. Задается в формате ‘[filter1]|[filter2]|…|[filterN]’.

|Составляющая фильтра задается в формате [[appid=приложение1[;приложение2]][[name=username1[;username2]]’.

|Пока предусмотрено только два фильтра — по имени приложения (appid) и по имени пользователя 1С (name).

|Для фильтра по приложению доступны следующие имена: 1CV8 1CV8C WebClient Designer COMConnection WSConnection BackgroundJob WebServerExtension.

|Использование wildchar/regex пока не предусмотрено. Регистронечувствительно. Параметры должны разделяться через |.

|Действует для команд kill и search.

|Пример: … kill -filter appid=Designer|name=регламент;администратор …»);

КонецЕсли;

Парсер.ДобавитьКоманду(ОписаниеКоманды);

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

Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт

ПрочитатьПараметры(ПараметрыКоманды);

Если Не ПараметрыВведеныКорректно() Тогда

Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры;

КонецЕсли;

Если мЭтоУправлениеСеансами И мНастройки.Действие = «lock» Тогда

УстановитьСтатусБлокировкиСеансов(Истина);

ИначеЕсли мЭтоУправлениеСеансами И мНастройки.Действие = «unlock» Тогда

УстановитьСтатусБлокировкиСеансов(Ложь);

ИначеЕсли мЭтоУправлениеСеансами И мНастройки.Действие = «kill» Тогда

УдалитьВсеСеансыИСоединенияБазы();

ИначеЕсли мЭтоУправлениеСеансами И мНастройки.Действие = «search» Тогда

Возврат ?(ПолучитьСписокСеансов().Количество()<>0,

МенеджерКомандПриложения.РезультатыКоманд().Успех,

МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения

);

ИначеЕсли мЭтоУправлениеРегламентнымиЗаданиями И мНастройки.Действие = «lock» Тогда

УстановитьСтатусБлокировкиРЗ(Истина);

ИначеЕсли мЭтоУправлениеРегламентнымиЗаданиями И мНастройки.Действие = «unlock» Тогда

УстановитьСтатусБлокировкиРЗ(Ложь);

ИначеЕсли мЭтоПолучениеИнформацииИБ Тогда

// сообщить информацию

Информация = ПолучитьИнформациюОБазеДанных();

Сообщить(Информация);

Иначе

Лог.Ошибка(«Неизвестное действие: « + мНастройки.Действие);

Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры;

КонецЕсли;

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;

КонецФункции

Процедура ПрочитатьПараметры(Знач ПараметрыКоманды)

мНастройки = Новый Структура;

Для Каждого КЗ Из ПараметрыКоманды Цикл

Лог.Отладка(КЗ.Ключ + » = « + КЗ.Значение);

КонецЦикла;

мНастройки.Вставить(«АдресСервераАдминистрирования», ПараметрыКоманды[«-ras»]);

мНастройки.Вставить(«ПутьКлиентаАдминистрирования», ПараметрыКоманды[«-rac»]);

мНастройки.Вставить(«ИмяБазыДанных», ПараметрыКоманды[«-db»]);

мНастройки.Вставить(«АдминистраторИБ», ПараметрыКоманды[«-db-user»]);

мНастройки.Вставить(«ПарольАдминистратораИБ», ПараметрыКоманды[«-db-pwd»]);

мНастройки.Вставить(«АдминистраторКластера», ПараметрыКоманды[«-cluster-admin»]);

мНастройки.Вставить(«ПарольАдминистратораКластера», ПараметрыКоманды[«-cluster-pwd»]);

мНастройки.Вставить(«ИспользуемаяВерсияПлатформы», ПараметрыКоманды[«-v8version»]);

мНастройки.Вставить(«КлючРазрешенияЗапуска», ПараметрыКоманды[«-lockuccode»]);

мНастройки.Вставить(«СообщениеОблокировке», ПараметрыКоманды[«-lockmessage»]);

мНастройки.Вставить(«ВремяСтартаБлокировки», ПараметрыКоманды[«-lockstart»]);

мНастройки.Вставить(«ВремяСтартаБлокировкиЧерез», ПараметрыКоманды[«-lockstartat»]);

мНастройки.Вставить(«ЧислоПопыток», ПараметрыКоманды[«-try»]);

мНастройки.Вставить(«НеБлокироватьСеансы», ПараметрыКоманды[«-with-nolock»]);

мНастройки.Вставить(«ФильтрСеансов», ПолучитьСоставляющиеФильтра(ПараметрыКоманды[«-filter»]));

мНастройки.Вставить(«Действие», ПараметрыКоманды[«Действие»]);

//Получим путь к платформе если вдруг не установленна

мНастройки.ПутьКлиентаАдминистрирования = ПолучитьПутьКRAC(мНастройки.ПутьКлиентаАдминистрирования, мНастройки.ИспользуемаяВерсияПлатформы);

Если ПустаяСтрока(мНастройки.АдресСервераАдминистрирования) Тогда

мНастройки.АдресСервераАдминистрирования = «localhost:1545»;

КонецЕсли;

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

Функция ПараметрыВведеныКорректно()

Успех = Истина;

Если Не ЗначениеЗаполнено(мНастройки.АдресСервераАдминистрирования) Тогда

Лог.Ошибка(«Не указан сервер администрирования»);

Успех = Ложь;

КонецЕсли;

Если Не ЗначениеЗаполнено(мНастройки.ПутьКлиентаАдминистрирования) Тогда

Лог.Ошибка(«Не указан клиент администрирования»);

Успех = Ложь;

КонецЕсли;

Если Не ЗначениеЗаполнено(мНастройки.ИмяБазыДанных) Тогда

Лог.Ошибка(«Не указано имя базы данных»);

Успех = Ложь;

КонецЕсли;

Если (мЭтоУправлениеРегламентнымиЗаданиями Или мЭтоУправлениеСеансами) И Не ЗначениеЗаполнено(мНастройки.Действие) Тогда

Лог.Ошибка(«Не указано действие lock/unlock»);

Успех = Ложь;

КонецЕсли;

Если мНастройки.ЧислоПопыток <> Неопределено Тогда

Попытка

ПопыткиЧислом = Число(мНастройки.ЧислоПопыток);

Исключение

Лог.Ошибка(«Параметр -try не является числовым.»);

Успех = Ложь;

КонецПопытки;

Если Успех и ПопыткиЧислом <= 0 Тогда

ПопыткиЧислом = 1;

Лог.Предупреждение(«Параметр -try не представляет собой число попыток. Он будет проигнорирован»);

КонецЕсли;

Если Успех Тогда

мНастройки.ЧислоПопыток = ПопыткиЧислом;

Иначе

мНастройки.ЧислоПопыток = 1;

КонецЕсли;

Иначе

мНастройки.ЧислоПопыток = 1;

КонецЕсли;

Возврат Успех;

КонецФункции

/////////////////////////////////////////////////////////////////////////////////

// Взаимодействие с кластером

Процедура УдалитьВсеСеансыИСоединенияБазы()

Если Не ЗначениеЗаполнено(мНастройки.НеБлокироватьСеансы) Или

ВРег(мНастройки.НеБлокироватьСеансы)<>«Y»

Тогда

УстановитьСтатусБлокировкиСеансов(Истина);

КонецЕсли;

Для Сч = 1 По мНастройки.ЧислоПопыток Цикл

Попытка

ОтключитьСуществующиеСеансы();

Приостановить(500);

Сеансы = ПолучитьСписокСеансов();

Если Сеансы.Количество() Тогда

Лог.Информация(«Пауза перед отключением соединений»);

Приостановить(10000);

ОтключитьСоединенияСРабочимиПроцессами();

КонецЕсли;

Прервать;

Исключение

Лог.Предупреждение(«Попытка удаления сеансов не удалась. Текст ошибки:

|%1″, ИнформацияОбОшибке().Описание);

КонецПопытки;

КонецЦикла

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

Процедура УстановитьСтатусБлокировкиСеансов(Знач Блокировать)

КлючиАвторизацииВБазе = КлючиАвторизацииВБазе();

ИдентификаторБазы = ИдентификаторБазы();

ИдентификаторКластера = мИдентификаторКластера;

Если Блокировать Тогда

КлючРазрешенияЗапускаПоУмолчанию = ИдентификаторБазы;

Иначе

КлючРазрешенияЗапускаПоУмолчанию = «»;

КонецЕсли;

КлючРазрешенияЗапуска = ?(ПустаяСтрока(мНастройки.КлючРазрешенияЗапуска), КлючРазрешенияЗапускаПоУмолчанию, мНастройки.КлючРазрешенияЗапуска);

ВремяБлокировки = мНастройки.ВремяСтартаБлокировки;

Если ПустаяСтрока(ВремяБлокировки) И Не ПустаяСтрока(мНастройки.ВремяСтартаБлокировкиЧерез) Тогда

Секунды = 0;

Попытка

Секунды = Число(мНастройки.ВремяСтартаБлокировкиЧерез);

Исключение

КонецПопытки;

ВремяБлокировки = Формат(ТекущаяДата()+Секунды,«ДФ=’yyyy-MM-ddTHH:mm:ss’»);

КонецЕсли;

КомандаВыполнения = СтрокаЗапускаКлиента() + СтрШаблон(«infobase update —infobase=«»%3«»%4 —cluster=«»%1«»%2 —sessions-deny=%5 —denied-message=«»%6«» —denied-from=«»%8«» —permission-code=«»%7«»«,

ИдентификаторКластера,

КлючиАвторизацииВКластере(),

ИдентификаторБазы,

КлючиАвторизацииВБазе,

?(Блокировать, «on», «off»),

мНастройки.СообщениеОблокировке,

КлючРазрешенияЗапуска,

ВремяБлокировки) + » «+мНастройки.АдресСервераАдминистрирования;

Для Сч = 1 По мНастройки.ЧислоПопыток Цикл

Попытка

ЗапуститьПроцесс(КомандаВыполнения);

Прервать;

Исключение

Лог.Предупреждение(«Попытка запуска rac не удалась. Текст ошибки:

|%1″, ИнформацияОбОшибке().Описание);

КонецПопытки;

КонецЦикла;

Лог.Информация(«Сеансы « + ?(Блокировать, «запрещены», «разрешены»));

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

Процедура УстановитьСтатусБлокировкиРЗ(Знач Блокировать)

КлючиАвторизацииВБазе = КлючиАвторизацииВБазе();

ИдентификаторБазы = ИдентификаторБазы();

ИдентификаторКластера = мИдентификаторКластера;

КомандаВыполнения = СтрокаЗапускаКлиента() +

СтрШаблон(«infobase update —infobase=«»%3«»%4 —cluster=«»%1«»%2 —scheduled-jobs-deny=%5″,

ИдентификаторКластера,

КлючиАвторизацииВКластере(),

ИдентификаторБазы,

КлючиАвторизацииВБазе,

?(Блокировать, «on», «off»)

) + » «+мНастройки.АдресСервераАдминистрирования;

ЗапуститьПроцесс(КомандаВыполнения);

Лог.Информация(«Регламентные задания « + ?(Блокировать, «запрещены», «разрешены»));

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

Функция ПолучитьИнформациюОБазеДанных()

КлючиАвторизацииВБазе = КлючиАвторизацииВБазе();

ИдентификаторКластера = ИдентификаторКластера();

ИдентификаторБазы = ИдентификаторБазы();

КомандаВыполнения = СтрокаЗапускаКлиента() +

СтрШаблон(«infobase info —infobase=«»%3«»%4 —cluster=«»%1«»%2″,

ИдентификаторКластера,

КлючиАвторизацииВКластере(),

ИдентификаторБазы,

КлючиАвторизацииВБазе

) + » «+мНастройки.АдресСервераАдминистрирования;

Результат = ЗапуститьПроцесс(КомандаВыполнения);

Возврат Результат;

КонецФункции

Функция КлючиАвторизацииВБазе()

КлючиАвторизацииВБазе = «»;

Если ЗначениеЗаполнено(мНастройки.АдминистраторИБ) Тогда

КлючиАвторизацииВБазе = КлючиАвторизацииВБазе + СтрШаблон(» —infobase-user=«»%1«»«, мНастройки.АдминистраторИБ);

КонецЕсли;

Если ЗначениеЗаполнено(мНастройки.ПарольАдминистратораИБ) Тогда

КлючиАвторизацииВБазе = КлючиАвторизацииВБазе + СтрШаблон(» —infobase-pwd=«»%1«»«, мНастройки.ПарольАдминистратораИБ);

КонецЕсли;

Возврат КлючиАвторизацииВБазе;

КонецФункции

Функция ИдентификаторКластера()

Если мИдентификаторКластера = Неопределено Тогда

//Ищем идентификатор кластера по базе

ИдентификаторБазы = ИдентификаторБазы();

КонецЕсли;

Если ПустаяСтрока(мИдентификаторКластера) Тогда

ВызватьИсключение «Кластер серверов отсутствует»;

КонецЕсли;

Возврат мИдентификаторКластера;

КонецФункции

Функция ИдентификаторыКластеров()

Лог.Информация(«Получаю список кластеров»);

КомандаВыполнения = СтрокаЗапускаКлиента() + «cluster list» + » «+ мНастройки.АдресСервераАдминистрирования;

СписокКластеров = ЗапуститьПроцесс(КомандаВыполнения);

ИДКластеров = Новый Соответствие();

УИДКластера = «»;

Для А = 1 По СтрЧислоСтрок(СписокКластеров) Цикл

Строка = СтрПолучитьСтроку(СписокКластеров, А);

Имя = СокрЛП(Лев(Строка, Найти(Строка, «:») 1));

Значение = СокрЛП(СтрЗаменить(Сред(Строка, Найти(Строка, «:») + 1), ««»«, «»));

Если Имя = «cluster» Тогда

УИДКластера = Значение;

ИначеЕсли Имя = «name» Тогда

ИДКластеров.Вставить(Значение, УИДКластера);

Лог.Отладка(«Кластер: « + Значение + » = « + УИДКластера);

КонецЕсли;

КонецЦикла;

Возврат ИДКластеров;

КонецФункции

Функция ИдентификаторБазы()

Если мИдентификаторБазы = Неопределено Тогда

мИдентификаторБазы = НайтиБазуВКластере();

КонецЕсли;

Возврат мИдентификаторБазы;

КонецФункции

Функция НайтиБазуВКластере()

ИдентификаторыКластеров = ИдентификаторыКластеров();

НайденаБазаВКластере = Ложь;

Для каждого УИДКластера Из ИдентификаторыКластеров Цикл

Лог.Информация(«Поиск базы « + мНастройки.ИмяБазыДанных + » в кластере « + УИДКластера.Ключ);

КомандаВыполнения = СтрокаЗапускаКлиента() + СтрШаблон(«infobase summary list —cluster=«»%1«»%2″,

УИДКластера.Значение,

КлючиАвторизацииВКластере()) + » « + мНастройки.АдресСервераАдминистрирования;

Лог.Отладка(КомандаВыполнения);

СписокБазВКластере = СокрЛП(ЗапуститьПроцесс(КомандаВыполнения));

Лог.Отладка(СписокБазВКластере);

ЧислоСтрок = СтрЧислоСтрок(СписокБазВКластере);

Для К = 1 По ЧислоСтрок Цикл

СтрокаРазбора = СтрПолучитьСтроку(СписокБазВКластере, К);

ПозицияРазделителя = Найти(СтрокаРазбора, «:»);

Если Найти(СтрокаРазбора, «infobase») > 0 Тогда

УИДИБ = СокрЛП(Сред(СтрокаРазбора, ПозицияРазделителя + 1));

ИначеЕсли Найти(СтрокаРазбора, «name») > 0 Тогда

ИмяБазы = СокрЛП(Сред(СтрокаРазбора, ПозицияРазделителя + 1));

Если Нрег(ИмяБазы) = НРег(мНастройки.ИмяБазыДанных) Тогда

мИдентификаторКластера = УИДКластера.Значение;

Лог.Информация(«База « + ИмяБазы + » с ID: « + УИДИБ + » найдена в кластере « + УИДКластера.Ключ);

Лог.Отладка(«Установлен УИД кластера « + мИдентификаторКластера);

НайденаБазаВКластере = Истина;

Прервать;

КонецЕсли;

КонецЕсли;

КонецЦикла;

Если НайденаБазаВКластере Тогда

Прервать;

КонецЕсли;

КонецЦикла;

Если Не НайденаБазаВКластере Тогда

ВызватьИсключение «База « + мНастройки.ИмяБазыДанных + » не найдена в кластере»;

КонецЕсли;

Возврат УИДИБ;

КонецФункции

Функция КлючиАвторизацииВКластере()

КомандаВыполнения = «»;

Если ЗначениеЗаполнено(мНастройки.АдминистраторКластера) Тогда

КомандаВыполнения = КомандаВыполнения + СтрШаблон(» —cluster-user=«»%1«»«, мНастройки.АдминистраторКластера);

КонецЕсли;

Если ЗначениеЗаполнено(мНастройки.ПарольАдминистратораКластера) Тогда

КомандаВыполнения = КомандаВыполнения + СтрШаблон(» —cluster-pwd=«»%1«»«, мНастройки.ПарольАдминистратораКластера);

КонецЕсли;

Возврат КомандаВыполнения;

КонецФункции

Функция СтрокаЗапускаКлиента()

Перем ПутьКлиентаАдминистрирования;

Если ЭтоWindows Тогда

ПутьКлиентаАдминистрирования = ЗапускПриложений.ОбернутьВКавычки(мНастройки.ПутьКлиентаАдминистрирования);

Иначе

ПутьКлиентаАдминистрирования = мНастройки.ПутьКлиентаАдминистрирования;

КонецЕсли;

Возврат ПутьКлиентаАдминистрирования + » «;

КонецФункции

Функция ЗапуститьПроцесс(Знач СтрокаВыполнения)

Перем ПаузаОжиданияЧтенияБуфера;

ПаузаОжиданияЧтенияБуфера = 20;

Лог.Отладка(СтрокаВыполнения);

Процесс = СоздатьПроцесс(СтрокаВыполнения, ,Истина);

Процесс.Запустить();

Текст = Новый ТекстовыйДокумент;

Пока Истина Цикл

ВывестиДанныеПроцесса(Процесс, Текст);

Если Процесс.Завершен Тогда

Процесс.ОжидатьЗавершения(); // финальный сброс буферов

ВывестиДанныеПроцесса(Процесс, Текст);

Прервать;

КонецЕсли;

Приостановить(ПаузаОжиданияЧтенияБуфера);

КонецЦикла;

Если Процесс.КодВозврата = 0 Тогда

Возврат Текст.ПолучитьТекст();

Иначе

ВызватьИсключение «Сообщение от RAS/RAC

+ Текст.ПолучитьТекст();

КонецЕсли;

КонецФункции

Процедура ВывестиДанныеПроцесса(Знач Процесс, Знач Приемник)

Вывод = Процесс.ПотокВывода.Прочитать();

Ошибки = Процесс.ПотокОшибок.Прочитать();

Если СтрДлина(Строка(Вывод)) > 0 Тогда

Приемник.ДобавитьСтроку(Вывод);

КонецЕсли;

Если СтрДлина(Строка(Ошибки)) > 0 Тогда

Приемник.ДобавитьСтроку(Ошибки);

КонецЕсли;

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

Процедура ОтключитьСуществующиеСеансы()

Лог.Информация(«Отключаю существующие сеансы»);

СеансыБазы = ПолучитьСписокСеансов();

Для Каждого Сеанс Из СеансыБазы Цикл

Попытка

ОтключитьСеанс(Сеанс);

Исключение

Лог.Ошибка(ОписаниеОшибки());

КонецПопытки;

КонецЦикла;

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

Функция ПолучитьСписокСеансов()

ТаблицаСеансов = Новый ТаблицаЗначений;

ТаблицаСеансов.Колонки.Добавить(«Идентификатор»);

ТаблицаСеансов.Колонки.Добавить(«Приложение»);

ТаблицаСеансов.Колонки.Добавить(«Пользователь»);

ТаблицаСеансов.Колонки.Добавить(«НомерСеанса»);

КомандаЗапуска = СтрокаЗапускаКлиента() + СтрШаблон(«session list —cluster=«»%1«»%2 —infobase=«»%3«»«,

ИдентификаторКластера(),

КлючиАвторизацииВКластере(),

ИдентификаторБазы()) + » « + мНастройки.АдресСервераАдминистрирования;

СписокСеансовИБ = ЗапуститьПроцесс(КомандаЗапуска);

Данные = РазобратьПоток(СписокСеансовИБ);

Для Каждого Элемент Из Данные Цикл

Если Не СеансВФильтре(Новый Структура(«Приложение, Пользователь», Элемент[«app-id»], Элемент[«user-name»])) Тогда

Продолжить;

КонецЕсли;

ТекСтрока = ТаблицаСеансов.Добавить();

ТекСтрока.Идентификатор = Элемент[«session»];

ТекСтрока.Пользователь = Элемент[«user-name»];

ТекСтрока.Приложение = Элемент[«app-id»];

ТекСтрока.НомерСеанса = Элемент[«session-id»];

КонецЦикла;

Возврат ТаблицаСеансов;

КонецФункции

Процедура ОтключитьСеанс(Знач Сеанс)

ИдентификаторБазы = ИдентификаторБазы();

ИдентификаторКластера = мИдентификаторКластера;

СтрокаВыполнения = СтрокаЗапускаКлиента() + СтрШаблон(«session terminate —cluster=«»%1«»%2 —session=«»%3«»«,

ИдентификаторКластера,

КлючиАвторизацииВКластере(),

Сеанс.Идентификатор) + » « + мНастройки.АдресСервераАдминистрирования;

Лог.Информация(СтрШаблон(«Отключаю сеанс: %1 [%2] (%3)», Сеанс.НомерСеанса, Сеанс.Пользователь, Сеанс.Приложение));

ЗапуститьПроцесс(СтрокаВыполнения);

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

Функция ОтключитьСоединенияСРабочимиПроцессами()

Процессы = ПолучитьСписокРабочихПроцессов();

Для Каждого РабочийПроцесс Из Процессы Цикл

Если РабочийПроцесс[«running»] = «yes» Тогда

СписокСоединений = ПолучитьСоединенияРабочегоПроцесса(РабочийПроцесс);

Для Каждого Соединение Из СписокСоединений Цикл

Попытка

РазорватьСоединениеСПроцессом(РабочийПроцесс, Соединение);

Исключение

Лог.Ошибка(ОписаниеОшибки());

КонецПопытки;

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецФункции

Функция ПолучитьСписокРабочихПроцессов()

КомандаЗапускаПроцессы = СтрокаЗапускаКлиента() + СтрШаблон(«process list —cluster=«»%1«»%2″,

ИдентификаторКластера(),

КлючиАвторизацииВКластере()) + » « + мНастройки.АдресСервераАдминистрирования;

Лог.Информация(«Получаю список рабочих процессов…»);

СписокПроцессов = ЗапуститьПроцесс(КомандаЗапускаПроцессы);

Результат = РазобратьПоток(СписокПроцессов);

НеВФильтре = Новый Массив;

Для Каждого ТекПроцесс Из Результат Цикл

Если Не СеансВФильтре(Новый Структура(«Приложение, Пользователь», ТекПроцесс[«app-id»], ТекПроцесс[«user-name»])) Тогда

НеВФильтре.Добавить(ТекПроцесс);

КонецЕсли;

КонецЦикла;

Для Каждого Уд Из НеВФильтре Цикл

Результат.Удалить(Уд);

КонецЦикла;

Возврат Результат;

КонецФункции

Функция ПолучитьСоединенияРабочегоПроцесса(Знач РабочийПроцесс)

КомандаЗапускаСоединения = СтрокаЗапускаКлиента() + СтрШаблон(«connection list —cluster=«»%1«»%2 —infobase=%3%4 —process=%5″,

ИдентификаторКластера(),

КлючиАвторизацииВКластере(),

ИдентификаторБазы(),

КлючиАвторизацииВБазе(),

РабочийПроцесс[«process»]) + » « + мНастройки.АдресСервераАдминистрирования;

Лог.Информация(«Получаю список соединений…»);

Возврат РазобратьПоток(ЗапуститьПроцесс(КомандаЗапускаСоединения));

КонецФункции

Функция РазорватьСоединениеСПроцессом(Знач РабочийПроцесс, Знач Соединение)

КомандаРазрывСоединения = СтрокаЗапускаКлиента() + СтрШаблон(«connection disconnect —cluster=«»%1«»%2 —infobase=%3%4 —process=%5 —connection=%6″,

ИдентификаторКластера(),

КлючиАвторизацииВКластере(),

ИдентификаторБазы(),

КлючиАвторизацииВБазе(),

РабочийПроцесс[«process»],

Соединение[«connection»]) + » « + мНастройки.АдресСервераАдминистрирования;

Сообщение = СтрШаблон(«Отключаю соединение %1 [%2] (%3)»,

Соединение[«conn-id»],

Соединение[«app-id»],

Соединение[«user-name»]);

Лог.Информация(Сообщение);

Возврат ЗапуститьПроцесс(КомандаРазрывСоединения);

КонецФункции

Функция РазобратьПоток(Знач Поток) Экспорт

ТД = Новый ТекстовыйДокумент;

ТД.УстановитьТекст(Поток);

СписокОбъектов = Новый Массив;

ТекущийОбъект = Неопределено;

Для Сч = 1 По ТД.КоличествоСтрок() Цикл

Текст = ТД.ПолучитьСтроку(Сч);

Если ПустаяСтрока(Текст) или ТекущийОбъект = Неопределено Тогда

Если ТекущийОбъект <> Неопределено и ТекущийОбъект.Количество() = 0 Тогда

Продолжить; // очередная пустая строка подряд

КонецЕсли;

ТекущийОбъект = Новый Соответствие;

СписокОбъектов.Добавить(ТекущийОбъект);

КонецЕсли;

СтрокаРазбораИмя = «»;

СтрокаРазбораЗначение = «»;

Если РазобратьНаКлючИЗначение(Текст, СтрокаРазбораИмя, СтрокаРазбораЗначение) Тогда

ТекущийОбъект[СтрокаРазбораИмя] = СтрокаРазбораЗначение;

КонецЕсли;

КонецЦикла;

Если ТекущийОбъект <> Неопределено и ТекущийОбъект.Количество() = 0 Тогда

СписокОбъектов.Удалить(СписокОбъектов.ВГраница());

КонецЕсли;

Возврат СписокОбъектов;

КонецФункции

Функция ПолучитьПутьКRAC(ТекущийПуть, Знач ВерсияПлатформы = «»)

Если НЕ ПустаяСтрока(ТекущийПуть) Тогда

ФайлУтилиты = Новый Файл(ТекущийПуть);

Если ФайлУтилиты.Существует() Тогда

Лог.Отладка(«Текущая версия rac « + ФайлУтилиты.ПолноеИмя);

Возврат ФайлУтилиты.ПолноеИмя;

КонецЕсли;

КонецЕсли;

Если ПустаяСтрока(ВерсияПлатформы) Тогда

ВерсияПлатформы = «8.3»;

КонецЕсли;

Конфигуратор = Новый УправлениеКонфигуратором;

ПутьКПлатформе = Конфигуратор.ПолучитьПутьКВерсииПлатформы(ВерсияПлатформы);

Лог.Отладка(«Используемый путь для поиска rac « + ПутьКПлатформе);

КаталогУстановки = Новый Файл(ПутьКПлатформе);

Лог.Отладка(КаталогУстановки.Путь);

ИмяФайла = ?(ЭтоWindows, «rac.exe», «rac»);

ФайлУтилиты = Новый Файл(ОбъединитьПути(Строка(КаталогУстановки.Путь), ИмяФайла));

Если ФайлУтилиты.Существует() Тогда

Лог.Отладка(«Текущая версия rac « + ФайлУтилиты.ПолноеИмя);

Возврат ФайлУтилиты.ПолноеИмя;

КонецЕсли;

Возврат ТекущийПуть;

КонецФункции

Функция РазобратьНаКлючИЗначение(Знач СтрокаРазбора, Ключ, Значение)

ПозицияРазделителя = Найти(СтрокаРазбора, «:»);

Если ПозицияРазделителя = 0 Тогда

Возврат Ложь;

КонецЕсли;

Ключ = СокрЛП(Лев(СтрокаРазбора, ПозицияРазделителя 1));

Значение = СокрЛП(Сред(СтрокаРазбора, ПозицияРазделителя + 1));

Возврат Истина;

КонецФункции

Функция ПолучитьСоставляющиеФильтра(СтрокаФильтра)

Результат = Новый Структура;

СоставФильтра = СтрРазделить(СтрокаФильтра, «|», Ложь);

Для Каждого ТекСтр Из СоставФильтра Цикл

РазобратьСоставляющуюФильтра(Результат, ТекСтр);

КонецЦикла;

Возврат Результат;

КонецФункции

Процедура РазобратьСоставляющуюФильтра(РезультатСтруктура, Составляющая)

ПозРавно = СтрНайти(Составляющая, «=»);

Если ПозРавно=0 Тогда

Возврат;

КонецЕсли;

ИмяФильтра = Лев(Составляющая, ПозРавно 1);

Попытка

ПроверкаИмени = Новый Структура(ИмяФильтра);

Исключение

Возврат;

КонецПопытки;

СодержаниеСтрока = Сред(Составляющая, ПозРавно + 1);

Если ПустаяСтрока(СодержаниеСтрока) Тогда

Возврат;

КонецЕсли;

СодержаниеМассив = СтрРазделить(СодержаниеСтрока, «;», Ложь);

РезультатСтруктура.Вставить(ИмяФильтра, СодержаниеМассив);

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

Функция СеансВФильтре(Сеанс)

Результат = Истина;

Если Не ЗначениеЗаполнено(мНастройки.ФильтрСеансов) Тогда

Возврат Результат;

КонецЕсли;

Результат = Результат И ПараметрСеансаВФильтре(«appid», Сеанс.Приложение);

Результат = Результат И ПараметрСеансаВФильтре(«name», Сеанс.Пользователь);

Возврат Результат;

КонецФункции

Функция ПараметрСеансаВФильтре(ИмяФильтра, ПроверяемоеЗначение)

Если Не ЗначениеЗаполнено(мНастройки.ФильтрСеансов) Или Не мНастройки.ФильтрСеансов.Свойство(ИмяФильтра) Тогда

Возврат Истина;

КонецЕсли;

ЗначенияФильтра = мНастройки.ФильтрСеансов[ИмяФильтра];

Для Каждого ТекЗначение Из ЗначенияФильтра Цикл

ВФильтре = ВРег(ТекЗначение)=ВРег(ПроверяемоеЗначение);

Если ВФильтре Тогда

Возврат Истина;

КонецЕсли;

КонецЦикла;

Возврат Ложь;

КонецФункции

/////////////////////////////////////////////////////////////////////////////////

СистемнаяИнформация = Новый СистемнаяИнформация;

ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), «windows») > 0;

Лог = Логирование.ПолучитьЛог(«vanessa.app.deployka»);

После установки сервера 1С на Linux у пользователей могут возникнуть проблемы при попытке подключиться к нему. Данные проблемы могут быть связаны как с настройками на сервер или клиентском компьютере, так и с настройками сетевой инфраструктуры. Рассмотри наиболее часто встречающиеся ошибки и методику поиска и исправления причин этих ошибок.

Оглавление:

1. Этот хост неизвестен / No such host is known

2. Ошибки соединения с сервером 1С/ рабочим процессом 1С

2.1. Попытка установить соединение была безуспешной.

2.2. Сервер 1С:Предприятия не обнаружен

2.3. Ошибка установки соединения

2.4. Методика устранения ошибок соединения с сервером 1С

Этот хост неизвестен / No such host is known

Пример полного текста ошибки:

Ошибки соединения с сервером 1С:Предприятия 8.3:
server_addr=tcp://sony2 descr=11001(0x00002AF9):
Этот хост неизвестен
line=1068 file=srcDataExchangeCommon.cpp

Ошибка соединения с сервером 1С:Предприятия 8.3 Этот хост неизвестен

Ошибка при выполнении операции с информационной базой.
server_addr=tcp://1s-on-1c-1 descr=11001(0x00002AF9): No such host is known line=1068 file=srcDataExchangeCommon.cpp

Ошибка при выполнении операции с информационной базой. No such host is known

Описание:

Ошибка может возникать как при работе с консолью администрирования 1С:Предприятия(добавление сервера, создание базы…), так и при запуске информационной базы.

Такая ошибка характерна, когда компьютер пользователя не обладает информацией о соответствии ip-адреса dns-имени сервера.

Решение:

Настроить DNS-адресацию или прописать адреса в файл hosts.

О том, как и почему это надо сделать — можно почитать тут Настройка DNS-адресации на сервере 1С.

В случае, если кажется, что все имена прописаны верно, необходимо:

1. Проверить еще раз. Скорее всего, где-то ошибка.

2. Сравнить, как хост прописан на самом сервере и на компьютере пользователя. Имена должны быть одинаковыми.

Часто ошибка связана с тем, указан в имени доменный суфикс или нет.

3. Проверить в консоли администрирования 1С: Предприятия — как у вас собран кластер 1С:Предприятия.

  • Возможно, у вас в консоли сервера отображаются не по DNS-имени, а по IP-адресам.
  • Возможно, клиент не сможет сопоставить IP-адрес DNS-имя(в случае, если сервер 1С находится в другой сети, и вы подключаетесь к кластеру напрямую).

Не правильно:

Правильно:

Необходимо удалить кластер. И собрать из консоли администрирования его заново.

Ошибки соединения с сервером 1С / рабочим процессом 1С

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

Методика по решению всех приведенных далее ошибок — описана в конце этого подраздела ошибок соединения с сервером / рабочим процессом.

Попытка установить соединение была безуспешной

Пример полного текста ошибки:

Ошибка соединения с сервером 1С:Предприятия 8.3:
server_addr=tcp://son1c:1541 descr=192.168.0.101:1541:
Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.

Ошибка соединения сервером – клиент не может подключиться к агенту сервера 1С, процессу ragent. Порт в сообщении 1541(по умолчанию):

Попытка установить соединение была безуспешной

Ошибка соединения рабочим процессом – клиент не может подключиться к рабочему процессу сервера rphost. Порт в сообщении может быть из диапазона 1560-1591(по умолчанию).

Ошибка соединения сервером – клиент не может подключиться к менеджеру сервера 1С, процессу rmgr. Порт в сообщении 1540(по умолчанию).

Сервер 1С:Предпрятия не обнаружен

Пример полного текста ошибки:

Сервер 1С:Предприятия не обнаружен
Не запущен ни один рабочий процесс. Соединение с информационной базой невозможно.

Такое сообщение можно увидеть если на сервере 1С не запущен ни один рабочий процесс rphost.

Сервер 1С:Предприятия не обнаружен Не запущен ни один рабочий процесс. Соединение с информационной базой невозможно.

Ошибка установки соединения

Пример полного текста ошибки:

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

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

Методика устранения ошибок соединения с сервером 1С

В данном случае необходимо понимать, что:

  • Либо процессов нет;
  • Либо не удается «увидеть» процессы в связи с отсутствием доступа;
  • Либо происходит обращение по другому адресу.

1. Сначала проверим есть ли на сервере 1С в запущенные рабочие процессы rphost.

Или

Видим, что у нас rphost слушает порт 1560

Если не все процессы запущены смотрим как исправить тут Ошибки сервера 1С на Linux.

2. Если процессы запущены — проверим доступность рабочих процессов по портам, которые они «слушают».

С компьютера пользователя необходимо выполнить команду:

telnet server_address 1560

и другие порты, на которых есть rphost.

К причинам отсутствия доступа по данному порту можно отнести:

  • Блокировка брадмауэром или другими подобными программами;
  • Отсутствие доступа на уровне сети;
  • Работающий selinux.

3. Проверяем dns-адресацию.

В частности:

      • hosts на компьютере пользователя

(в Windows: C:WindowsSystem32driversetchosts);

      • hosts на сервере 1С (в ОС Linux: /etc/hosts);
      • реестр кластера 1С

(по умолчанию в ОС Linux: /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst.).

Ошибка может быть связана с несоответствием указания имени сервера

      • у пользователя
      • в реестре кластера серверов 1С:Предприятия.

Например, с различиями в указании имени сервера с/без домена.

Связка сервера 1С:Предприятие и PostgreSQL вторая по популярности среди установок 1С и самое используемое решение на платформе Linux. В отличии внедрений на базе Windows и MSSQL, где трудно сделать так, чтобы не заработало, внедрения на базе Linux таят множество подводных камней для неопытного администратора. Часто бывает так, что вроде бы все сделано правильно, но ошибка следует за ошибкой. Сегодня мы рассмотрим самые типовые из них.

Общая информация

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

В небольших внедрениях сервер 1С и сервер СУБД обычно совмещают на одном физическом сервере, что немного сужает круг возможных ошибок. В нашем случае будет рассматриваться ситуация, когда сервера разнесены по разным машинам. В нашей тестовой лаборатории мы развернули следующую схему:

В нашем распоряжении имеются два сервера под управлением Ubuntu 12.04 x64, на одном из них установлен сервер 1С:Предприятие версии 8.3, на другом PostgreSQL 9.04 от Ethersoft, а также клиент под управлением Windows. Напоминаем, что клиент работает только
с сервером 1С, который, в свою очередь, формирует необходимые запросы к серверу СУБД. Никаких запросов от клиента к серверу управления базами данных не происходит
.

ВАЖНО: пользователь «postgres» не прошёл проверку подлинности (Ident)

Данная ошибка возникает при разнесении серверов по разным ПК из-за неправильно настроеной проверки подлинности в локальной сети. Для устранения откройте /var/lib/pgsql/data/pg_hba.conf
, найдите строку:

Host all all 192.168.31.0/24 ident

и приведите ее к виду:

Host all all 192.168.31.0/24 md5

где 192.168.31.0/24
— диапазон вашей локальной сети. Если такой строки нет, ее следует создать в секции IPv4 local connections
.

Сервер баз данных не обнаружен
could not translate host name «NAME» to address: Temporary failure in name resolution

На первый взгляд ошибка понятна: клиент не может разрешить имя сервера СУБД, типичная ошибка для небольших сетей, где отсутствует локальный DNS-сервер. В качестве решения добавляют запись в файл hosts
на клиенте, что не дает никакого результата…

А теперь вспоминаем, о чем было сказано несколько раньше. Клиентом сервера СУБД является сервер 1С, но никак не клиентский ПК, следовательно запись нужно добавлять на сервере 1С:Предприятие в файл /etc/hosts
на платформе Linux или в на платформе Windows.

Аналогичная ошибка будет возникать, если вы забыли добавить запись типа A
для сервера СУБД на локальном DNS-сервере.

Ошибка при выполнении операции с информационной базой
server_addr=NAME descr=11001(0x00002AF9): Этот хост неизвестен.

Как и прошлая, эта ошибка связана с неправильным разрешением клиентом имени сервера. На этот раз именно клиентским ПК. В качестве решения добавляем в файл /etc/hosts
на платформе Linux или в C:WindowsSystem32driversetchosts
на платформе Windows запись вида:

192.168.31.83SRV-1C-1204

где указываете адрес и имя вашего сервера 1С:Предприятия. В случае использования локального DNS следует добавить A-запись
для сервера 1С.

Ошибка СУБД: DATABASE не пригоден для использования

Гораздо более серьезная ошибка, которая говорит о том, что вы установили несовместимую с 1С:Предприятие версию PostgreSQL или допустили грубые ошибки при установке, например не установили все необходимые зависимости, в частности библиотеку libICU
.

Если вы имеете достаточный опыт администрирования Linux систем, то можете попробовать доустановить необходимые библиотеки и заново инициализировать кластер СУБД. В противном случае PostgreSQL лучше переустановить, не забыв удалить содержимое папки /var/lib/pgsql
.

Также данная ошибка может возникать при использовании сборок 9.1.x
и 9.2.x [email protected]
, подробности смотрите ниже.

Ошибка СУБД:
ERROR: could not load library «/usr/lib/x86_64-linux-gnu/postgresql/fasttrun.so»

Довольно специфичная ошибка, характерная для сборок 9.1.x
и 9.2.x [email protected]
, также может приводить предыдущей ошибке. Причина кроется в неисправленной ошибке в библиотеке fasttrun.so. Решение — откатиться на сборку 9.0.x [email protected]
.

Ошибка СУБД
ERROR: type «mvarchar» does not exist at character 31

Возникает если база данных была создана без помощи системы 1С:Предприятия. Помните, для работы с 1С базы данных следует создавать только с использованием инструментов платформы 1С: через консоль

или через средство запуска 1С.

Сервер баз данных не обнаружен
ВАЖНО: пользователь «postgres» не прошёл проверку подлинности (по паролю)

Очень простая ошибка. Неправильно указан пароль суперпользователя СУБД postgres. Вариантов решения два: вспомнить пароль или изменить его. Во втором случае вам нужно будет изменить пароль в свойствах всех существующих информационных баз через оснастку Администрирование серверов 1С Предприятия
.

Сервер баз данных не обнаружен
FATAL: database «NAME» does not exist

Еще одна очень простая ошибка. Смысл ее сводится к тому, что указанная БД не существует. Чаще всего возникает из-за ошибки в указании имени базы. Следует помнить, что информационная база 1С в кластере и база данных СУБД — две разные сущности и могут иметь различные имена. Также следует помнить, что Linux системы чувствительны к регистру и для них unf83
и UNF83
два разных имени.

  • Теги:

Please enable JavaScript to view the

Ошибки, обнаруживающие себя при работе с программными продуктами, чаще всего лишают возможности пользоваться ими. А отсутствие специальных знаний для понимания алгоритмов работы порождают ещё и невозможность диагностики и исправления возникающих сбоев . В этой статье обратим взгляд на проблему «Сервер 1С:Предприятия не обнаружен, как исправить запуск агент-сервера?».

Устранить проблему в работе 1С можно несколькими способами.

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

  • Неправильное прописывание кодов разработчиками самой один-эски;
  • Ошибки, допущенные программистами, которые дорабатывают (изменяют) продукт применительно к требованиям (задачам) конкретного пользователя;
  • Сбои, вызванные погрешностями работы кэш-памяти, чаще всего ставящие в тупик программистов;

Что касается ошибки «сервер 1С:Предприятия не обнаружен», то её нереально отнести к одному из названных, так как подобное уведомление является указанием пользователю на невыполнение определённого необходимого действия для работы программы.

Исправляемся — запускаем сервер

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

Эта служба запускается двояко — либо как приложение, либо как служба. Посмотрим, как это делать в обоих случаях:

Как приложение

Чтобы запустить её в виде приложения, выполняется команда:

При этом указываются (в своих настройках) порт, диапазоны портов, уровень и каталог. Если эти параметры не указывать, то их значения будут программой установлены «по умолчанию».

В виде службы

Когда при первой установке 1С вариант запуска избирался службой, то она регистрируется и впоследствии должна так и запускаться автоматически (при каждом старте операционки).

Если же первоначально агент был установлен приложением, то можно вручную провести её регистрацию и сделать запуск. Это произойдёт по команде (не забудьте о параметрах):

ragent.exe -instsrvc -usr ‹указываем имя› -pwd ‹указываем пароль›

Port ‹для порта› -regport ‹для порт› -range ‹диапазоны портов›

Seclev ‹нужный уровень› -d ‹указывается каталог›

Результатом регистрации будет создание новой Службы (в этом случае для 1С версии 8.3 для 64-разрядки):

На память

Для удаления (отмены регистрации) службы:

Остановка:

Теперь вы всё знаете о причинах проблемы «сервер 1С:Предприятия не обнаружен» и о том, что нужно сделать при её появлении.

Оставляйте свои комментарии.

Предыстория… В нашей компании успешно работает 1С:Предприятие версии 8.2, в которой заведено порядка 100 интенсивно используемых бухгалтерских баз. Под это дело выделен отдельный сервер с довольно внушительными характеристиками, т.к. в процессе эксплуатации выяснилось, что связка 1С:Предприятие 8.2 + MS SQL
2005 очень требовательны к таким ресурсам “железа”, как жесткие диски, процессор, а самое главное – количество оперативной памяти. Стоимость подобного сервера для нас превысило 250 тысяч рублей (не считая лицензий как на ОС, так и на саму 1С).

Выделять отдельно “железо” под 1С:Предприятие версии 8.3 посчитали делом неразумным, к тому же платить еще порядка 100 тысяч рублей за второй комплект ключей для сервера 1С, ну очень накладно! Попытка установить “в лоб” 1С:Предприятие версии 8.3 привело к тому, что был потерян кластер с уже существующими базами. Вот тут-то и вскрылись особенности установки и запуска двух серверных версий 1С:Предприятия на одном компьютере.

Программа установки 1С:Предприятия 8.2 и 8.3 настраивает программное обеспечение на использование своих стандартных портов: 1540
(используемый агентом сервера), 1541
(используемый менеджером кластера), 1560-1591
(диапазон портов, используемый для рабочих процессов). Поэтому, если сервер 1С:Предприятие 8.3 должен работать одновременно с сервером 1С:Предприятия 8.2, то первому необходимо указать порты отличные от тех, что уже использует работающий экземпляр сервера предыдущей версии.

На компьютере с уже установленным сервером 1С:Предприятия версии 8.2 зарегистрирован и запущен сервис “Агент сервера 1С:Предприятия 8.2”, уже использующий указанные выше стандартные порты. Если вы установили “рядом” сервер 1С:Предприятие 8.3, то запуск его сервиса “Агент сервера 1С:Предприятия 8.3” завершится аварийно, т.к. он попытается использовать уже “занятые” порты. Чтобы избежать этого, необходимо выполнить следующее.

(Все описанное ниже справедливо для Windows Server 2008 R2 Enterprise (и Standart) 64 bit + SP1 и 32-х разрядных серверных версий 1С:Предприятие 8.2 и 8.3).

1С:Предприятие 8.2 (версия 8.2.19.90) мной устанавливались как сервис Windows с правами для запуска от имени существующего локального пользователя “Администратор”.

По окончании установки в окне Диспетчер сервера -> Конфигурация -> Службы
мы видим запущенную службу “Агент сервера 1С:Предприятия 8.2”:

запущенную с параметрами:

C:Program Files (x86)1cv828.2.19.90binragent.exe» -srvc -agent -regport 1541 -port 1540
-range 1560:1591 -d «C:Program Files (x86)1cv82srvinfo»

Сервер 1С:Предприятия 8.3 (версия 8.3.4.437) мной устанавливался аналогичным образом:

Однако, как мы видим в окне Диспетчер сервера -> Конфигурация -> Службы
, служба “Агент сервера 1С:Предприятия 8.3” не стартовала:

Теперь нам надо открыть окно командной строки cmd
и перейти в каталог bin установленной серверной версии 1С:Предприятия 8.3 и попытаться удалить регистрацию сервиса “Агент сервера 1С:Предприятия 8.3” командой ragent.exe -rmsrvc:

C:Usersадминистратор>cd C:Program Files (x86)1cv88.3.4.437bin
C:Program Files (x86)1cv88.3.4.437bin>ragent.exe -rmsrvc
Error! ControlService error!

У меня выскочила ошибка Error! ControlService error! , что в принципе ожидаемо, т.к. сервис должным образом не зарегистрировался в системе. Но на самом деле, он должен удалиться. В окне Диспетчер сервера -> Конфигурация -> Службы
вы его больше не увидите.

Теперь вам надо произвести повторную регистрацию данного сервера, но при этом указать порты отличные от тех, которые уже использует агент 1С:Предприятия 8.2. В моем случае команда будет иметь вид:

C:Program Files (x86)1cv88.3.4.437bin>

  • -port 2540
    — порт, на котором будет работать агент сервера 1С:Предприятие версии 8.3;
  • -regport 2541
    — порт, через который будет осуществляться администрирование кластера сервера 1С:Предприятие версии 8.3;
  • -range 2560:2591
    — диапазон портов для рабочих процессов;
  • -в “C:Program Files (x86)1cv8srvinfo”
    — каталог для хранения информации о новом создаваемом кластере сервера 1С:Предприятие версии 8.3;
  • -usr .Администратор
    — пользователь, от имени которого будет осуществлен запуск агента сервера 1С:Предприятие версии 8.3;
  • -pwd ********
    — пароль для указанного пользователя (введите свой).

После этого вы вновь увидите сервис “Агент сервера 1С:Предприятия 8.3” в окне Диспетчер сервера -> Конфигурация -> Службы
. Вам осталось только запустить его командой ragent.exe -start:

C:Program Files (x86)1cv88.3.4.437bin>ragent.exe -start

В окне Диспетчер сервера -> Конфигурация -> Службы
мы видим службу “Агент сервера 1С:Предприятия 8.3”:

запущенную с параметрами:

где поле “Исполняемый файл” имеет настройку:

C:Program Files (x86)1cv88.3.4.437binragent.exe» -srvc -agent -regport 2541 -port 2540
-range 2560:2591 -d «C:Program Files (x86)1cv8srvinfo»

А теперь самое интересное: вам придется проделывать данную операцию каждый раз, когда возникнет необходимость обновить версию сервера 1С:Предприятия 8.3! “Браво”, разработчики…

Теперь немного о том, каким образом жить с указанной связкой. Необходимости запускать саму программу 1С:Предприятия старой версией (из папки C:Program Files (x86)1cv82common) больше нет. При установке 1С:Предприятия версии 8.3 ярлык на рабочем столе автоматически перезапишется на запуск программы из папки C:Program Files (x86)1cv8common . Если вы будете открывать бухгалтерскую базу, работающую на сервере версии 8.2, она автоматически откроется в нужной версии тонкого клиента.

Шаблоны для создания баз (бухгалтерских или ЗИК
) помещаются по умолчанию в каталог пользователя, от имени которого вы запустили их установку. Если вы делаете это от имени администратора, то найдете их по пути C:UsersадминистраторAppDataRoaming1C1cv8tmplts . Если вы захотите добавить новую базу на основе установленного шаблона, тонкий клиент версии 8.3 увидит их все:

Теперь, если вам необходимо прописать базу версии 8.3, то вам необходимо будет указывать в поле “Кластер серверов 1С:Предприятия” компьютер, с установленным сервером 1С версии 8.3 и через двоеточие порт менеджера кластера, который вы указали при регистрации агента сервера 1С версии 8.3. В моем случае – это 2541:

При добавлении в список бухгалтерских баз новой, находящейся на сервере предприятия под управлением 1С:Предприятие версии 8.3 также необходимо указывать имя сервера, а через двоеточие – порт, используемый менеджером кластера:

Необходимость производить регистрацию утилиты для администрирование кластера обоих сервером 1С (как версии 8.2, так и 8.3) после каждой установки/обновления сохраняется.

Теперь перейдем к администрированию кластеров под управлением различных версий серверов 1С:Предприятие на одном компьютере. Откройте в проводнике папку по пути C:Program Files (x86)1cv8common , и создайте на рабочем столе ярлык для консоли администрирование кластера версии 8.3 (ярлык лучше сразу переименовать соответствующим образом, например 1CV8.3
):

Таким же образом, откройте в проводнике папку по пути C:Program Files (x86)1cv82common , и создайте на рабочем столе ярлык для консоли администрирование кластера версии 8.2 (ярлык лучше сразу переименовать, например в 1CV8.2
):

На рабочем столе вы получите следующее:

Запустим утилиту администрирование кластера сервера 1С:Предприятие версии 8.2 ярлыком “1CV8.2” (т.к. сервер использует порты по умолчанию, то кластер отобразится без проблем):

При попытке открыть данный кластер из консоли, предназначенной для администрирование кластера сервера 1С:Предприятие версии 8.3 (по ярлыку с рабочего стола с именем “1CV8.3”) вы увидите ошибку:

Ошибка соединения с сервером 1С:Предприятия 8.3:
Различаются версии клиента и сервера (8.3.4.437 —
8.2.19.90), клиентское приложение: Консоль кластера

Для отображения нужного нам кластера сервера 1С:Предприятие версии 8.3 необходимо в данной оснастке создать новый центральный сервер 1С:Предприятия 8.3:

  • в поле Имя
    необходимо указать имя компьютера с установленным сервером 1С:Предприятие 8.3;
  • в поле IP порт
    необходимо указать порт, на котором работает агент сервера 1С:Предприятия 8.3, который вы обозначали при настройке службы запуска агента;
  • в поле Описание
    обозначить описание.

После нажатия кнопки “ОК” вы сможете увидеть ваш новый кластер, который получился после установки сервера 1С:Предприятие версии 8.3.

Т.е. администрирование кластеров различных версий сервера 1С:Предприятия, установленных на одном компьютере, осуществляется соответствующими оснастками.

Вот, в принципе, и все. Удачи!

_________
UPD
.
Как показала практика, способ, описанный в данной статье, не подходит для одновременного запуска на одном сервере нескольких экземпляров сервера 1С:Предприятия версии 8.3. При попытке создать новую службу агента 1С от другой версии 1С:Предприятия, работающую на иных портах, операция:

C:Program Files (x86)1cv88.3.4.437bin>ragent.exe -instsrvc -port 2540 -regport 2541
-range 2560:2591 -d «C:Program Files (x86)1cv8srvinfo» -usr .Администратор -pwd ********

заканчивается тем, что удаляется уже работающая служба старой версии 1С 8.3, а новая не создается.

В я описал способ установки, создания соответствующих и запуска на одном сервере нескольких версий сервера 1С:Предприятия 8.3…

mem_control: ошибка авторизации

Модераторы: Дмитрий Юхтимовский, Лысиков Денис

mem_control: ошибка авторизации

Коллеги! не оставьте, пожалуйста, без ответа…
Подскажите, в чем «затык»:

Ошибка аутентификации администратора кластера: Произошла исключительная ситуация: Ошибка операции администрирования
Администратор кластера не аутентифицирован

Пароль простой 123, логин тоже проверен — опечаток нет.

Что делать?

Спасибо

mobfox
 
Сообщений: 2
Зарегистрирован: 18 янв 2016, 15:45

Re: mem_control: ошибка авторизации

Сообщение Сергей Савельев » 19 янв 2016, 19:09

Доброго времени суток.

Обычно с аутентификацией кластера проблем не возникает.

Проверьте, пожалуйста, к тому ли кластеру вы подключаетесь.

И если есть возможность, пришлите, пожалуйста, скриншоты.

Сергей Савельев
 
Сообщений: 10
Зарегистрирован: 01 окт 2014, 15:49

Re: mem_control: ошибка авторизации

Сообщение mobfox » 19 янв 2016, 19:12

Добрый день

Вот скриншот

Спасибо

Вложения
Снимок2.PNG
Снимок2.PNG (20.67 KiB) Просмотров: 7633
Снимок.PNG
Снимок.PNG (56.58 KiB) Просмотров: 7633
mobfox
 
Сообщений: 2
Зарегистрирован: 18 янв 2016, 15:45

Re: mem_control: ошибка авторизации

Сообщение nyurkov » 09 фев 2016, 12:02

Добрый день.
У меня наблюдается аналогичная проблема. Версия платформы 8.3.7.1873.
Проверено на 2 серверах и 2-х администраторах, не могу подключиться.
В чем может быть дело?
Спасибо

nyurkov
 
Сообщений: 1
Зарегистрирован: 09 фев 2016, 11:58

Re: mem_control: ошибка авторизации

Сообщение Гилёв Вячеслав » 09 фев 2016, 15:56

под 8.3.7 инструмент пока не адаптировался в виду неготовности платформы к стабильной работе как таковой

Гилёв Вячеслав
 
Сообщений: 2543
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва


Вернуться в Сервисы gilev.ru

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Обновлятор-1с. Решение проблем с com-библиотекой для внешнего подключения к базе.    оглавление    Как обновить базу на следующую редакцию?

2020-03-27T20:41:55+00:00

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

Зачем вообще указывать администратора кластера, если мы и так уже указали имя и пароль пользователя для входа в базу?

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

Обратите внимание! Администратор кластера 1с — это не то же самое, что администратор самой базы (которого мы указываем в окне авторизации 1с).

Администратор кластера, это пользователь, указанный в оснастке сервера 1с в качестве администратора:

Чтобы указать данные администратора кластера выделим нужную базу в списке обновлятора и нажмём кнопку «Свойства базы»:

В открывшемся диалоге нажмём на ссылку кластера:

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

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

Владимир Милькин

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Обновлятор-1с. Решение проблем с com-библиотекой для внешнего подключения к базе.    оглавление    Как обновить базу на следующую редакцию?

Ошибка при копировании файла в W:basemybase_xxxxx.dt Системе не удается найти указанный путь.
В данном случае, в качестве конечной папки указан сетевой диск, который подключается при входе пользователя в систему. Если агент efsaver запускается как служба, он не «видит» этого диска.
Измените путь к сетевой папке к виду полного сетевого пути, например: archivbase


Ошибка при копировании файла в archivbase mybase_xxxxx.dt Системе не удается найти указанный путь.
Проблема, как правило, связана с правами пользователя на доступ к сетевой папке. Права нужно смотреть того пользователя, который используется запуска службы. Например, агент efsaver запущенный как служба с системной учетной записью SYSTEM не имеет прав на сетевые ресурсы.


При попытке запуска агента как службы появляется окно ошибки «Указанная служба не установлена» или «could not open policy».
Вероятно инсталляцию службы блокирует компонент Windows UAC (User Account Control). Запустите менеджер с повышением прав до администратора. Для этого сделайте правый клик мышкой на ярлыке менеджера и выберите пункт меню «Запустить от имени администратора».


При попытке запуска агента как служба появляется окно ошибки «Неверный дескриптор».
Возможно, вы ошиблись при заполнении поля «Пользователь». Проверьте имя пользователя, который будет использоваться для запуска службы. Вероятно, данного пользователя в системе не существует.


Восстановление пароля для доступа к «Менеджеру».
Вам необходимо прислать на почту файл с данными программы esdata.db.
Все настройки/данные программы находятся в файле esdata.db. Файл расположен по следующему пути:

Если используете Effector Saver 3
Windows XP, Windows server 2003
C:Documents and SettingsAll UsersApplication DataEffector Saver 3esdata.db
Windows 7/10, Windows server 2008/2012
C:ProgramDataEffector Saver 3esdata.db

Если используете Effector Saver 4
Windows XP, Windows server 2003
C:Documents and SettingsAll UsersApplication DataEffector Saveresdata.db
Windows 7/8, Windows server 2008/2012
C:ProgramDataEffector Saveresdata.db

Перед копированием файла остановите службу efsaver и удалите процессы через диспетчер задач (по крайней мере те, которые присутствуют)
fagent.exe
fmanager.exe
fmonitor.exe


Архивирование средствами 1С:Предприятие 7.7 ошибка «Out of memory».
Вероятно одновременно запускается более 2-х задач Архивирование средствами 1С:Предприятие 7.7. В настройках программы установите «Разрешить одновременную работу потоков задач» в значение не больше 2.


Ошибка отключения пользователей базы 1С, Библиотека не зарегистрирована
Ошибка отключения пользователей базы 1С:. Недопустимая строка с указанием класса
Ошибка отключения пользователей базы 1С, Различаются версии клиента и сервера (8.3.7.2027 — 8.3.8.2197), клиентское приложение: COM-администратор
Ошибка отключения пользователей базы 1С, Не найден указанный модуль, ProgID: «V83.ComConnector»
Как правило, появляется после установки новой версии ядра 1С:Предприятия.
Решение — зарегистрируйте на компьютере библиотеку comcntr.dll.
О том как зарегистрировать библиотеку, здесь


Ошибка отключения пользователей базы 1С, Ошибка операции администрирования Администратор кластера не аутентифицирован
Установите флаг «Кластер требует авторизации» если в кластере 1С:Предприятия создан пользователь «администратор кластера», заполните имя и пароль.
Важно: не путайте данного пользователя с пользователем базы 1С:Предприятия и пользователем «администратор центрального сервера».
В консоли сервера 1С:Предприятия администраторы кластера находятся по следующему пути: «Console Root» — «1C:Enterprise 8.3 Central Servers» — «(*)имя компьютера» — «Кластеры» — «Локальный кластер» — «Администраторы».


Could not open data connection to port xxxxx: Connection timed out.
Может происходить в задаче «Дополнительное копирование» при передаче файла на FTP сервер. Исправляется в настройке подключения к FTP серверу, установкой флага «Пассивный режим».


Задача запускается, появляется в активных задачах, но архив не создает.
Как правило, это происходит если в настройках задачи указан не верный логин или пароль пользователя подключения к 1С.
Перезапустите агент как приложение, что бы увидеть запускаемые окна 1С в контексте Вашего рабочего стола. Выполните задачу вручную. Если откроется окно авторизации 1С, значит неверный логин или пароль.


При выходе очередного релиза платформы 8.2 приходиться перевыбирать исполняемый файл на новый релиз.
В настройках каждой задачи, в поле «Исполняемый файл:» укажите вариант «1C:Предприятие 8.2 последний установленный релиз». После этого, агент efsaver будет автоматически использовать максимальный релиз 1С 8.2.


Задача завершается с ошибкой «Запрос прекращения выполнения задачи (допустимое время выполнения вышло)».
Проверьте допустимое время выполнения задачи на закладке «Завершение».
Не верно указан логин или пароль подключения к 1С. Задача «зависает» на этапе авторизации 1С все отведенное ей время. Смотрите решение «Задача запускается, появляется в активных задачах, но архив не создает».


Как обновить Effector Saver до последней версии с сохранением текущих задач и настроек?
О том как обновить Effector Saver 3, здесь
О том как обновить Effector Saver 4, здесь
О том как перейти с Effector Saver 3 до версии 4, здесь


Как перенести настройки программы на другой компьютер? Как сохранить настройки если необходимо переустановить OS?
Все настройки/данные программы находятся в файле esdata.db. Файл расположен по следующему пути:

Если используете Effector Saver 3
Windows XP, Windows server 2003
C:Documents and SettingsAll UsersApplication DataEffector Saver 3esdata.db
Windows 7/10, Windows server 2008/2012
C:ProgramDataEffector Saver 3esdata.db

Если используете Effector Saver 4
Windows XP, Windows server 2003
C:Documents and SettingsAll UsersApplication DataEffector Saveresdata.db
Windows 7/10, Windows server 2008/2012
C:ProgramDataEffector Saveresdata.db

После установки программы на новом компьютере, замените этот файл на «старый».
Обратите внимание: версии программ, на старом компьютере и на новом, должны быть идентичны.
Если версии программ на старом компьютере и на новом разные, после замены файла настроек запустите установку программы заново (поверх) и файл настроек будет обновлен.


Возможен ли перенос Лицензии на другой компьютер?
Приобретенная Лицензия (1 копия) на программу может использоваться только на одной физической машине или в одной виртуальной среде.
Вы имеете право перенести свою Лицензию на программу на другую машину при условии, что на прежней физической машине или виртуальной среде активированная программа полностью удалена. В противном случае мы будем вынуждены отказать вам в активации. Если вам необходимо активировать несколько программ, необходимо приобрести соответствующее количество Лицензий.
После переноса Лицензии на другой компьютер, вероятно, потребуется пройти активацию программы заново.


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


Как восстановить резервную копию MS SQL базы 1С?
Извлеките из архива бэкап базы.
Воспользуйтесь статьей: Восстановление резервной копии базы данных (среда SQL Server Management Studio)


Ошибка отправки e-mail «Syntactically invalid EHLO argument(s).
Имя компьютера указано кириллицей.
Зайдите в меню «Сервис» — «Параметры программы», меню «Дополнительно»
В секции «APP» в параметр
HeloName=
впишите произвольное слово используя латинские буквы (будет использоваться как идентификатор клиента при подключении к SMTP серверу вместо имени локального компьютера), например
HeloName=Effector


Ошибка Error archivator (1): error -3.
Происходит из-за того, что файл в процессе бэкапа был модифицирован. Ошибка в модуле версии программы, устранена в последних версиях Effector Saver.
Решение — обновите Effector Saver до крайнего релиза.


Ошибка отключения пользователей базы 1С, Процесс сервера не может быть запущен, так как указана неправильная идентификация. Проверьте правильность указания имени пользователя и пароля, ProgID: «V83.ComConnector» (HRESULT=8000401A)
Перейдите «Панель управления» — «Администрирование» — «Службы компонентов».
Выберите «Приложения COM+» — «V83COMConnector» — «Свойства» перейдите на вкладку «Удостоверение» и введите данные учетной записи с правами Администратора. В случае если используете домен, укажите доменную учетную запись. Подробней в материале: Решение проблемы «Недопустимая строка с указанием класса».


Ошибка! Временный файл D:TempBase_full.bak заблокирован.
Установите полный доступ пользователю службы Effector Saver на папку временных файлов.

Также ошибка возникает, в случае если задача бэкапа базы SQL еще выполняется с прошлого времени запуска. Проверить это вы можете в «Журнале задач», просмотрев время окончания прошлой задачи.


Дружим 1С с Линуксом ИЛИ Установка окружения для работы с 1С на Линуксе под Постгресом и Апачем.

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

Пару лет вынашивал идею написать эту статью, но никак не брался за нее, а в свете текущих политических тенденций за импортозамещение данная тема становится все актуальнее.  На момент написания статьи актуальная платформа 8.3.11. Сразу скажу, что здесь будут только основы для подготовки окружения без настройки всяких оптимизаций, безопасности и прочего. Минимальные знания ОС GNU/Linux необходимы. Картинок в статье не будет, так как вся дальнейшая работа будет происходить в черной-черной консоли. Ну, помчали…

1) Установка GNU/Linux

За основу серверной операционной системы возьмем свежий 64-х разрядный дистрибутив Ubuntu 17.10.1 (https://www.ubuntu.com/download/server). Устанавливаем операционную систему на физический или виртуальный сервер (я использовал виртуализацию на основе VirtualBox (https://www.virtualbox.org/wiki/Downloads)). Думаю, что с установкой проблем не должно возникнуть, если не понимаете, соглашайтесь с установщиком.

После входа в систему обновим ее:

# apt update && apt upgrade -y && reboot

Здесь и далее команды, начинающиеся с ‘#’ выполняются под суперпользователем, а с ‘$’ — под текущим пользователем с ограниченными правами.

Можно удалить старое ядро и исходники:

# apt purge linux-image-4.13.0-21
# apt purge linux-headers-4.13.0-21

Если вы проделываете установку на VirtualBox, то необходимо установить дополнения гостевой ОС:

а) установим необходимые пакеты для дальнейшей сборки дополнений:

# apt install -y dkms build-essential

б) подключим гостевые дополнения и перезагрузимся:

# mount /dev/cdrom /media/cdrom
# cd /media/cdrom
# ./VBoxLinuxAdditions.run
# reboot

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

# usermod -G vboxsf -a ИмяПользователя
$ logout

Теперь для удобства русифицируем консоль (сменим шрифт):

# nano /etc/default/console-setup

Должно быть так:

    ACTIVE_CONSOLES=»/dev/tty[1-6]»
    CHARMAP=»UTF-8″
    CODESET=»guess»
    FONTFACE=»Fixed»
    FONTSIZE=»8×16″

$ setupcon

Сменим локаль (данный шаг важен, если будете ставить Постгрес):

# dpkg-reconfigure locales

Выберем

    ru_RU.UTF-8 UTF-8

и отметим ее по умолчанию.

Для возможности удаленного администрирования установим ssh

# apt install -y openssh-server

На этом элементарную предподготовку ОС можно считать выполненной.

2) Установка 1С

Теперь ставим платформу 1С. Я использовал 64-х битную платформу 8.3.11.3034 (deb-пакеты, с национальными языками).

Скачиваем файл deb64.tar.gz (https://releases.1c.ru/project/Platform83), распаковываем данный архив:

$ tar -xzvf deb64.tar.gz

Устанавливаем пакеты через менеджер:

# dpkg -i 1c-enterprise83-common_8.3.11-3034_amd64.deb
# dpkg -i 1c-enterprise83-server_8.3.11-3034_amd64.deb
# dpkg -i 1c-enterprise83-ws_8.3.11-3034_amd64.deb

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

# dpkg -i 1c-enterprise83-common-nls_8.3.11-3034_amd64.deb
# dpkg -i 1c-enterprise83-server-nls_8.3.11-3034_amd64.deb
# dpkg -i 1c-enterprise83-ws-nls_8.3.11-3034_amd64.deb

Даем созданному эской пользователю права на директорию с установленной платформой:

# chown -R usr1cv8:grp1cv8 /opt/1C

Ставим шрифты от M$ (соглашаемся с лицензией при установке):

# apt install -y ttf-mscorefonts-installer

Доустанавливаем нужные зависимые библиотеки:

# apt install -y libfontconfig1
# apt install -y imagemagick

Запускаем 1с сервер:

# service srv1cv83 start

Проверим состояние службы (должна быть в состоянии active):

$ service srv1cv83 status

Если у вас отсутствует DNS-сервер, который будет резолвить имена, то нужно прописать имя сервера в хосты на клиенте:

# nano /etc/hosts

    xxx.xxx.xxx.xxx    servername

Установим драйвер аппаратных лицензий платформы (HASP):

а) скачиваем на сайте 1С либо на сайте производителя (https://safenet-sentinel.ru/helpdesk/download-space/) и распаковываем:

$ unzip sentinel_ldk_run_time_linux.zip

б) так как пакет под 32-битную архитектуру, то нужно доустановить 32-х разрядные библиотеки:

# sh install_32bit_compatibility_package_for_x64.sh

в) устанавливаем пакет через менеджер:

# dpkg -i --force-architecture aksusbd_7.63-1_i386.deb

г) проверим состояние службы (должна быть в состоянии active):

$ service aksusbd status

Учтите, что для 64-х разрядного сервера 1С нужен соответствующий ключ защиты.

3) Установка PostgreSQL

Следующим шагом будет установка бесплатной СУБД PostgreSQL от «Postgres Pro» (https://postgrespro.ru/products/1c)

Сначала установим необходимые пакеты:

# apt install -y gnupg2

Скачаем ключ репозитория:

$ wget --quiet -O - http://repo.postgrespro.ru/pgpro-9.6/keys/GPG-KEY-POSTGRESPRO | sudo apt-key add -

Подключим репозиторий:

#  sh -c 'echo "deb http://repo.postgrespro.ru/pgpro-9.6/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro.list'

И установим саму СУБД (данная сборка создана на основе открытой PostgreSQL с патчами от фирмы 1С):

# apt update
# apt install -y postgresql-pro-1c-9.6

Проверим состояние службы (должна быть в состоянии active):

$ service postgresql status

Меняем пароль учетной записи psql «postgres», созданной по умолчанию:

$ sudo -u postgres psql

# password

Вводим новый пароль и выходим из консоли управления psql:

# q

На этом этапе можно создать клиент-серверную версию демонстрационной базы от 1с с именем demo

а) перейдем в каталог платформы:

$ cd /opt/1C/v8.3/x86_64

б) запустим кластер серверов:

$ ./ras --daemon cluster

в) прочитаем инфу о кластере:

$ ./rac cluster list

г) получим список баз по данному кластеру (CLUSTER_UID — идентификатор кластера с предыдущего шага):

$ ./rac infobase --cluster=CLUSTER_UID summary list

д) добавим администратора кластера:

$ ./rac cluster admin --cluster=CLUSTER_UID register --name=admin --pwd=Pa$$w0rD --auth=pwd

е) добавим базу:

$ ./rac infobase create --cluster=CLUSTER_UID --create-database --name=demo --dbms=PostgreSQL --db-server=localhost --db-name=demo --locale=ru --db-user=postgres --db-pwd=Pa$$w0rD --cluster-user=admin --cluster-pwd=Pa$$W0rD --license-distribution=allow

4) Установка Apache

Устанавливаем Web-сервер:

# apt install apache2

Проверим состояние службы (должна быть в состоянии active):

$ service apache2 status

Создадим папку для vrd-файла:

# mkdir -p /var/www/1c/8.3.11.3034/demo

Создадим файл конфигурации apache:

# touch /etc/apache2/conf-available/demo.conf

Переходим в каталог платформы:

$ cd /opt/1C/v8.3/x86_64/

Публикуем базу:

# ./webinst -apache24 -wsdir demo -dir '/var/www/1c/8.3.11.3034/demo' -connstr 'Srvr="localhost";Ref="demo";' -confPath /etc/apache2/conf-available/demo.conf

Подключаем демо конфигурацию:

# a2enconf demo

Перезапускаем веб-сервер с применением изменений:

# service apache2 reload

Теперь можно открыть конфигурацию в веб-браузере по ее URL: 
    http://servername/demo

На этом этапе окружение готово и его можно применять в целях тестирования (либо в небольшой конторе, тем самым сэкономив на лицензиях забугорных товарищей 😉 ).

Конечно, для реальной эксплуатации еще нужно правильно настраивать Постгрес, повышать безопасность через файервол и т. д. и т. п., но это уже другая история…

Содержание:

1.Понятие администратора кластера

2.Настройка прав доступа администратора

3.Учетные записи Администратора кластера 

1. Понятие администратора кластера

Администратор кластера – это учетная запись, необходимая для получения информации при работе ЦУП (центром управления производительностью) версии 2.1.

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

2. Настройка прав доступа администратора

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

Понять, есть ли администраторы в кластере нужной нам базы данных можно кликнув на узел кластера «Администраторы» внутри нужного нам кластера. И если они там есть, мы увидим дочерние элементы узла кластера, которые и будут являться учетными записями администраторов.

Узел кластера «Администраторы»

Узел кластера «Администраторы»  

3.Учетные записи Администратора кластера

Когда мы используем Администратора кластера для получения доступа к данным ЦУП (центра управления), следует учитывать два возможных варианта развития событий. В первом случае идентификация учетной записи осуществляется самой операционной системой, т. е. администратором является пользователь Windows, от имени которого запускаются все процессы кластера ЦУП. В данной ситуации писать имя и пароль также не требуется. Важно создать такую же учетную запись на сервере 1С с нужной нам базой и вписать ее в соответствующее поле, если мы будем запускать процессы ЦУП от имени локального пользователя.

Учетная запись администратора кластера

Учетная запись администратора кластера

Пример заполнения окна настроек в первом случае:

Параметры администратора кластера

Параметры администратора кластера (заполнение)

Во втором случае администратор кластера в 1С идентифицируется указанием имени и пароля. И точно как и в предыдущем случае, на сервере с информационной базой 1С 8 должен быть создан администратор с таким же именем и паролем. Ниже приведены примеры заполнения для окна настройки прав администратора:

Новый администратор кластера

Новый администратор кластера

Специалист компании «Кодерлайн»

Алексей Дорофеев

Содержание:

1.     Решение ошибки через предприятие 1С

2.     Решение ошибки через конфигуратор 1С

Ошибка «Нет прав на запуск требуемого вида клиента в 1С» возникает при условии, что у пользователя не были введены права или роли.

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

1.    Решение ошибки через предприятие 1С

Заходим в базу от пользователя с правами Администратора.

Необходимо переустановить права для пользователя, который не может зайти в программу 1С. Администрирование – Настройки пользователей и прав.

Нажимаете на гиперссылку Пользователи.

Двойным щелчком мыши нажимаете на карточку пользователя, который не может зайти в 1С.

В «пользователе» нажимаете на кнопку Права доступа.

Открывается список прав доступа, которые можно установить для данного пользователя. Вероятнее всего, у пользователя уже стоит галочка. В этом случае необходимо перезаписать права: нажимаете на галочку (снимаете ее) – Записываете (кнопка Записать) – Нажимаете на галочку вновь (устанавливаете галочку на нужные права) – Записываете (кнопка записать).

Все настройки сохранились корректно. Теперь необходимо их проверить: зайти в программу от имени нужного пользователя (в нашем примере пользователь 123).  

2.    Решение ошибки через конфигуратор 1С

Необходимо зайти в конфигуратор от пользователя с правами администратора. Если у пользователя будет недостаточно прав, то при попытке настроить роли в конфигураторе, появится ошибка «Недостаточно прав доступа». Это свидетельствует о том, что вы зашли в конфигуратор под пользователем, у которого не указаны права Администратора.

  

Когда зашли под нужным пользователем, открываете список пользователей, указанных в базе: Администрирование-Пользователи.

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

На иконке у такого пользователя красный вопросительный знак, что указывает, что у него не настроены роли.

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

Специалист компании ООО «Кодерлайн»

Анастасия Харькова.

Если при запуске программы «1С» появляется ошибка «Нет прав на запуск требуемого вида клиента», необходимо пользователю, у которого появляется ошибка, прописать необходимые роли и права.

Нет прав на запуск требуемого вида клиента

Способ первый

Шаг 1. Запускаем программу под пользователем с полными правами (с правами администратора). Открываем раздел Администрирование Настройки пользователей и прав:

Нет прав на запуск требуемого вида клиента

Шаг 2. Переходим по гиперссылке Пользователи.

Нет прав на запуск требуемого вида клиента

Шаг 3. Открываем карточку пользователя, у которого появляется данная ошибка и нажимаем на гиперссылку Права доступа.

Нет прав на запуск требуемого вида клиента

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

Нет прав на запуск требуемого вида клиента

Шаг 5. Ставим галочку на против нужного нам профиля, например, рядом с профилем бухгалтер и нажимаем кнопку Записать.

Нет прав на запуск требуемого вида клиента

Попробуем еще раз запустить программу 1С под пользователем, у которого была ошибка.

Способ второй

Типовая конфигурация

Шаг 1. Заходим в программу в режиме Конфигуратор, открываем вкладку Администрирование Пользователи, в списке выберите пользователя, у которого возникает ошибка.

Нет прав на запуск требуемого вида клиента

Шаг 2. Нажмите Изменить, либо кликните два раза по нужному пользователю, переходим на вкладку Прочее, далее необходимо выбрать нужную роль и сохранить изменения нажав ОК.

Нет прав на запуск требуемого вида клиента

Не типовая конфигурация

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

Нет прав на запуск требуемого вида клиента

Если у Вас остались вопросы обращайтесь за консультацией к специалистам e-office24.ru через свой личный кабинет или напишите нашим онлайн-консультантам в чат.

Я
   vv2304

05.11.22 — 19:13

Клиент-сервер. Все на одной машине.

Обновил платформу и сервер 1С до 8.3.22.1672.

Теперь при запуске консоли администрирования сервера 1С возникает ошибка

«Ошибка соединения с сервером 1С ошибка определения принадлежности клиентского и серверного».

А там «нет элементов для отображения».

При этом все базы работают нормально.

   Aleksey

1 — 05.11.22 — 19:15

универсальный совет — «7 бед 1 ресет» не помог?

Ну т.е. перезагрузить службу, комп, …

   vv2304

2 — 05.11.22 — 19:22

Уже несколько раз перезагружал. Службу Агент сервера вручную перезапускал.

   vv2304

3 — 05.11.22 — 19:42

Фигня какая-то.

Платформу с сервером обновлял вчера. Все потом работало. В т.ч. и консоль адм. 1С.

Затем перепрописал веб-сервер. Консоль не запускал больше.

А сегодня не смог туда нормально попасть.

Попробовал hosts изменить, вписал туда IP и имя сервера. Не помогло. Вернул как было.

Затем заново запустил RegMSC.cmd. Помогло.

Перезагрузил комп.

Опять та же ошибка :»Ошибка соединения с сервером 1С ошибка определения принадлежности клиентского и серверного»

   vv2304

4 — 05.11.22 — 19:45

Остановил службу агента сервера 1С, заново RegMSC.cmd.

Консоль нормально запустилась.

   vv2304

5 — 05.11.22 — 19:56

Перезагрузил, опять та же ошибка.

«»Ошибка соединения с сервером 1С ошибка определения принадлежности клиентского и серверного»»

На компе других платформ нет, все удалил.

  

vv2304

6 — 05.11.22 — 21:17

Оказывается, что отключение Ipv6 в сет.карте ничего не дает, надо было отключать в реестре.

После этого все заработало как надо.

Только странно, что на предыдущем релизе платформы+сервера все работало и без этих исправлений.

Ошибка соединения с сервером 1С Предприятия 8.3 – Этот хост не известен.

Ошибка соединения с сервером 1С Предприятия 8.3

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

Гарантированно, после этого, Сервер 1С стартовать не будет, точнее, произойдет запуск и вскоре его остановка.

А если запустить утилиту «Администрирования серверов» собственно увидите ошибку как на скрине ниже.

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

Как решить проблему:

Здесь собственно есть несколько вариантов!

  1. Вернуть обратно имя хоста.
  2. Удалить полностью каталог «srvinfo» там, где установлен ваш Сервер 1С.
  3. Изменить имя хоста в настройках Сервера 1С.

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

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

А вот третий вариант позволит нам, и все настройки уберечь и не потерять подключения баз.

Для этого, запускаем утилиту администрирования серверов 1С, и в свойствах кластера укажем новое имя. (Наш хост к примеру: «SERVER_OFFICE»  ).

Затем открываем каталог «srvinfo» и откроем файл 1cv8wsrv.lst простым блокнотом.

Старое имя хоста «APACHE» сменим на «SERVER_OFFICE».

Сохранив изменения, открываем папку “reg_1541” находим файл 1CV8Clst.lst и его также отредактируем:

Укажем имя нашего хоста, заменим везде, где есть старое:

Если Вы хотите больше узнать о технической стороне 1С, тогда регистрируйтесь на первый бесплатный модуль курса: Администратор 1С >>>

С уважением, Богдан.

Изображение

Понравилась статья? Поделить с друзьями:
  • Ошибка не удалось установить яндекс диск
  • Ошибка не удалось установить свойство size егаис
  • Ошибка не удалось установить программное обеспечение nvidia
  • Ошибка не удалось установить приложение плей маркет
  • Ошибка не удалось установить виндовс 10