Что делать, если в 1С:ERP колонки таблицы не уменьшаются, бесконечно растягиваются или сбрасывают фокус?

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

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

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

Выясним причину: почему ломается интерфейс таблиц?

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

Анализ баг-трекера фирмы «1С» (Bugboard) показывает, что хаотичное растягивание колонок чаще всего связано со следующими зарегистрированными ошибками платформы:

  1. Ошибка № 10218655: Возникает в таблицах, где настроена фиксация одной или нескольких колонок (например, зафиксированы первые три столбца с номенклатурой и артикулом). Если горизонтальная полоса прокрутки сдвинута до упора вправо, попытка изменить ширину любой колонки приводит к сбою математического расчета координат, бесконечному растяжению поля и резкому скроллингу к началу таблицы.
  2. Ошибка № 10216226: Ошибка отрисовки при использовании условного оформления. Если для ячеек таблицы заданы правила выделения цветом или шрифтом, то при ручном изменении размера колонки алгоритм платформы некорректно округляет ширину в пикселях. В результате колонка либо схлопывается в один символ, либо расширяется на весь экран.
  3. Ошибка № 10218106: Некорректный расчет высоты строк после интерактивного изменения ширины. Платформа пытается пересчитать высоту ячеек под новый размер текста, что вызывает зацикливание отрисовки интерфейса.

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


Разберем по шагам методы решения для пользователей

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

Способ 1: Сброс настроек формы к стандартным

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

Выполним следующие шаги:

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

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

Способ 2: Очистка локального кэша 1С

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

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

  1. Закройте программу «1С:Предприятие».
  2. Откройте проводник Windows и перейдите по следующим путям (вместо ИмяПользователя укажите ваше имя учетной записи Windows):
    • C:\Users\ИмяПользователя\AppData\Local\1C\1Cv8\
    • C:\Users\ИмяПользователя\AppData\Roaming\1C\1Cv8\
  3. Найдите внутри этих папок каталоги с длинными буквенно-цифровыми названиями (например, 8e4b7c62-1234-5678...) и удалите их. Это абсолютно безопасно: программа при следующем запуске создаст их заново.
  4. Альтернативный простой вариант очистки кэша — удалить базу из списка запуска в стартере «1С» и добавить её повторно под тем же путем.

Способ 3: Копирование настроек от «здорового» пользователя

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

Для этого в разделе Администрирование найдите пункт Настройки пользователей и прав, перейдите в Очистка и копирование настроек, выберите документ-источник и скопируйте корректные настройки отображения формы от «здорового» пользователя к проблемному.


Методы решения для разработчиков и администраторов

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

Способ 4: Корректировка свойств колонок в Конфигураторе

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

Способ 5: Программная установка ширины при создании формы

Если баг платформы проявляется на конкретном релизе, а обновить платформу прямо сейчас нет возможности, разработчик может применить обходной путь (workaround) в коде управляемой формы. Мы можем жестко задать начальные размеры колонок в процедуре ПриСозданииНаСервере.

Рассмотрим пример программной фиксации ширины колонок:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Задаем фиксированную ширину для проблемных колонок табличной части "Товары"
    Элементы.ТоварыНоменклатура.Ширина = 35;
    Элементы.ТоварыКоличество.Ширина = 12;
    Элементы.ТоварыЦена.Ширина = 15;
    
    // Отключаем автоширину для предотвращения хаотичного растягивания
    Элементы.ТоварыНоменклатура.АвтоШирина = Ложь;
    Элементы.ТоварыКоличество.АвтоШирина = Ложь;
    
    // Убираем перенос строк в шапке, так как он тоже может влиять на расчет высоты и ширины
    Элементы.ТоварыНоменклатура.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлемента.Лево;
    
КонецПроцедуры

Использование свойства Ширина в коде принудительно инициализирует элементы формы с правильными размерами, игнорируя сбойные записи из пользовательского кэша настроек.

Способ 6: Анализ условного оформления

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

Способ 7: Обновление технологической платформы

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

Ошибки расчета ширины и сброса прокрутки были исправлены и закрыты в версиях платформы начиная с 8.3.16.1148, 8.3.18.1211 и во всех последующих актуальных ветках (8.3.19, 8.3.20 и новее). Если вы работаете на устаревшем релизе платформы, запланируйте техническое обновление серверной и клиентских частей.


Резюме

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

← На главную