При работе в многопользовательских базах данных, особенно в решениях для розничной торговли (например, 1С:Розница), часто возникает ситуация, когда кассиры или операторы случайно закрывают вкладку Рабочий стол (Начальную страницу). В результате пользователю приходится перезапускать программу или искать способ заново открыть главный экран, что существенно снижает скорость обслуживания и отвлекает от работы. В классическом режиме отображения окон "Формы в закладках" на этой панели всегда присутствует крестик закрытия. В этой статье мы подробно разберем, почему стандартные свойства формы не помогают убрать этот крестик, и рассмотрим два надежных способа решения этой проблемы.
Многие разработчики при попытке решить эту задачу сразу обращаются к конфигуратору. В свойствах управляемой формы действительно существует флаг РазрешитьЗакрытие. Логично предположить, что если снять эту галочку, крестик с вкладки исчезнет. Однако на практике этого не происходит.
Давайте проанализируем, почему так получается. В режиме работы интерфейса "Формы в закладках" панелью открытых окон управляет непосредственно сама платформа 1С на глобальном уровне. Свойство РазрешитьЗакрытие влияет исключительно на поведение самой формы (например, блокирует закрытие по нажатию клавиш Alt + F4 или отключает системную кнопку закрытия в правом верхнем углу, если форма открыта в отдельном окне). На отрисовку панели вкладок это свойство влияния не оказывает — платформа всё равно принудительно выводит крестик на закладке Рабочего стола. Стандартной настройки в конфигураторе, способной точечно скрыть этот крестик только для одной вкладки, не предусмотрено.
Тем не менее, решить задачу можно двумя путями: программным перехватом закрытия или переходом на современный интерфейс "Такси".
Если мы не можем скрыть сам крестик визуально, мы можем программно запретить платформе закрывать форму при нажатии на него. Для этого используется обработчик события ПередЗакрытием на клиенте.
Важное предупреждение: если просто прописать в коде безусловный отказ от закрытия (Отказ = Истина), то пользователь столкнется с критической проблемой — он вообще не сможет выйти из программы 1С. При попытке закрыть главное окно приложения система посылает сигнал на закрытие всех открытых окон, включая наш Рабочий стол. Получив отказ, платформа заблокирует и само закрытие программы.
Чтобы избежать этой ловушки, начиная с версии платформы 1С 8.3.8, в обработчике события ПередЗакрытием используется специальный параметр ЗавершениеРаботы. Рассмотрим правильный шаблон кода:
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
// Если закрывается только вкладка, а не вся программа — блокируем закрытие
Если Не ЗавершениеРаботы Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Разберем по шагам, как работает этот алгоритм:
ЗавершениеРаботы принимает значение Ложь, так как пользователь закрывает только конкретное окно, а не весь сеанс 1С.Если Не ЗавершениеРаботы. Программа устанавливает параметр Отказ = Истина. В результате вкладка остается открытой.ЗавершениеРаботы принимает значение Истина. Наше условие игнорируется, процедура завершается штатно, и сеанс успешно закрывается.Чтобы выполнить эту доработку, не снимая основную конфигурацию с поддержки, рекомендуется использовать механизм расширений конфигурации. Для этого выполним следующие действия:
ПередЗакрытием, используя вышеописанный код.В современном интерфейсе "Такси" проблема закрытия Рабочего стола решена разработчиками платформы по умолчанию. Начальная страница в "Такси" жестко закреплена на панели разделов, не имеет крестика закрытия и не может быть удалена пользователем с экрана случайным кликом.
Однако при переходе на "Такси" многие пользователи жалуются на то, что элементы управления, шрифты и кнопки становятся слишком крупными, из-за чего рабочие области форм перестают помещаться на экранах с небольшим разрешением. Рассмотрим, как легко решить эту проблему с помощью встроенных инструментов адаптации масштаба.
Шаг 1. Настройка компактного режима в Конфигураторе
Для форм, которые выводятся на начальную страницу, мы можем принудительно задать более плотное отображение элементов. Для этого откроем форму Рабочего стола в конфигураторе и в палитре свойств найдем свойство ВариантМасштаба. По умолчанию там установлено значение "Авто". Изменим его на Компактный. Это автоматически уменьшит отступы между элементами, размеры кнопок и полей ввода, приблизив их к классическому виду.
Шаг 2. Индивидуальное масштабирование в режиме "1С:Предприятие"
Платформа 1С позволяет регулировать масштаб отображения непосредственно в процессе работы под каждого конкретного пользователя. Выясним, как это настроить:
Ctrl + Shift + - (для уменьшения) и Ctrl + Shift + + (для увеличения).Платформа автоматически запомнит выбранный масштаб для данного пользователя и будет применять его при каждом последующем запуске системы.