Как исправить некорректное отображение и съезжающие элементы на обычных формах в 1С?

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

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

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

  1. Сохранение геометрии развернутого окна: если форма была развернута на весь экран (максимизирована) и закрыта в таком виде, платформа сохраняет координаты ее границ в пользовательские настройки. При повторном открытии алгоритм расчета относительных привязок дает сбой, из-за чего элементы смещаются.
  2. Нестандартный масштаб шрифтов Windows (High DPI): если форма редактировалась или сохранялась в конфигураторе при масштабе экрана 125%, 150% или при нестандартном разрешении, базовые координаты пиксельной сетки искажаются.
  3. Сбитые или отключенные правила привязок: отсутствие флага автоматических правил либо некорректное объединение форм при обновлении типовых конфигураций.
  4. Некорректная иерархия контейнеров: элементы внутри панели привязаны не к границам самой панели, а к границам формы.

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

Способ 1. Проверка и включение свойства «Автоправила» формы

Разберем самое быстрое решение в конфигураторе, которое восстанавливает логику автоматического расчета координат:

  1. Откроем проблемную форму объекта в режиме Конфигуратор.
  2. Выделим саму форму и перейдем в панель Свойства.
  3. Найдем свойство Автоправила (расположено в верхней части палитры свойств) и установим для него флаг.
  4. Сохраним изменения и обновим конфигурацию базы данных.

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

Способ 2. Пересохранение формы при стандартном масштабе экрана (100% DPI)

Если привязки «поплыли» после внесения изменений или обновления конфигурации, выполним процедуру корректного пересохранения:

  1. Установим в настройках дисплея операционной системы стандартный масштаб 100% и классическое разрешение (например, FullHD 1920x1080).
  2. Запустим конфигуратор, откроем проблемную форму.
  3. Нажмем комбинацию клавиш Ctrl + R для перехода в режим проверки формы. Проверим, как ведут себя элементы при изменении размеров тестового окна.
  4. Сдвинем любой элемент формы на 1 пиксель и вернем его на исходную позицию (чтобы конфигуратор зафиксировал факт изменения геометрии).
  5. Сохраним форму и обновим конфигурацию.

Способ 3. Отключение сохранения положения окна

Чтобы форма перестала считывать искаженные координаты из хранилища настроек пользователя, проанализируем свойства окна:

  1. В конфигураторе откроем свойства формы.
  2. Снимем флаг со свойства Сохранять положение окна.
  3. Если форме не требуется изменение размеров пользователем, установим свойство Изменение размера в значение Не изменять либо отключим свойство Кнопка разворачивания.

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

Способ 4. Настройка совместимости высокого DPI в Windows

Если с проблемой сталкиваются пользователи на экранах с высоким разрешением (4K, экраны ноутбуков с масштабированием 125–150%), настроим поведение операционной системы:

  1. Перейдем в каталог установки платформы (например, C:\Program Files\1cv8\8.3.X.XXXX\bin\).
  2. Нажмем правой кнопкой мыши на исполняемый файл 1cv8.exe (или ярлык запуска) и выберем Свойства.
  3. Перейдем на вкладку Совместимость и нажмем кнопку Изменить параметры высокого DPI.
  4. Установим флаг Переопределение масштабирования с высоким разрешением.
  5. В выпадающем списке выберем режим Система (System) или Система (расширенная).
  6. Применим настройки и перезапустим сеанс 1С:Предприятия. В этом режиме масштабированием окна управляет сама ОС, предотвращая искажение внутренней разметки 1С.

Способ 5. Сброс сохраненных настроек формы

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

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

КлючОбъекта = "Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента/НастройкиОкна";
ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, "", "ИмяПользователя");

Способ 6. Программная установка привязок

В сложных формах с динамическим скрытием реквизитов надежнее всего жестко задавать связи элементов управления программно в событии ПриОткрытии, используя метод УстановитьПривязку(). Рассмотрим пример:


ЭлементыФормы.ТабличноеПолеТовары.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементыФормы.ПанельОсновная, ГраницаЭлементаУправления.Право);
ЭлементыФормы.ТабличноеПолеТовары.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭлементыФормы.ПанельОсновная, ГраницаЭлементаУправления.Низ);

Применение рассмотренных методов позволяет полностью стабилизировать интерфейс обычных форм и избавиться от постоянного смещения элементов при работе пользователей.

← На главную