Как в конфигурации 1С ограничить работу только толстым клиентом

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке сложных систем на платформе 1С:Предприятие 8 часто возникают ситуации, когда использование тонкого или веб-клиента невозможно или нецелесообразно. Это может быть связано с использованием специфических COM-объектов, требованиями к работе с локальными файлами без ограничений безопасности или необходимостью использования конструктора СКД, который полноценно функционирует именно в толстом клиенте. В данной статье мы разберем, как технически реализовать ограничение, чтобы пользователи могли работать с информационной базой исключительно через толстый клиент.

Разберем архитектурные особенности режимов запуска

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

Метод 1: Настройка прав доступа (Роли)

Проанализируем самый надежный и штатный метод ограничения — использование механизма ролей. Платформа позволяет на уровне прав доступа определить, какие типы приложений разрешены конкретному пользователю. Рассмотрим этот процесс по шагам:

  1. Откроем дерево конфигурации и перейдем в ветку "Общие" -> "Роли".
  2. Выберем основную роль, которая назначена пользователям (или создадим специальную ограничивающую роль).
  3. В окне редактирования прав снимем флажки с пунктов "Режим 'Тонкий клиент'" и "Режим 'Веб-клиент'".
  4. Убедимся, что право "Режим 'Толстый клиент'" установлено.

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

Метод 2: Программная проверка при запуске системы

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

Выясним причину использования конкретных функций. Нам понадобится свойство СоединениеИнформационнойБазы.ИмяПриложения, которое позволяет определить тип текущего сеанса. Разберем пример кода, который следует разместить в обработчике ПередНачаломРаботыСистемы:


Процедура ПередНачаломРаботыСистемы(Отказ)
    
    // Получаем имя текущего приложения
    ИмяПриложенияТекущее = Строка(СоединениеИнформационнойБазы.ИмяПриложения);
    
    // Проверяем, является ли клиент тонким или веб-клиентом
    Если ИмяПриложенияТекущее = "1CV8C" Или ИмяПриложенияТекущее = "WebClient" Тогда
        
        ТекстСообщения = "Для работы с данной конфигурацией необходимо использовать толстый клиент. 
                         |Попытка автоматического перезапуска...";
        ПоказатьПредупреждение(, ТекстСообщения);
        
        // Формируем параметры для запуска толстого клиента
        // /AppS - ключ для запуска толстого клиента в режиме управляемого приложения
        ПараметрыЗапуска = "/AppS /N " + ИмяПользователя(); 
        
        // Запускаем новое приложение
        ЗапуститьСистему(ПараметрыЗапуска);
        
        // Завершаем текущий сеанс тонкого клиента
        Отказ = Истина;
        
    КонецЕсли;

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

В данном примере мы используем метод ЗапуститьСистему(), который инициирует новый процесс 1С с нужными ключами командной строки, после чего устанавливаем Отказ = Истина, чтобы прервать текущий некорректный запуск.

Метод 3: Настройка основного режима запуска конфигурации

Посмотрим на свойства самого корневого объекта конфигурации. У конфигурации есть свойство "Основной режим запуска". Мы можем выбрать одно из двух значений:

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

Метод 4: Использование файлов настроек .v8i и ярлыков

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

Рассмотрим структуру параметра в файле настроек:

  1. Найдите блок вашей информационной базы в файле .v8i.
  2. Добавьте или измените параметр ClientConnectionMode.
  3. Установите значение ClientConnectionMode=1 (это соответствует толстому клиенту).

Также можно использовать ярлыки для запуска с ключом /AppS. Это заставит платформу игнорировать настройки по умолчанию и открывать базу именно в режиме "Толстый клиент (управляемое приложение)".

Проверка условий с помощью препроцессора

Иногда требуется не закрывать систему, а просто ограничить выполнение части функционала, доступного только в толстом клиенте. В этом случае мы используем инструкции препроцессора. Рассмотрим пример:


#Если ТолстыйКлиентУправляемоеПриложение Тогда
    // Этот код выполнится только в толстом клиенте
    ОткрытьФорму("Обработка.СложныйКонструктор.Форма");
#Иначе
    Предупреждение("Эта функция доступна только в толстом клиенте!");
#КонецЕсли

Этот подход позволяет создавать универсальные конфигурации, которые "мягко" ограничивают пользователя, объясняя, почему та или иная кнопка не работает в браузере или тонком клиенте.

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

← На главную