В процессе расчета заработной платы в конфигурации «Зарплата и Управление Персоналом», редакция 2.5 (а также в других решениях на обычных формах, например, «Управление производственным предприятием 1.3»), пользователи часто сталкиваются с крайне неприятным багом интерфейса. При открытии документа НачислениеЗарплатыРаботникамОрганизаций табличная часть (ТЧ) с расчетами буквально «улетает» вверх, сжимается до размера тонкой полоски или полностью скрывается под шапкой документа. На экране при этом может отображаться только огромная область расчетного листка или пустая панель.
Попытки зацепить границу раздела мышкой стандартным способом ни к чему не приводят: курсор не меняет свой вид на двунаправленную стрелку, а стандартная кнопка восстановления положения окна не дает видимого эффекта. В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем его технические причины и рассмотрим по шагам все возможные способы решения проблемы — от простых пользовательских приемов до административных настроек операционной системы и программных правок в Конфигураторе.
Давайте выясним техническую причину такого поведения интерфейса 1С. В форме документа «Начисление зарплаты» используется сложная многокомпонентная верстка. На ней одновременно расположены несколько табличных частей (основные начисления, дополнительные начисления, удержания, НДФЛ и т.д.), вспомогательные панели детального расчета и область отображения расчетного листка. Все эти элементы разделены специальными невидимыми элементами управления — сплиттерами (разделителями).
Проблема кроется во взаимодействии платформы «1С:Предприятие» старых версий с графической подсистемой Windows при использовании масштабирования экрана (DPI), отличного от стандартных 100% (например, 125% или 150%). Когда пользователь случайно или намеренно перетаскивает границу расчетного листка до упора вверх (или когда платформа пытается автоматически рассчитать координаты при первом открытии на широкоформатном мониторе), происходит следующее:
Особенно часто, как показывает практика, этот сбой проявляется на вкладке «Прочие удержания», так как она имеет наиболее сложную и перегруженную структуру элементов.
Рассмотрим подробнее все методы устранения этой проблемы, начиная с самых простых и заканчивая продвинутыми системными настройками.
Самый простой метод, который помогает в большинстве стандартных ситуаций, требует правильной последовательности действий. Простое нажатие кнопки восстановления положения окна часто не помогает, потому что сначала нужно принудительно вывести сплиттер из «нулевой» зоны.
Выполните следующие действия по шагам:
Alt + Shift + R).После выполнения этой комбинации привязки элементов формы будут пересчитаны заново, и нормальный вид документа восстановится.
Если окно документа распахнуто на весь экран внутри главного окна 1С, привязки разделителей могут намертво заблокироваться внешними границами приложения. Чтобы заставить платформу принудительно пересчитать геометрию элементов управления, используйте следующий трюк:
Если ваши бухгалтеры жалуются, что формы «ломаются» постоянно, а работа при стандартном масштабе Windows 100% невозможна из-за слишком мелкого системного шрифта на современных мониторах высокого разрешения, можно решить проблему на уровне операционной системы. Мы можем настроить индивидуальное масштабирование только для приложения 1С, не меняя глобальные настройки Windows.
Для этого выполните следующие действия:
Теперь операционная система Windows будет передавать платформе 1С информацию о том, что запуск происходит в режиме 100% масштаба, а само масштабирование интерфейса (картинки) операционная система возьмет на себя. Шрифты могут стать чуть менее четкими, но формы больше никогда не будут самопроизвольно сжиматься и улетать.
Когда координаты разделителей зависают «намертво», обычная очистка временных файлов (кэша) может не помочь, либо системный администратор не захочет полностью удалять кэш, чтобы не сбросить настройки других отчетов и окон пользователя. В этом случае мы можем применить точечное удаление сохраненных настроек конкретной формы.
Сделать это можно двумя путями:
НачислениеЗарплатыРаботникамОрганизаций.Если настройки повредились на уровне локального кэша платформы, при закрытой программе 1С перейдите в папки хранения данных пользователя:
%appdata%\1C\1Cv8\%localappdata%\1C\1Cv8\Внутри этих каталогов найдите папки с длинными буквенно-цифровыми именами (UID баз данных) и удалите файлы с расширением .pfl. Именно в них хранятся индивидуальные координаты окон обычных форм. Также полезно удалить служебный файл v8sprot.lst, который отвечает за кэширование параметров отображения таблиц.
Если вы являетесь разработчиком или ваша база данных находится на поддержке с возможностью изменения, вы можете устранить этот баг раз и навсегда непосредственно в коде конфигурации.
Проанализируем структуру формы документа в Конфигураторе:
НачислениеЗарплатыРаботникамОрганизаций и откройте его основную форму.Ctrl + R). Попробуйте интерактивно поменять размеры формы в режиме проверки. Если вы увидите, что при сжатии формы панели начинают накладываться друг на друга, значит, нарушена вертикальная привязка нижних элементов.МинимальнаяВысота. Если там стоит значение «0», измените его хотя бы на «50» или «100» пикселей. Это физически не позволит сплиттеру сжать табличную часть до невидимого состояния.Также вы можете внедрить небольшой программный «костыль», который будет принудительно сбрасывать настройки положения окна при каждом его открытии, имитируя нажатие горячих клавиш восстановления интерфейса. Для этого откройте модуль формы документа и добавьте в процедуру ПриОткрытии() следующий код:
Процедура ПриОткрытии()
// Выполняем стандартные процедуры инициализации формы
// ...
// Эмулируем нажатие Alt + Shift + R для автоматического сброса разделителей
Попытка
ШеллОбъект = Новый COMОбъект("WScript.Shell");
// Передаем фокус форме и посылаем комбинацию клавиш восстановления
ШеллОбъект.SendKeys("%+{R}");
Исключение
// Игнорируем ошибку, если в операционной системе заблокирован запуск скриптов
КонецПопытки;
КонецПроцедуры
Использование этого кода гарантирует, что даже если пользователь случайно перетащит разделитель за пределы экрана, при следующем открытии документа форма автоматически вернется к первоначальному правильному масштабу.
Мы подробно разобрали все аспекты возникновения и методы устранения бага с пропавшей табличной частью в 1С:ЗУП 2.5. Рекомендуется начать с простых способов (ручное перетаскивание границы и Alt + Shift + R) и, если они не дают долгосрочного результата, перейти к настройке параметров совместимости DPI или точечной очистке локальных файлов конфигурации окон.