Как вернуть на место улетевшую вверх табличную часть в документе Начисление зарплаты в 1С:ЗУП 2.5?

Пользователь 1С v8.3 (Обычные формы) 1С:Зарплата и Управление Персоналом
← На главную

В процессе расчета заработной платы в конфигурации «Зарплата и Управление Персоналом», редакция 2.5 (а также в других решениях на обычных формах, например, «Управление производственным предприятием 1.3»), пользователи часто сталкиваются с крайне неприятным багом интерфейса. При открытии документа НачислениеЗарплатыРаботникамОрганизаций табличная часть (ТЧ) с расчетами буквально «улетает» вверх, сжимается до размера тонкой полоски или полностью скрывается под шапкой документа. На экране при этом может отображаться только огромная область расчетного листка или пустая панель.

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

Почему это происходит: техническая суть бага обычных форм

Давайте выясним техническую причину такого поведения интерфейса 1С. В форме документа «Начисление зарплаты» используется сложная многокомпонентная верстка. На ней одновременно расположены несколько табличных частей (основные начисления, дополнительные начисления, удержания, НДФЛ и т.д.), вспомогательные панели детального расчета и область отображения расчетного листка. Все эти элементы разделены специальными невидимыми элементами управления — сплиттерами (разделителями).

Проблема кроется во взаимодействии платформы «1С:Предприятие» старых версий с графической подсистемой Windows при использовании масштабирования экрана (DPI), отличного от стандартных 100% (например, 125% или 150%). Когда пользователь случайно или намеренно перетаскивает границу расчетного листка до упора вверх (или когда платформа пытается автоматически рассчитать координаты при первом открытии на широкоформатном мониторе), происходит следующее:

  1. Высота верхней панели, где находится табличная часть, программно уменьшается до нуля.
  2. Из-за некорректного округления экранных пикселей при нестандартном масштабе Windows (DPI) координата сплиттера оказывается за пределами доступной области видимости или «подползает» под элементы шапки документа.
  3. Платформа записывает эти искаженные (нулевые) координаты в файл персональных настроек пользователя.
  4. Поскольку физическая граница разделителя перекрыта другими элементами формы, пользователь больше не может навести на нее курсор мыши, чтобы вернуть форму в нормальное состояние.

Особенно часто, как показывает практика, этот сбой проявляется на вкладке «Прочие удержания», так как она имеет наиболее сложную и перегруженную структуру элементов.

Рассмотрим подробнее все методы устранения этой проблемы, начиная с самых простых и заканчивая продвинутыми системными настройками.

Способ 1: Ручной возврат границы расчетного листа и сброс положения окна

Самый простой метод, который помогает в большинстве стандартных ситуаций, требует правильной последовательности действий. Простое нажатие кнопки восстановления положения окна часто не помогает, потому что сначала нужно принудительно вывести сплиттер из «нулевой» зоны.

Выполните следующие действия по шагам:

  1. Откройте проблемный документ «Начисление зарплаты» и перейдите на ту вкладку, где скрылась табличная часть.
  2. Обратите внимание на область расчетного листка в нижней части экрана. Попробуйте аккуратно подвести курсор мыши к его верхней границе. Если вам удастся поймать момент, когда курсор превратится в вертикальную двунаправленную стрелку, зажмите левую кнопку мыши и потяните границу вниз, освобождая место для табличной части.
  3. Если граница сдвинулась, сразу после этого перейдите в главное меню программы 1С.
  4. Выберите пункт меню «Форма» — «Восстановить положение окна» (также можно воспользоваться универсальным сочетанием горячих клавиш Alt + Shift + R).

После выполнения этой комбинации привязки элементов формы будут пересчитаны заново, и нормальный вид документа восстановится.

Способ 2: Перевод документа в оконный режим (Unmaximize)

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

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

Способ 3: Настройка совместимости DPI для ярлыка 1С

Если ваши бухгалтеры жалуются, что формы «ломаются» постоянно, а работа при стандартном масштабе Windows 100% невозможна из-за слишком мелкого системного шрифта на современных мониторах высокого разрешения, можно решить проблему на уровне операционной системы. Мы можем настроить индивидуальное масштабирование только для приложения 1С, не меняя глобальные настройки Windows.

Для этого выполните следующие действия:

  1. Полностью закройте программу «1С:Предприятие».
  2. Найдите ярлык, с которого вы обычно запускаете 1С на рабочем столе, нажмите на него правой кнопкой мыши и выберите пункт «Свойства».
  3. В открывшемся окне перейдите на вкладку «Совместимость».
  4. Найдите и нажмите кнопку «Изменить параметры высокого DPI» (в старых версиях Windows эта опция может называться «Изменить настройки для всех пользователей» или находиться непосредственно на вкладке совместимости).
  5. Установите флажок напротив пункта «Переопределите режим масштабирования высокого разрешения» (Scaling behavior).
  6. В выпадающем списке под этим флагом выберите значение «Приложение» (Application).
  7. Нажмите кнопку «ОК» во всех окнах для сохранения настроек.

Теперь операционная система Windows будет передавать платформе 1С информацию о том, что запуск происходит в режиме 100% масштаба, а само масштабирование интерфейса (картинки) операционная система возьмет на себя. Шрифты могут стать чуть менее четкими, но формы больше никогда не будут самопроизвольно сжиматься и улетать.

Способ 4: Точечная очистка настроек формы без потери кэша

Когда координаты разделителей зависают «намертво», обычная очистка временных файлов (кэша) может не помочь, либо системный администратор не захочет полностью удалять кэш, чтобы не сбросить настройки других отчетов и окон пользователя. В этом случае мы можем применить точечное удаление сохраненных настроек конкретной формы.

Сделать это можно двумя путями:

Вариант А: Через пользовательский интерфейс 1С

  1. Перейдите в меню Сервис — Настройки пользователей — Очистка настроек окон (в зависимости от релиза конфигурации путь может немного отличаться).
  2. В открывшемся списке сохраненных настроек найдите строку, соответствующую документу НачислениеЗарплатыРаботникамОрганизаций.
  3. Удалите именно эту запись. При следующем открытии документа платформа создаст настройки его расположения «с нуля» по умолчанию.

Вариант Б: Ручное удаление файлов конфигурации окон в профиле Windows

Если настройки повредились на уровне локального кэша платформы, при закрытой программе 1С перейдите в папки хранения данных пользователя:

Внутри этих каталогов найдите папки с длинными буквенно-цифровыми именами (UID баз данных) и удалите файлы с расширением .pfl. Именно в них хранятся индивидуальные координаты окон обычных форм. Также полезно удалить служебный файл v8sprot.lst, который отвечает за кэширование параметров отображения таблиц.

Способ 5: Программное решение проблемы в Конфигураторе

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

Проанализируем структуру формы документа в Конфигураторе:

  1. Откройте Конфигуратор, найдите документ НачислениеЗарплатыРаботникамОрганизаций и откройте его основную форму.
  2. Проверьте привязки элементов управления: выберите в меню пункт «Форма» — «Проверить форму» (или нажмите сочетание клавиш Ctrl + R). Попробуйте интерактивно поменять размеры формы в режиме проверки. Если вы увидите, что при сжатии формы панели начинают накладываться друг на друга, значит, нарушена вертикальная привязка нижних элементов.
  3. Убедитесь, что для табличных частей и панели расчетного листка корректно установлены свойства МинимальнаяВысота. Если там стоит значение «0», измените его хотя бы на «50» или «100» пикселей. Это физически не позволит сплиттеру сжать табличную часть до невидимого состояния.
  4. В свойствах самой формы найдите параметр «Состояние окна». По умолчанию там установлено значение «Обычное». Если изменить его на «Свободное», это решит проблему с некорректным поведением формы внутри главного MDI-интерфейса программы на широкоформатных мониторах.

Также вы можете внедрить небольшой программный «костыль», который будет принудительно сбрасывать настройки положения окна при каждом его открытии, имитируя нажатие горячих клавиш восстановления интерфейса. Для этого откройте модуль формы документа и добавьте в процедуру ПриОткрытии() следующий код:


Процедура ПриОткрытии()
    // Выполняем стандартные процедуры инициализации формы
    // ...
    
    // Эмулируем нажатие Alt + Shift + R для автоматического сброса разделителей
    Попытка
        ШеллОбъект = Новый COMОбъект("WScript.Shell");
        // Передаем фокус форме и посылаем комбинацию клавиш восстановления
        ШеллОбъект.SendKeys("%+{R}");
    Исключение
        // Игнорируем ошибку, если в операционной системе заблокирован запуск скриптов
    КонецПопытки;
КонецПроцедуры

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

Мы подробно разобрали все аспекты возникновения и методы устранения бага с пропавшей табличной частью в 1С:ЗУП 2.5. Рекомендуется начать с простых способов (ручное перетаскивание границы и Alt + Shift + R) и, если они не дают долгосрочного результата, перейти к настройке параметров совместимости DPI или точечной очистке локальных файлов конфигурации окон.

← На главную