Разработчики, работающие с обычными формами (толстым клиентом) в «1С:Предприятие», часто сталкиваются с жесткими ограничениями платформы при настройке интерфейса. Одной из таких проблем является невозможность стандартными средствами встроенного языка скрыть панель окон (панель в нижней или верхней части экрана, где отображаются открытые вкладки документов и отчетов). Простых свойств вроде ПанелиИнтерфейса.ПанельОкон.Видимость = Ложь в платформе не предусмотрено.
Такая задача особенно актуальна при создании специализированных рабочих мест: терминалов сбора данных (ТСД), рабочих мест кассира (РМК), мониторов производства или киосков самообслуживания, где лишние элементы интерфейса только путают пользователя и занимают полезное пространство экрана.
В этой статье мы подробно разберем, почему возникает эта сложность, и рассмотрим несколько альтернативных способов решения проблемы, которые выработали практикующие специалисты.
Рассмотрим по шагам основные варианты обхода этого ограничения.
Самый безопасный и поддерживаемый платформой способ — отказаться от использования стандартных переключающихся окон в пользу единого рабочего пространства.
Для реализации этого подхода выполним следующие действия:
ПередНачаломРаботыСистемы пропишем следующий код:
УстановитьРежимОсновногоОкна(ВариантРежимаОсновногоОкна.Киоск);
Этот метод полностью скрывает главное меню, системный заголовок Windows, панели инструментов и саму панель окон. Пользователь видит исключительно форму рабочего стола без возможности переключения на другие окна операционной системы или 1С. Все вспомогательные формы при этом необходимо открывать строго в модальном режиме или с блокировкой всего интерфейса.
Если режим киоска не подходит и вам нужно оставить стандартный интерфейс, но временно или при старте отключить панель окон, можно прибегнуть к симуляции действий пользователя. В платформе 1С видимость панели окон переключается через главное меню: Окна -> Служебные окна -> Панель окон (или Панель состояния).
Мы можем программно послать операционной системе сигнал о нажатии этой комбинации клавиш с помощью COM-объекта Wscript.Shell при старте системы:
WshShell = Новый COMОбъект("Wscript.Shell");
// Активируем меню (F10), переходим в меню Окна и выбираем пункт скрытия панели
WshShell.SendKeys("{F10}{DOWN 2}{RIGHT}");
Проанализируем особенности и минусы этого способа:
Все персональные настройки отображения панелей, окон и табличных частей 1С сохраняет в локальный кэш пользователя в файлы с расширением .pfl (в частности, в файлы v8system.pfl или v8reg.pfl), которые располагаются по пути %APPDATA%\1C\1cv8\<Уникальный_ID_базы>\.
Напрямую изменить этот файл из текущей запущенной сессии 1С нельзя — при закрытии программа принудительно перезапишет его текущим состоянием окон из оперативной памяти. Однако мы можем автоматизировать этот процесс с помощью внешнего скрипта-запускатора:
v8system.pfl текущего пользователя. Данный файл имеет текстовую структуру, аналогичную сериализованному массиву соответствий 1С.0 (скрыто).1cv8.exe с параметрами подключения к базе.При таком подходе пользователь гарантированно запускает систему с уже скрытой панелью окон, и настройки не сбиваются.
Поскольку обычное приложение 1С построено на классической архитектуре Windows MDI (Multi-Document Interface), все его панели являются стандартными системными элементами (Win32 Controls). С помощью внешних компонент (например, dynwrap.dll) мы можем напрямую управлять свойствами этих окон на уровне операционной системы.
Разберем логику этого процесса:
HWND) главного окна запущенного сеанса 1С. Обычно класс этого окна имеет имя V8TopLevelFrame.FindWindowEx или перебора дочерних элементов EnumChildWindows мы находим элемент, отвечающий за отрисовку панели окон (чаще всего это системный элемент класса SysTabControl32 или AfxWnd).ShowWindow с параметром 0 (соответствует системной константе SW_HIDE):
// Пример концептуальной схемы вызова API-функций
HandleПанели = FindWindowEx(HandleГлавногоОкна1С, 0, "SysTabControl32", "");
Если HandleПанели <> 0 Тогда
ShowWindow(HandleПанели, 0); // Скрываем панель окон физически
КонецЕсли;
Преимущество метода: панель скрывается моментально во время работы приложения без перезапусков и визуального мерцания окон.
Недостаток: требуется использование внешних библиотек для работы с функциями Windows API, что усложняет архитектуру решения и снижает кроссплатформенность.
Если ваша цель — максимально разгрузить экран пользователя от системного «мусора», зачастую достаточно правильно настроить права доступа и интерфейсы в Конфигураторе.
По умолчанию панели инструментов («Стандартная», «Сервис», меню «Окна») выводятся платформой автоматически, если у пользователя активна роль с включенным свойством «Общий» (непереключаемый) интерфейс.
Если для специализированной роли (например, роли кассира или оператора ТСД) отключить этот общий интерфейс и назначить пустой, индивидуально спроектированный интерфейс, платформа при старте автоматически уберет все лишние элементы управления, оставив только чистую рабочую область.
Подводя итоги, отметим: если вам необходимо простое и надежное решение для торгового оборудования или терминалов, лучшим выбором будет использование режима киоска или проектирование интерфейса без общего непереключаемого меню. Если же требуется тонкая настройка стандартного окна 1С, наиболее стабильным решением будет предварительная модификация файлов настроек PFL перед запуском системы.