1с сервер недоступен не отвечает завершается аварийно или порт занят другим приложением line 1089
Как отключить пользователей программно в клиент-серверном варианте работы 1С 8.2.
Спасибо, то что нужно.Но есть пару непоняток (для меня):
я заменил "Сервер" на "ИмяСервера" в строке
РабПроц = Коннектор.ConnectWorkingProcess(Сервер + ":" + СтрЗаменить(Порт, Символы.НПП, ""));
и в COMОбъекте Соединение нет значения UserName, т.е. не могу проверить на ИмяПользователя(). Но и в Сеанс, и в Соединение есть SessionID, пришлось выкручиваться через него (получать в Сеанс и проверять в Соединение). UserName только у меня отсутствует? Платформа 8.2.11.236.
Платформа 1С:Предприятие 8.2 (8.2.17.153).
РабПроц.Disconnect(Соединение);
по причине:
Типы не совпадают (1)
Как не пробовал, одно и тоже :(
Вариант кода следующий:
(27) dmbal, Та же ситуация на платформе 15.319, решения не нашел. По синтакс-помощнику GetInfoBaseConnections получает массив описаний соединений информационной базы. А в описании соединения нет свойства UserName. Оно есть в свойствах соединения.Осталось только разобраться как получить не описание соединений, а сами соединения. :D
Хм. Соединения заработали только когда прописал (обгуглившись по самое ну погоди):
ИнформационнаяБаза2 = РабПроц.CreateInfoBaseInfo();
ИнформационнаяБаза2.Name = ИмяБазы;
Соединения = РабПроц.GetInfoBaseConnections(ИнформационнаяБаза2);
При этом проверять запущенные приложения нужно не по Соединение.Application, а по Соединение.AppID. Плюс не мешало бы добавить проверку не только backgroundjob, designer, а и comconsole - а то выкинет и только что аутентифицированное COM-соединение.
Все вышесказанное абсолютно не претендует на истину - пробуйте на свой страх и риск. :D
(3) Спасибо за развитие, честно дальше не копал. По "Сервер" на "ИмяСервера" - это я код не подправил :)
"Плюс не мешало бы добавить проверку не только backgroundjob, designer, а и comconsole - а то выкинет и только что аутентифицированное COM-соединение. " я показал лишь пример, дальше можно расширять как угодно :) моей целью было НЕ убивать текущее фоновое задание и НЕ закрывать конфигуратор, в котором я могу что-то не сохранить :) да и вообще сама идея мочить конфигуратор - ужас.
ИМХО, чтобы не убить своё собственное соединение лучше использовать проверку на SessionID (ConnID), который есть и в соединении (сеансе). Получить SessionID (ConnID) текущего (своего) подключения можно через НомерСеансаИнформационнойБазы() (НомерСоединенияИнформационнойБазы()).
bad_wag; a--jey; PhoenixAOD; bashirov.rs; tradeagent; eeeio; + 6 – Ответить (9) Если ничего не путаю, то именно через SessionID я и выкрутился. Кажется об этом речь в моем первом посте шла (1).Как давно это было. Год прошел. :) (10) V_V_V, Ну, некоторые темы не стареют. Для меня как раз проблемой было как раз узнать ID текущего сеанса, чтобы сравнить с SesionID. Может кому нибудь тоже поможет. Rabajaba , поделитесь, плиз, модулем регламентного задания, отвечающего за резервное копирование. (7) столкнулся с такой ошибкой. Дело в том, что строка подключения к базе данных содержало порт. Таким образом при получении имени сервера, возвращается не имя сервера("127.0.0.1"), а имя сервера + порт ("127.0.0.1:1689").
Заменил строку - все заработало:
//ИмяСервера = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 1); //для стандартного порта (1541)
ИмяСервера = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 6); //для не стандартного порта (7) artur.antipin, Заменил строку - все заработало:
//ИмяСервера = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 1); //для стандартного порта (1541)
ИмяСервера = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 6); //для не стандартного порта (7) artur.antipin,
Вот не уверен, что это правильно.
Вообще говоря, то ИмяСервера (включая порт), которое мы получаем таким образом, это адрес кластера 1с, на котором крутится эта база. Если порт стандартный, то он совпадает с именем сервера (читай агента сервера). Если порты не стандартные - то они разные.
Так вот. Если вы просто обрежете порт из адреса кластера, то получите обращение по стандартному порту, т.е. 1541, и скорее всего, попадете на другой сервер, не тот, на котором крутится данная база.
Вот в связи с этим вопрос: можно ли как то узнать полный адрес агента сервера, на котором крутится эта база? (36) для администрирования нужен порт не 1541, а 1540. Соответственно, если у вас неск. серверов, то использовать порт из строки подключения не корректно. Нужно хранить порт отдельно или получать из консоли. Вместо -
РабПроц = Коннектор.ConnectWorkingProcess(Имяервера + ":" + СтрЗаменить(Порт, Символы.НПП, ""));
надо -
РабПроц = Коннектор.ConnectWorkingProcess("tcp://" + Процесс.HostName + ":" + Формат(Процесс.MainPort, "ЧГ=0"));
Автору - спасибо! Использовал для отключения юзеров при ночной выгрузке базы
вот обобщенный (рабочий!) вариант:
Если Найти(СтрокаСоединенияИнформационнойБазы(), "Srvr") > 0 Тогда
// серверный вариант
Поиск1 = Найти(СтрокаСоединенияИнформационнойБазы(), "Srvr """) - 1);
// теперь ищем имя базы
Поиск1 = Найти(СтрокаСоединенияИнформационнойБазы(), "Ref """) - 1);
Иначе
// для других способов подключения алгоритм не актуален
Возврат;
КонецЕсли;
Коннектор = Новый COMОбъект("v82.COMConnector");
Агент = Коннектор.ConnectAgent(ИмяСервера);
Кластеры = Агент.GetClusters();
Для каждого Кластер из Кластеры Цикл
АдминистраторКластера = "Имя администратора кластера";
ПарольКластера = "Пароль администратора кластера";
//Агент.Authenticate(Кластер, АдминистраторКластера, ПарольКластера);
Агент.Authenticate(Кластер,,);
Процессы = Агент.GetWorkingProcesses(Кластер);
Для каждого Процесс из Процессы Цикл
Порт = Процесс.MainPort;
// теперь есть адрес и порт для подключения к рабочему процессу
РабПроц = Коннектор.ConnectWorkingProcess(ИмяСервера + ":" + СтрЗаменить(Порт, Символы.НПП, ""));
РабПроц.AddAuthentication("admin", "pass");
Базы = Агент.GetInfoBases(Кластер);
Для каждого База из Базы Цикл
Если База.Name = ИмяБазы Тогда
ИнформационнаяБаза = База;
Прервать;
КонецЕсли;
КонецЦикла;
Если ИнформационнаяБаза = "" Тогда
// база не найдена
КонецЕсли;
Сеансы = Агент.GetInfoBaseSessions(Кластер, ИнформационнаяБаза);
Для каждого Сеанс из Сеансы Цикл
ИнформационнаяБаза2 = РабПроц.CreateInfoBaseInfo();
ИнформационнаяБаза2.Name = ИмяБазы;
СоединенияБазы = РабПроц.GetInfoBaseConnections(ИнформационнаяБаза2);
// Разорвать соединения клиентских приложений.
Для Каждого Соединение Из СоединенияБазы Цикл
Если нРег(Соединение.AppID) = "backgroundjob" ИЛИ нРег(Соединение.AppID) = "comconsole" Тогда
Продолжить;
КонецЕсли;
Если Соединение.UserName = ИмяПользователя() Тогда
// это текущий пользователь
Продолжить;
КонецЕсли;
РабПроц.Disconnect(Соединение);
КонецЦикла;
КонецЦикла;
КонецЦикла;
Предупреждение("Завершается работа. ", 5);
ЗавершитьРаботуСистемы(Ложь);
Доброго времени суток друзья, столкнулся с проблемой, не могу разобраться с ее решением. Обо всем по порядку.
Не так давно, мы начали переход на 1С БП 3.0 и все что на ней основано, по сравнению с 2.0 тормозить она стала раз в 5 больше, базы открывались от 2 до 5 минут! Решение пришло быстро, MS SQL Server.
Так как для меня это первый опыт его настройки, начал я тренироваться в виртуальной машине Hyper-V, все работало более менее, пока я не загрузил туда БД сельхоз отдела, примерно через 2 - 3 часа работы сервер перестает работать, базы не подключается, даже напрямую на этом же сервере. В локальной сети выходит ошибка "1541 descr = сервер не доступен (не отвечает, завершается аварийно или порт занят другим приложением". Сначала я грешил на сетевую карту, потом на брандмауер (его отключение тоже не помогло), и вот вчера я взял физический сервер, все настроил установил, перенес базы и буквально час назад та же беда! Все драйвера обновлены, мощности сервера должно хватать (Xeon X5606 2.13 Ghz/24Gb RAM DDR3 1333/LAN 1Gb) у сети топология "Звезда". Последнее на что грешу то что сервер не включен в домен Active Directory, но тогда почему и на самом сервере база отваливается?
Кратко о ПО:
1С Предприятие 8.3.8.2088
MS SQL Server 2014 SP1
Windows Server 2008R2
Буду рад любому совету.
Дополнено:
Аналогичная проблема проявляется на Debian. С одной базой УТ10 работает нормально. При переносе старой БД (бухгалтерия) с файлового варианта на SQL (postgres) периодически раз в 1-2 недели базы становятся недоступными до перезапуска службы srv1cv83. Есть ощущение что чем больше баз переносится тем меньше срок работы до перезапуска, так при переносе 5 БД срок работы был 2-3 дня.
К одной базе УТ10 доступ осуществляется локально (на одной машине), при добавлении других баз работа с ними начинается через клиентов по сети, но в момент сбоя базы недоступны ни в каком виде до перезапуска службы srv1cv83.
В технологическом журнале из подозрительного можно выделить только следующее:
Ошибка соединения с сервером 1С:Предприятие 8.3: server_addr=tcp://localhost:1540 descr= Сервер недоступен (Не отвечает, завершается аварийно или порт занят другим приложением)
24 февраля 2019 ВК Tw Fb
Эти статьи будут Вам интересны
FreeBSD 11: Полезные команды для мониторинга системы
Информация - самое главное оружие предотвращения небольших неполадок, а так же крупных аварий. А чтобы быть всесторонне информированным, нужно тщательно следить за своей системой. В этой статье перечислены наиболее популярные средства мониторинга FreeBSD, которые помогут Вам всегда знать, что происходит с Вашей системой.
Запуск программы от имени Администратора в Windows
23 сентября 2016 ВК Tw Fb
Начиная с Windows Vista в линейке этой ОС появляется необходимость запускать некоторые программы от имени Администратора. Лучше поздно, чем никогда: в Unix-подобных ОС работать с повышенными правами вообще не рекомендуется, для этого есть sudo. И да, с незапамятных времён. К слову в Windows XP и ниже это тоже можно было сделать, только вот это не требовалось, если у Вашей учётной записи уже есть права Администратора. Но содержимое файлов манифестов приложений изменилось навсегда и некоторое ПО без повышенных прав просто не заработает. А если Вы вздумали покопаться в системе или изменить реестр - без этого не обойтись. Начинаем.
Синий экран 0x0000007B при загрузке Windows
25 сентября 2016 ВК Tw Fb
В нашем сервисе очень распространена ошибка, связанная с синим экраном и кодом 0x0000007B. Документация Windows однозначно определяет этот код, который указывает на то, что проблема связана с жёстким диском ПК (HDD). Не спешите переустанавливать систему! Всё может оказаться не так страшно, как Вам показалось.
База знаний "Try 2 Fix" Beta
Все материалы свободны
к распространению с обязательным
указанием источника
Работали на 8.2.13.205 - все было хорошо. Все-таки решили обновить платформу на 8.2.19.68. Обновили. В результате - в локальной сети (несколько подсетей) все работает. А из других городов вываливает ошибку: server_addr=tcp://sql1:1560 descr=Сервер недоступен (Не отвечает, завершается аварийно или порт занят другим приложением) . ну и дальше бла,бла,бла . Путем несложных танцев с бубном обнаружилось: толстый клиент запускается, а если тонкий клиент - вываливается с вышеописанной ошибкой. Дальнейшие танцы выявили следующую закономерность: при скорости порядка 60кБит - еще работает, а вот на 40кБит - ошибка. Скорость соединения давилась искусственно.
думаю более стабильный канал интернета поможет решить эту проблему. как трассировка к серверу проходит, сколько пакетов теряет?
Поймал аналогичную проблему именно на релизе 8.2.19.68. Как победить непонятно. Для себя решил переведя работу тонкого клиента через веб сервер.
такое ощущение, что разработчики решили, что сейчас у вех ОЧЕНЬ быстрый тырнет и задавили таймауты. ну ведь же заявлено, что "тонкий" может на медленных каналах работать :( и, самое главное - он работал .
Я думаю дело не в скорости, у нас между филиалами скорость вполне приличная, а все равно не работает. Через web сервер при этом работает нормально.
это косяк релиза.. к сожалению не лечится. ждём следующего
там проблема не в скорости тырнета. а как производити запуск? после тестов получил что если запускать через common/1cestart вылетает если запускаю через 8.2.19.68/bin/ то всё работает..
позвонили в тех поддержку, результат - ставим 8.2.18.109
А через диспетчер задач можно командную строку восстановить и поперебирать параметры на предмет глючного?
не единственный. у меня вылез косяк с блокировками. я откатился обратно на 104-ю
8.2.19.76 попробовали - такая же хрень. 8.2.18.109 - РАБОТАЕТ .
в очереднйо раз правило подтвердилось! Ни в коем случае нельзя работать на последних релизах. П,С, "Стальная Крыса" - хорошая книга :)
ОФФ: А я сейчас С.Кинга слушаю. 11/22/63 называется. оч.неплохо
Было такое, долго разбирался. В итоге помогло: 1. Отключаем все компоненты IPv6, кроме интерфейса замыкания на себя (loopback interface), путём внесения в реестр HKLM:SYSTEMCurrentControlSetservicesTCPIP6Parameters -Name DisabledComponents -PropertyType DWord -Value 0xffffffff 2. Останавливаем вспомогательную службу IP.
делать на каждом клиенте, который падает с такой ошибкой?
поскриптум: после некоторой работы на 8.2.18.109 (помним, что вернулись из 8.2.19) обнаружилось падение 1С при нажатии на кнопку выбора из справочника с "ошибкой SQL" (текст приводить нет смысла) наблюдалось такое поведение не во всех формах (. ) где был реквизит такого типа справочника. помогло только удаление формы выбора этого справочника и создания новой, точно такой же. зы. даже выгрузка в dt и загрузка не решили этой проблемы. во как .
"Стальную Крысу" читал уже после серии "Мир смерти". "Мир" мне больше понравился :)
Та же самая проблема, танцы с отключением ipv6 не помогли( Толстым клиентом входит, тонким - нет
Решаемая задача: Восстановление работоспособности сервера и программы 1С.
Для выполнения описанных действий требуется учетная запись Администратора.
Проверка программ и служб на работоспособность
Шаг 1. Проверяем доступность порта соединения
Этот адрес меняется в зависимости от версии 1С:
- C:\Program Files (x86)\1cv8\ \bin — для 32-разрядной версии сервера «1С:Предприятие» версии 8.3
- C:\Program Files\1cv8\ \bin — для 64-разрядной версии сервера «1С:Предприятие» версии 8.3
- C:\Program Files (x86)\1cv82\ \bin — для 32-разрядной версии сервера «1С:Предприятие» версии 8.2
- C:\Program Files\1cv82\ \bin — для 64-разрядной версии сервера «1С:Предприятие» версии 8.2
Шаг 2. Проверяем в процессах есть ли «rphost.exe» «ragent.exe» «rmngr.exe», он должен быть активен.
Шаг 3. Проверяем запущен ли агент сервера 1С в службах и сравниванием версию и порт в строке «Исполняемый файл»
Шаг 4. Проверяем работоспособность сервера MS SQL
Выполняем: Пуск – Программы - Microsoft SQL Server 2008 R2 (у Вас может быть любая версия ) - Средства настройки.
Напротив служб «SQL Server» и «Агент SQL Server» должен быть статус Работает.
Если всё запущено и не работает
Шаг 5. Останавливаем службу 1С
В командной строке:
Шаг 6. Переходим к удалению процессов
Далее по очередности удаляем процессы:
Шаг 7. Чистим временные папки и файлы
Далее нужно будет почистить папки 1С с временными файлами с папками типа:
Читайте также:
- Как активировать аккаунт в инстаграме с телефона навсегда
- Как скачать приложение гугл мит на ноутбук
- Как скачать видео с whatsapp web на компьютер
- Как отменить встречу с представителем банка тинькофф в приложении
- Сначала выпишите предложения в которых есть обособленные приложения с союзом как передающие оттенок