Почему в обычных формах 1С «слетают» привязки при открытии в конфигураторе и как это исправить?

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

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

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

Причина 1: Масштабирование экрана и DPI (Dots Per Inch)

Проанализируем техническую сторону вопроса. Обычные формы 1С проектировались в эпоху, когда стандартным разрешением считалось 96 DPI (соответствует масштабу 100% в настройках Windows). Современные ноутбуки с экранами высокого разрешения (FullHD и выше) по умолчанию используют масштабирование 125%, 150% или даже 200%.

Когда мы открываем форму в конфигураторе на устройстве с 120 DPI (масштаб 125%), платформа пытается «помочь» разработчику и автоматически пересчитывает координаты и размеры элементов (Ширина, Высота, Лево, Верх), чтобы они выглядели соразмерно системным шрифтам. Однако алгоритм пересчета в обычных формах несовершенен. Привязки, которые жестко привязаны к границам элементов, сбиваются из-за ошибок округления пикселей.

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

  1. Зайдем в «Параметры экрана» Windows.
  2. В разделе «Масштаб и разметка» выберем значение «100%».
  3. Перезагрузим компьютер (или выйдем из системы и зайдем снова), чтобы системные шрифты применились корректно.

Если мы проигнорируем это правило и сохраним форму, открытую в масштабе 125%, новые некорректные координаты запишутся в метаданные, и форма «поплывет» у всех пользователей.

Решение 2: Настройка совместимости High DPI для платформы

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

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

Теперь, когда мы запустим конфигуратор, интерфейс 1С может выглядеть мелким, но координаты элементов внутри формы будут соответствовать реальным пикселям, и привязки перестанут «слетать».

Решение 3: Проблемные версии платформы 8.3

Выясним причину странного поведения на разных ноутбуках при одинаковых настройках экрана. Исторически сложилось, что в ветке платформы 8.3.10 и 8.3.11 был допущен баг, связанный с отрисовкой графических объектов в режиме обычного приложения. На этих версиях привязки могут вести себя непредсказуемо даже при соблюдении всех условий по DPI.

Разберем рекомендации по обновлению:

Решение 4: Ручное управление привязками (Manual vs Auto)

В обычных формах существует два режима установки привязок. Посмотрим на них подробнее:

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

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

Решение 5: Влияние системных шрифтов и файла conf.cfg

Разберем ситуацию, когда масштаб в системе 100%, но привязки все равно «плывут». Это может быть связано с тем, что в Windows изменены стандартные размеры шрифтов (например, MS Sans Serif или Tahoma). Обычные формы вычисляют размеры полей ввода, исходя из ширины символов шрифта.

Существует также скрытый параметр в файле conf.cfg, который находится в папке с установленной платформой. Мы можем попробовать принудительно отключить чувствительность к DPI, добавив строку:


AppServerDPIAware=0

Однако помните, что это повлияет на все запущенные сеансы 1С на данном компьютере.

Практические советы по работе с формой в конфигураторе

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

  1. При открытии формы в конфигураторе сразу обратите внимание на заголовок окна. Если рядом с названием формы появилась звездочка (*), хотя вы еще ничего не нажали — значит, платформа уже «пересчитала» привязки под ваш текущий DPI.
  2. Никогда не сохраняйте форму, если вы увидели такую автоматическую модификацию. Закройте её без сохранения, приведите настройки экрана к 100% масштабу и только потом приступайте к работе.
  3. Если вам все же нужно редактировать форму на ноутбуке с высоким разрешением, используйте подключение к удаленному рабочему столу (RDP) на сервер разработки, где масштаб жестко зафиксирован на 100%. Это гарантирует, что координаты в файле .cf останутся неизменными.

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

← На главную