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

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

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

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

Выясняем причины: почему ломаются привязки и положение окон?

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

  1. Влияние свойства АвтоОтметкаНезаполненного: При установке этого флага на колонку табличной части или поле ввода платформа 1С вынуждена динамически перерисовывать элемент управления, добавляя красную пунктирную линию для визуального выделения. Это незначительно меняет внутренние границы (bounds) элемента интерфейса. В сочетании с индивидуальными настройками ширины колонок, которые пользователи могли сделать вручную, это вызывает конфликт при расчете привязок интерфейсным движком платформы.
  2. Сохранение настроек в базе данных: Платформа 1С сохраняет координаты окон, размеры элементов и настройки списков для каждого пользователя индивидуально. Эти данные записываются не только локально, но и непосредственно в системные таблицы базы данных (в специальное хранилище настроек). Если пользователь открывал форму до изменения ее структуры разработчиком, старые сохраненные координаты вступают в конфликт с новыми привязками формы, что и приводит к визуальному искажению.
  3. Проблемы с масштабированием экрана (DPI) в Windows: Если у пользователя в операционной системе установлено масштабирование экрана, отличное от 100% (например, 125% или 150%), старые версии платформы (включая семейство 8.3.10) некорректно рассчитывают координаты элементов при повторном открытии формы. Привязки буквально «ломаются» в момент считывания сохраненных настроек окна.
  4. Известный баг платформы 1С: Существует зарегистрированная ошибка работы механизма привязок в обычном приложении. Если пользователь закрывает форму документа, когда она максимизирована (развернута на весь экран), при следующем открытии привязки элементов могут некорректно схлопнуться, открывая окно в миниатюрном виде.

Способ 1. Быстрое решение на стороне пользователя (Восстановление положения окна)

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

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

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

Способ 2. Сброс настроек пользователя через интерфейс администрирования

Поскольку простая очистка локального кэша на компьютере (удаление папок в каталоге AppData) часто не помогает из-за сохранения координат внутри базы данных, администратору необходимо принудительно очистить системные настройки конкретного пользователя. Рассмотрим, как это сделать по шагам:

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

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


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

Это гарантированно удалит старые конфликтные координаты из базы данных, и при следующем открытии форма построится «с чистого листа».

Способ 3. Кардинальное решение в Конфигураторе (Отключение сохранения положения окна)

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

  1. Откроем Конфигуратор и найдем проблемный документ.
  2. Перейдем к свойствам его формы.
  3. В палитре свойств найдем параметр «Сохранять положение окна» (Save window position).
  4. Установим данное свойство в значение «Ложь».

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

Способ 4. Принудительное обновление хэша формы и проверка привязок

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

  1. Откроем форму документа в Конфигураторе.
  2. Включим режим проверки привязок, нажав сочетание клавиш Ctrl + R. Внимательно проанализируем визуальное состояние элементов. Если на форме что-то мигает красным цветом — привязки настроены с ошибками, их необходимо перенастроить вручную.
  3. Если ошибок нет, слегка сдвинем границу основной табличной части или самой формы (буквально на 1-2 пикселя) и сохраним изменения.
  4. Затем вернем границу в исходное состояние и снова сохраним форму.

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

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

Если проблема вызвана исключительно некорректным масштабированием интерфейса в Windows (особенно актуально для старых релизов платформы 1С:Предприятие 8.3), выполним настройку ярлыка запуска программы на компьютерах проблемных пользователей:

  1. Кликнем правой кнопкой мыши по ярлыку запуска 1С (или исполняемому файлу 1cv8.exe) и выберем пункт «Свойства».
  2. Перейдем на вкладку «Совместимость».
  3. Нажмем кнопку «Изменить параметры высокого DPI».
  4. Установим флажок «Переопределить режим масштабирования высокого разрешения» и в выпадающем списке выберем пункт «Приложение».
  5. Применим изменения, нажав «ОК».

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

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

← На главную