Почему разъезжаются управляемые формы в режиме "в закладках" на платформе 1С 8.3.15 и как это исправить?

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

При обновлении технологической платформы 1С:Предприятие 8.3 до релизов 8.3.15 (например, 8.3.15.1830, 8.3.15.1869 и более свежих) многие пользователи и разработчики сталкиваются с неприятным визуальным багом. В режиме отображения окон "Формы в закладках" элементы интерфейса начинают вести себя некорректно: колонки табличных частей становятся неестественно широкими, поля ввода "улетают в космос" за пределы экрана, появляется бесконечная горизонтальная полоса прокрутки, а сама верстка выглядит абсолютно нечитаемой. При этом в современном интерфейсе "Такси" те же самые формы отображаются абсолютно нормально.

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

Выясним причину: почему это происходит с технической точки зрения?

Для того чтобы эффективно бороться с проблемой, необходимо понять физику процесса. Начиная с версии платформы 8.3.15, разработчики фирмы 1С существенно переработали внутренний движок компоновки и отрисовки управляемых форм. Основной целью этих изменений было улучшение юзабилити, адаптивности и внешнего вида интерфейса. Однако вся эта оптимизация проектировалась, разрабатывалась и тестировалась исключительно под актуальный интерфейс "Такси".

Рассмотрим ключевые факторы, которые приводят к искажению форм в режиме закладок:

  1. Игнорирование ограничений ширины в устаревших режимах. Режим интерфейса "Формы в закладках" является наследием старых версий (переходный этап от 8.2 к 8.3). Фирма 1С поддерживает его по остаточному принципу. В новых версиях платформы алгоритмы автоматического расчета ширины в этом режиме работают со сбоями. Если для элементов или групп на форме включены свойства АвтоМаксимальнаяШирина или РастягиватьПоГоризонтали, движок платформы в режиме закладок не может корректно определить границы родительского контейнера. В результате элементы растягиваются до максимально возможных теоретических размеров.
  2. Проблемы с масштабированием Windows (DPI). Ошибка проявляется гораздо острее на рабочих станциях, где установлено масштабирование экрана Windows, отличное от стандартных 100% (например, 125% или 150% на современных Full HD и 4K мониторах). Платформа 1С в режиме закладок некорректно транслирует системный DPI в размеры пикселей для элементов формы, из-за чего геометрия интерфейса ломается.
  3. Конфликт кэша метаданных. При обновлении версии платформы локальный кэш конфигурации на компьютере пользователя может сохранять старые параметры позиционирования окон, которые вступают в конфликт с новыми алгоритмами отрисовки 15-й платформы.

Как решить проблему пользователю (без изменения конфигурации)

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

Шаг 1. Сброс настроек конкретной формы

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

  1. Откроем проблемную форму в режиме предприятия.
  2. В правом верхнем углу формы нажмем кнопку "Еще" и выберем пункт "Изменить форму...".
  3. В открывшемся окне настройки формы нажмем кнопку "Еще" (внутри этого окна) и выберем команду "Установить стандартные настройки".
  4. Нажмем кнопку "ОК" для применения изменений.

Шаг 2. Восстановление положения окон

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

Шаг 3. Очистка пользовательского кэша и настроек

Если обычная чистка временных файлов (папок Local и Roaming) не помогла, рекомендуется выполнить полный сброс настроек конкретного пользователя. Для этого удалим базу данных из списка запуска стартера 1С, закроем стартер, снова откроем его и добавим базу заново. Это гарантированно очистит идентификаторы информационной базы и связанные с ними сохраненные настройки интерфейса в файлах v8sp.vrd и кэше пользователя.


Как решить проблему разработчику (в конфигураторе)

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

Способ 1. Использование "фиктивной" растягивающейся колонки

Этот классический прием позволяет удержать значащие колонки таблицы в рамках их естественной ширины. Проанализируем этот метод по шагам:

  1. Откроем проблемную форму в конфигураторе и найдем нужную таблицу (динамический список или табличную часть).
  2. Для всех важных колонок (например, Номенклатура, Количество, Цена, Сумма) жестко установим свойство Ширина в символах.
  3. У всех этих значащих колонок снимем флаг (установим в значение Нет) для свойства РастягиватьПоГоризонтали.
  4. Добавим в самый конец таблицы новую колонку реквизита (или декорацию колонки), назовем ее, например, ПустаяКолонка. Для нее не задаем текст заголовка и связываемые данные.
  5. Для созданной пустой колонки установим свойство РастягиватьПоГоризонтали в значение Да.

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

Способ 2. Ограничение ширины полей ввода и групп

Если на форме разъезжаются обычные поля ввода (например, длинные текстовые поля или поля ссылочного типа в шапке документа), выполним следующие настройки:

  1. Выделим проблемное поле ввода на панели элементов формы.
  2. В палитре свойств найдем параметр АвтоМаксимальнаяШирина и снимем с него флаг (переведем в значение Ложь).
  3. В свойстве МаксимальнаяШирина вручную укажем разумное ограничение (например, 30 или 40 символов в зависимости от типа данных).
  4. Для родительской группы, в которой находятся эти поля, проверим свойство Группировка. Если установлена группировка Горизонтальная, рекомендуется ограничить ширину самой группы или в явном виде управлять растяжением подчиненных элементов.

Единственное фундаментальное решение проблемы

Необходимо открыто признать тот факт, что интерфейс "Формы в закладках" является морально устаревшим. Фирма 1С планомерно отказывается от его поддержки, ориентируя все новые механизмы платформы исключительно на интерфейс "Такси". Любые ручные доработки и "костыли" в конфигураторе под старый интерфейс с высокой долей вероятности будут ломаться при последующих обновлениях платформы.

Основным аргументом пользователей (особенно бухгалтеров) против перехода на интерфейс "Такси" является так называемая "гигантомания" — огромные шрифты, избыточные пустые поля и "слоновьи" отступы между элементами, из-за которых на экране помещается в два раза меньше информации, чем раньше.

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

  1. Переведем интерфейс программы в режим "Такси" (как правило, в современных конфигурациях, таких как "Бухгалтерия предприятия 3.0", этот режим включен по умолчанию, но если пользователь переключил его в настройках — вернем обратно через Параметры).
  2. В главном окне программы нажмем на кнопку меню (три полоски или стрелочка в левом верхнем углу, в зависимости от релиза платформы) и выберем пункт "Настройки", а затем — "Параметры...".
  3. В открывшемся окне настроек найдем группу параметров "Внешний вид" или "Вариант масштаба форм клиентского приложения".
  4. Переключим значение из режима "Обычный" в режим "Компактный".
  5. Нажмем кнопку "Применить" и перезапустим сеанс работы с программой (если это потребуется).

Что нам дает компактный режим? Он уменьшает размер шрифтов интерфейса, сокращает до минимума отступы между полями, строками таблиц и кнопками. Плотность информации на экране становится точно такой же (а в некоторых случаях даже выше), как и в старом интерфейсе "в закладках". При этом полностью исчезают проблемы с бесконечным растягиванием полей ввода, некорректной горизонтальной прокруткой и неверным масштабированием при DPI, отличном от 100%. Перевод пользователей на "Такси" с компактным масштабом — это единственный способ обеспечить стабильную и комфортную работу в современных конфигурациях 1С.

← На главную