Как отключить тонкого клиента в 1с

Обновлено: 07.07.2024

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

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

1. В параметрах информационной базы установить следующие значения:
Время засыпания пассивного сеанса - 600 сек.
Время завершения спящего сеанса - 10 сек.

2. При публикации базы на веб сервере указать параметр "Время жизни соединения в сек." - 600

Данные методы НЕ работают, по причите того что даже в пассивном режиме (неактивная вкладка браузера), в 1С выполняются множество обработчиков ожидания, в которых есть серверные вызовы (то же обновление динамического списка раз в минуту), поэтому метка неактивности клиента (используемая в механизме "Время засыпания пассивного сеанса") с каждым запросом отодвигается.

К сожалению, 1С не предоставляет штатных средств для определения времени последней активности пользователя.

Но есть работающий метод:

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

На "рабочем столе" 1С должна находиться как минимум одна форма. В эту форму нужно добавить Поле HTML документа. Для него можно установить минимальный размер, а цвет фона сделать равным цвету фона формы, чтобы его не было видно. Важное уточнение: поле должно иметь свойство Видимость = Истина, иначе оно попросту не будет создано на клиенте.

Если на вашей форме нет даже самого малого свободного места, то можно создать две страницы (видимость переключателя = Ложь). На первую страницу переносятся все элементы формы, а на вторую Поле HTML документа. Затем при открытии формы нужно программно установить активной вторую страницу, а через 0.1 сек обратно первую. Если этого не сделать, то поле HTML физически создастся только после первой активации второй страницы, то есть, никогда (учитывая что переключатель невидим).

Затем в поле HTML загружаем javascript, который и будет выполнять всю работу. Доступ к родительскому окну осуществляется посредством идентификатора top.


По истечении отведенного времени, сеанс веб-клиента завершится (останется пустая вкладка браузера).
Впрочем, если есть открытые формы с признаком Модифицированность = Истина (звездочка в конце заголовка формы), то сеанс не завершается автоматически, а происходит автоматическая активация вкладки 1С и отображение вопроса "Покинуть эту страницу?". Это типовое поведение, сделанное чтобы не потерять введенные данные, присутствующее и в тонком клиенте при закрытии приложения ("Данные были изменены. Сохранить изменения?").

Ужас. А ведь можно еще много чего узнать, прочитав документацию.

А если серьезно, какую помощь вы хотите получить?

(2)Ну. если вы непосредственно занимаетесь 1с администрированием, то вполне. Я системный администратор. Мне вычитывать всю документацию на 1с. да чего уж там, а вы можете вот так сходу привести ссылку на страницу документации где написано что если у пользователя нет роли web-клиент, но есть тонкий клиент, то ему разрешена работа через web сервер. А то может и вы в пустую в колокола бьете?

Подозреваю, что никак.

Вообще, по опыту, в веб-клиенте значительно больше проблем у пользователей. Помимо общих платформенных ошибок, добавляются ошибки веб-клиента.
Да и работает медленнее в вебе обычно.

Может вам наоборот поступить - всех перевести на тонкий клиент?

(8) Ну вот. Не знаете, а упреками бросатесь. Да и ссылочку на документацию не привели, предположу что и сами не в курсе были.
Пока в тестах веб клиент проблем не вызвал. Во вторых будет только создание документов в БГУ и ЗиКГУ. ДГУ в вебе мы уже протестировали, работает отменно. По скорости не соглашусь. Работает не медленнее чем тонкий клиент. На слабых машинах с малым озу есть проблема, там тонкий клиент на голову лучше, но тот же 2-х ядерник и 2 гига оперативы на win7 с firefox portable вполне себе шустро летает.
Тонкий клиент. Но тут возникает проблема с обновлениями платформы, прописью случайно удаленных ИБ, опять же проблемы когда надо при обновлении чистить кэш и т.д.. Кто это будет делать? Если бы вопрос стоял в том что будет отдельный человек заниматься только этим вопросом, то можно и так. Я бы тогда вообще за VPN топил. Но когда у тебя в рыло уже 80 рабочих мест, куча приложений, пяток серверов и все это за 25 тысяч. Сам понимаешь. Нет я не ною, я получаю куда больше, но жизнь научила не класть все яйца в одну корзину. А найти на таких условиях на каких работаю я, да с таким руководством, но меньшими запросами. не так уж и просто. Хотя именно данный пунктик - мое желание.
рассматривал еще терминальный сервер. Но это не дешево в купе с лицензиями 1с, а уж если решить проблему с печатью из терминала тем же ScrewDrivers. Ну и опять же ширина канала не резиновая как у нас, так и у пользователей.
У нас плюс - удаленные пользователи будут только создавать документы и печатать их. После записи, они его даже отредактировать не смогут. Ни проводок, ни отчетов, у них не будет. В ДГУ будет обмен, но там опять же отсканировал напечатанный документ с печатью и подписью (пока начинаем с простого), подписал ЭЦП и отправил на исполнение. Бухгалтер в ответ может переслать печатную форму того же отчета и прочее. Ни чего сверхъественного. Это уже не одна организация опробовала в WEB. Там все красиво.

Просто это основы)) Не обижайтесь, это шутка была.

По поводу проблем в вебе - табличные документы например, бывают не очень хорошо работают. В БГУ в регламенитрованной бух. отчетности используется.
Документ "Универсальный регламентированный отчет".

(13)В вебе будут только создаваться документы (первичка). все. Отчетов там не будет от слова совсем. Но это не дешево в купе с лицензиями 1с, а уж если решить проблему с печатью из терминала тем же ScrewDrivers. Ну и опять же ширина канала не резиновая как у нас, так и у пользователей.

Терминальный сервер 120 дней тестово бесплатно работает, а потом можно автопереустановить. Печать и без ScrewDrivers нормальная, перенаправляется по-родному через Easy Print..

(16)Говорят могут по шапке за это дать. Не охота.
Без него - печать гемор. Я это уже проходил. Да и опять же очень много компуктеров с XP.

ХР компьютеры великолепно работают с терминалами, никаких широких каналов не надо. У Вас куча предрассудков.

(1)
Если основная задача защита от подбора, то в 8,3,16:

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

Реализовано свойство глобального контекста БлокировкаАутентификации.

Реализована форма просмотра блокировок аутентификации в конфигураторе (Администрирование - Блокировки аутентификации). Команда доступна только пользователю с административными правами.

Реализованы события журнала регистрации:

Пользователи. Блокировка аутентификации (_$User$_.AuthenticationLock).
Пользователи. Разблокировка аутентификации (_$User$_.AuthenticationUnlock).
Пользователи. Ошибка разблокировки аутентификации (_$User$_.AuthenticationUnlockError).
Изменен состав данных событий журнала регистрации:

Информационная база. Изменение параметров информационной базы.
Сеанс. Аутентификация.
Доступ. Доступ (только для Z-версии).
Доступ. Отказ в доступе.
В форме отображения списка активных пользователей конфигуратора реализована возможность просмотра колонки с характеристиками разделения данных пользователя.

Он отключает все открытые общие файлы на компьютере на котором лежит база.
Далее создал задание (Планировщик заданий Windows), который бы запускал этот файл в назначенное время.
Вы спросите а как же те сеансы которые открыты на компьютере , Я их тоже устранил создав новый *.bat файл со строкой

taskkill /IM 1cv8.exe /f
правда он отключает все запущенные 1С на текущим компьютере , но для меня это не было так страшно так как архивация производилась в ночное время и уже никто не работал в базе, этот батник тоже можно добавить в Планировщик Windows.

Так же по taskkill можете почитать в других источниках , есть возможности отключать процессы в отдельных сеансах

2. Отключение пользователей в клиент-серверной базе.

Так же как и в случае файловой базы Я использовал *.bat файлы.
Создал два *.bat файла , первый отключает сервер 1С предприятие, второй его включает очень просто .

Содержание первого файла :

net stop "1C:Enterprise 8.2 Server Agent"

Содержание второго файла :

net start "1C:Enterprise 8.2 Server Agent"

Добавил два новых задания в планировщик Windows , с разницой во времени 15 минут для того чтобы все зависшие пользователи смогли отключиться, эти действия анологичны Запуск сервера 1С Предприятие и Остановка сервера 1С Предприятие

3. Программный способ отключения пользователей в 1С

Стояла задача выполнять архивацию ежеденевно в 22:30.
В этом способе Я не стал заморачиваться, создал новую роль "НеЗакрывать1С".
Создал новую процедуру в модуле обычного приложения :

Добавил в процедуру ПриНачалеРаботыСистемы() тоже самое и подключил обработчик ожидания :

Функция текущая дата на сервере выглядит так :

Таким образом мы получаем дату на сервере , в случае если в свойствах общего модуля установлена галочка "Сервер", я поставил только её.

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

О том, что это за клиенты такие и зачем вообще может понадобиться переключаться между ними написано здесь.

1. Запустите окно выбора баз 1С, выберите нужную базу и нажмите кнопку "Изменить":

Как включить толстый клиент для 1С Бухгалтерия 8.3 (редакция 3.0) №1

Как включить толстый клиент для 1С Бухгалтерия 8.3 (редакция 3.0) №2

3. Ещё раз нажмите кнопку "Далее":

Как включить толстый клиент для 1С Бухгалтерия 8.3 (редакция 3.0) №3

4. И вот теперь в качестве основного режима запуска выберите "Тонкий клиент" или "Толстый клиент". Если этой настройки у вас нет - вам сюда.

Как включить толстый клиент для 1С Бухгалтерия 8.3 (редакция 3.0) №4

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

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

Ко мне обратился один из пользователей обновлятора со следующей проблемой:

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

И он предложил добавить в обновлятор следующую функциональность:

Периодически проверяем все сеансы на сервере и если какой-то из сеансов не использовался в течении N-минут, то завершаем его, освобождая таким образом лицензии.

Решение

1. Перейдите в обновляторе на закладку "Скрипты":

2. Здесь выберите тип скрипта "Пакетный" и базу, в которой требуется периодически завершать неиспользуемые сеансы на сервере 1с:

3. Далее нажмите пункт "обновлятор", далее "Методы", далее "Завершение неиспользуемых сеансов":

4. Откроется диалог со следующими параметрами:

Пробежимся по его настройкам.

а. Прежде всего мы задаём типы сеансов на сервере 1с, которые нужно обрабатывать. По умолчанию, отмечены только 1CV8 и 1CV8C - толстый и тонкий клиенты соответственно. Если вы хотите, чтобы обрабатывались и другие типы сеансов, отметьте их галками.

б. Выбор между "в базе" и "в кластере". Нужно понимать, что скрипт всегда запускается для какой-то конкретной базы, которую мы выбрали в настройках. Если таких баз 10 скрипт запускается 10 раз для каждой из этих баз. Если выбран пункт "в базе", то обрабатываются только сеансы базы, для которой сейчас выполняется скрипт. Если же выбран пункт "в кластере", то обрабатываются все сеансы кластера, в который входит база.

в. Пункт "неактивные более Х минут". Сеансы, которые неактивны более X минут будут завершаться принудительно. Внимание. Для реализации этой опции обновлятор ориентируется на последнюю активность сеанса, которую нам возвращает сервер. Это значение можно увидеть в оснастке кластера в колонке сеанса "Последняя активность". К сожалению, в большинстве случаев (видимо фоновое поведение клиента) эта колонка обновляется кластером даже если пользователь не работает напрямую в базе. Я не нашёл других способов узнавать именно пользовательскую активность в сеансе.

г. Пункт "спящие". Если поставить эту галку, то сеансы, у которых установлен признак Hybernate (спящий), будут завершаться принудительно.

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

В нашем случае мы хотим, чтобы завершались все сеансы кластера, в который входит база, если:

  • сеанс является толстым или тонким клиентом
  • сеанс неактивен более 10 минут
  • сеанс заснул

Настройки диалога будут такими:

Нажимаем OK и в текст скрипта вставляется следующая команда:

Если вы программист или опытный администратор, то думаю без труда понимаете какой параметр здесь за что отвечает.

Снимаем (если они стоят) все галки, они нам в этом скрипте ни к чему:

Теперь можете смело экспериментировать, чтобы убедиться что скрипт делает то, что вам нужно. Для этого создавайте необходимые условия для завершения сеансов и нажимайте кнопку "Запустить".

Предположим, что всё в полном порядке.

Осталось сохранить этот скрипт в планировщик, чтобы он запускался по расписанию.

Нажимаем кнопку "Сохранить":

В открывшемся диалоге зададим путь и имя (сделайте его осмысленным) скрипта. Из галок обязательно поставим "Закрывать обновлятор после работы скрипта" и "Настроить однократный запуск скрипта через планировщик Windows":

Нажмём "ОК" и укажем авторизацию пользователя, под которым нужно выполнять скрипт:

Снова нажмём ОК. Готово, скрипт добавился в планировщик заданий.

Теперь перейдём в планировщик заданий Windows и уже в нём настроим нужную нам периодичность запуска:

Откроем задание на редактирование и на закладке "Триггеры" укажем, что хотим выполнять задачу ежедневно каждые 15 минут:

Замечание

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

Нужно понимать, что технически запуск скрипта равносилен запуску обновлятора для выполнения определенных задач. А такие запуски в рамках одного экземпляра программы выстраиваются в очередь. И если у вас ночью запустилось пакетное обновление баз на 8 часов, то пока все эти обновления не отработают, никакие скрипты запущены не будут.

В целом под небольшие и часто повторяемые задачи я советую выделить отдельный экземпляр программы.

Также отдельно обращаю внимание на то, что вы можете сохранить несколько скриптов с разными параметрами контроля сеансов для разных баз/групп баз/кластеров.

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

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

Читайте также: