Как программно убрать панель окон в обычных формах 1С?

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

Разработчики, работающие с обычными формами (толстым клиентом) в «1С:Предприятие», часто сталкиваются с жесткими ограничениями платформы при настройке интерфейса. Одной из таких проблем является невозможность стандартными средствами встроенного языка скрыть панель окон (панель в нижней или верхней части экрана, где отображаются открытые вкладки документов и отчетов). Простых свойств вроде ПанелиИнтерфейса.ПанельОкон.Видимость = Ложь в платформе не предусмотрено.

Такая задача особенно актуальна при создании специализированных рабочих мест: терминалов сбора данных (ТСД), рабочих мест кассира (РМК), мониторов производства или киосков самообслуживания, где лишние элементы интерфейса только путают пользователя и занимают полезное пространство экрана.

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

Рассмотрим по шагам основные варианты обхода этого ограничения.

Метод 1. Настройка специализированного рабочего стола или режима киоска

Самый безопасный и поддерживаемый платформой способ — отказаться от использования стандартных переключающихся окон в пользу единого рабочего пространства.

Для реализации этого подхода выполним следующие действия:

  1. Создадим основную обработку или форму, которая будет служить главным окном для пользователя (например, интерфейс кассира или ТСД).
  2. В свойствах конфигурации или настройках прав пользователя назначим эту форму в качестве Рабочего стола.
  3. При открытии этой формы максимизируем её на весь экран. Начиная с платформы 8.3, даже для обычных форм можно использовать встроенный режим киоска. В модуле управляемого или обычного приложения в обработчике ПередНачаломРаботыСистемы пропишем следующий код:

УстановитьРежимОсновногоОкна(ВариантРежимаОсновногоОкна.Киоск);

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

Метод 2. Эмуляция нажатия горячих клавиш через Windows Script Host

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

Мы можем программно послать операционной системе сигнал о нажатии этой комбинации клавиш с помощью COM-объекта Wscript.Shell при старте системы:


WshShell = Новый COMОбъект("Wscript.Shell");
// Активируем меню (F10), переходим в меню Окна и выбираем пункт скрытия панели
WshShell.SendKeys("{F10}{DOWN 2}{RIGHT}"); 

Проанализируем особенности и минусы этого способа:

Метод 3. Модификация файлов настроек интерфейса (кэша PFL)

Все персональные настройки отображения панелей, окон и табличных частей 1С сохраняет в локальный кэш пользователя в файлы с расширением .pfl (в частности, в файлы v8system.pfl или v8reg.pfl), которые располагаются по пути %APPDATA%\1C\1cv8\<Уникальный_ID_базы>\.

Напрямую изменить этот файл из текущей запущенной сессии 1С нельзя — при закрытии программа принудительно перезапишет его текущим состоянием окон из оперативной памяти. Однако мы можем автоматизировать этот процесс с помощью внешнего скрипта-запускатора:

  1. Создается стартовый файл (например, скрипт на VBScript, PowerShell или bat-файл), который пользователи запускают вместо стандартного ярлыка 1С.
  2. Скрипт находит файл настроек v8system.pfl текущего пользователя. Данный файл имеет текстовую структуру, аналогичную сериализованному массиву соответствий 1С.
  3. Скрипт находит ключ, отвечающий за отображение панели окон (обычно это параметры служебных окон в блоке настроек интерфейса), и принудительно меняет флаг видимости на 0 (скрыто).
  4. После сохранения измененного файла скрипт запускает исполняемый файл платформы 1cv8.exe с параметрами подключения к базе.

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

Метод 4. Низкоуровневое управление окнами через WinAPI

Поскольку обычное приложение 1С построено на классической архитектуре Windows MDI (Multi-Document Interface), все его панели являются стандартными системными элементами (Win32 Controls). С помощью внешних компонент (например, dynwrap.dll) мы можем напрямую управлять свойствами этих окон на уровне операционной системы.

Разберем логику этого процесса:

  1. Сначала мы находим дескриптор (HWND) главного окна запущенного сеанса 1С. Обычно класс этого окна имеет имя V8TopLevelFrame.
  2. С помощью функции FindWindowEx или перебора дочерних элементов EnumChildWindows мы находим элемент, отвечающий за отрисовку панели окон (чаще всего это системный элемент класса SysTabControl32 или AfxWnd).
  3. Посылаем найденному элементу системное сообщение для скрытия, используя функцию ShowWindow с параметром 0 (соответствует системной константе SW_HIDE):

// Пример концептуальной схемы вызова API-функций
HandleПанели = FindWindowEx(HandleГлавногоОкна1С, 0, "SysTabControl32", "");
Если HandleПанели <> 0 Тогда
    ShowWindow(HandleПанели, 0); // Скрываем панель окон физически
КонецЕсли;

Преимущество метода: панель скрывается моментально во время работы приложения без перезапусков и визуального мерцания окон.

Недостаток: требуется использование внешних библиотек для работы с функциями Windows API, что усложняет архитектуру решения и снижает кроссплатформенность.

Метод 5. Отключение стандартного интерфейса через Конфигуратор

Если ваша цель — максимально разгрузить экран пользователя от системного «мусора», зачастую достаточно правильно настроить права доступа и интерфейсы в Конфигураторе.

По умолчанию панели инструментов («Стандартная», «Сервис», меню «Окна») выводятся платформой автоматически, если у пользователя активна роль с включенным свойством «Общий» (непереключаемый) интерфейс.

Если для специализированной роли (например, роли кассира или оператора ТСД) отключить этот общий интерфейс и назначить пустой, индивидуально спроектированный интерфейс, платформа при старте автоматически уберет все лишние элементы управления, оставив только чистую рабочую область.

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

← На главную