При работе с конфигурациями на обычных формах (такими как 1С:УПП или 1С:КА 1.1) системные администраторы и программисты часто сталкиваются с неприятным визуальным багом: после очередного обновления или динамического внесения изменений форма документа перестает раскрываться на весь экран. Вместо привычного полноэкранного режима пользователь видит окно, сжатое до четверти экрана, при этом привязки элементов (кнопок, полей ввода, табличных частей) могут «поехать», делая работу невозможной. Проанализируем причины этой ситуации и разберем все способы исправления — от самых простых пользовательских действий до глубокой очистки системных таблиц базы данных.
Разберем наиболее эффективный метод, который помог автору вопроса. Часто проблема заключается в рассинхронизации локального кэша конфигурации у пользователя и структуры формы в самой базе данных. Это особенно актуально после так называемого «демонического» (динамического) обновления.
Для решения выполним следующие шаги в конфигураторе:
Ctrl+S.F7). При этом желательно делать это монопольно, чтобы система корректно пересчитала таблицы привязок.Этот нехитрый прием заставляет платформу 1С пересчитать внутренние идентификаторы элементов и обновить информацию о форме в файловой или табличной структуре базы данных, что зачастую мгновенно лечит «кривое» отображение.
Если проблема наблюдается только у одного пользователя, возможно, система просто запомнила некорректные координаты окна после сбоя. Рассмотрим, как сбросить эти настройки без правки кода:
В режиме «1С:Предприятие» пользователю необходимо найти кнопку открытого документа на панели окон (обычно внизу или вверху экрана). Нажмите на эту кнопку правой кнопкой мыши и выберите пункт «Восстановить положение». После этого закройте форму и откройте ее заново. В большинстве случаев форма вернется к стандартным размерам, заданным разработчиком.
Выясним причину сжатия формы, проанализировав настройки привязок элементов. Если привязки настроены неверно, форма может «схлопываться» при попытке автоматического масштабирования.
В конфигураторе откроем форму и нажмем сочетание клавиш Ctrl+R (режим проверки формы). Попробуем раздвигать границы окна. Если мы видим красные кресты или элементы, которые не увеличиваются вместе с формой, значит, проблема в свойствах привязок. Проверим свойства Устанавливать привязки и убедимся, что для всех растягивающихся элементов (например, табличных частей) установлены корректные связи с границами формы.
Иногда после обновления сбрасываются базовые свойства самой формы. Посмотрим на настройки в палитре свойств:
СостояниеОкна. Если там установлено значение, отличное от Максимизированное или Свободное, это может быть причиной проблемы.Свободное, если форма должна иметь произвольный размер, или Максимизированное, если она всегда должна быть на весь экран.Если манипуляции в интерфейсе не помогают, проанализируем ситуацию на уровне базы данных. Информация о положении окон для каждого пользователя хранится в системной таблице SystemSettings. Если в этой таблице накопились «битые» записи, форма будет открываться неправильно, несмотря на все правки в конфигураторе.
Для клиент-серверного варианта мы можем выполнить SQL-запрос для удаления индивидуальных настроек пользователя для конкретного объекта. Внимание: любые операции с SQL-таблицами должны проводиться только после создания резервной копии!
-- Пример логики очистки настроек (схематично)
DELETE FROM dbo.SystemSettings
WHERE UserName = 'ИмяПользователя'
AND FileName LIKE '%ИмяДокумента%'
Это полностью обнулит «память» системы о координатах окна для данного пользователя, и при следующем открытии 1С создаст запись заново на основе актуальных метаданных конфигурации. Для безопасного просмотра и сброса этих параметров штатным способом можно использовать обработку для управления хранилищем настроек пользователей.
Проанализируем внешние факторы. Обычные формы 1С крайне чувствительны к настройкам DPI экрана. Если пользователь работает на мониторе с масштабом 125% или 150%, привязки могут отображаться некорректно. Рассмотрим шаги по исправлению:
Это заставит Windows отрисовывать интерфейс 1С так, как будто масштаб всегда равен 100%, что предотвратит «схлопывание» элементов формы.
Иногда разработчики внедряют программное управление размерами. Проанализируем модуль формы. Нам нужно найти процедуры ПриОткрытии или ПередОткрытием. Ищем вызовы методов ЭтаФорма.УстановитьГраницы() или обращение к свойству ЭтаФорма.Ширина и ЭтаФорма.Высота.
Если в коде жестко прописаны координаты, которые стали неактуальны после обновления (например, из-за появления новых панелей в интерфейсе), форма будет принудительно сжиматься кодом. В таком случае необходимо скорректировать программные расчеты координат.
Для быстрого исправления проблемы чаще всего достаточно незначительно изменить размер формы в конфигураторе и сохранить изменения. Если это не помогает, следует последовательно переходить к очистке кэша, проверке настроек DPI и анализу системных таблиц SystemSettings. Помните, что обычные формы требуют строгого соблюдения правил настройки привязок, иначе любое изменение состава реквизитов на форме может привести к визуальному искажению интерфейса.