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

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

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

Причина возникновения проблемы

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

Метод 1: Сброс настроек формы («Стандартные настройки»)

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

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

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

Метод 2: Настройка свойства «РастягиватьПоГоризонтали»

Опытным путем выяснилось, что колонки ведут себя стабильнее, если явно указать платформе их поведение. Если у элементов ТЧ свойство РастягиватьПоГоризонтали установлено в «Авто», это часто приводит к ошибкам. Изменить свойства можно не только в конфигураторе, но и через редактор форм в режиме предприятия.

Для исправления ситуации выполните следующие действия в Конфигураторе:

  1. Найдите нужную форму в дереве конфигурации.
  2. В табличной части Товары (или другой проблемной) выделите все колонки.
  3. В палитре свойств установите параметр РастягиватьПоГоризонтали в значение Да.
  4. Сохраните конфигурацию и обновите базу.

После этого сбросьте настройки формы (как описано в первом методе), и колонки станут гораздо «послушнее».

Метод 3: Использование программного решения через расширение

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


// Пример использования в расширении
&После("ПриСозданииНаСервере")
Процедура БАГ_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка, ДополнительныеПараметры)
    Попытка
        Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма.Объект, "Товары") Тогда
            ЭлементыТЧ = Форма.Элементы.Товары.ПодчиненныеЭлементы;
            Для Каждого Элемент Из ЭлементыТЧ Цикл
                Элемент.РастягиватьПоГоризонтали = Истина;
            КонецЦикла;
        КонецЕсли;
    Исключение
        // Обработка исключения не требуется
    КонецПопытки;
КонецПроцедуры

Метод 4: Группировка колонок

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

  1. Создайте на форме группу с видом Группа колонок.
  2. Установите группировку Горизонтальная.
  3. Перенесите все проблемные колонки внутрь этой группы.
  4. Если используете Фиксацию в таблице, примените её к созданной группе, а не к отдельным колонкам.

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

Метод 5: Обновление платформы

Самым надежным решением, которое закрывает большинство подобных ошибок, является обновление платформы 1С до версий 8.3.18, 8.3.19 и выше. Разработчики 1С признали данную проблему (код ошибки 10218655), и в актуальных релизах механизмы отрисовки элементов управления были существенно переработаны. Если ваша база работает на старых версиях 8.3.15 или 8.3.16, переход на более свежий релиз платформы — лучший способ избавиться от проблемы раз и навсегда.

Важное замечание: Если ничего не помогает, а работать нужно срочно, вы всегда можете временно нажать Ctrl при перетаскивании границ колонок или очистить кэш AppData/Local/1C, однако это лишь временные меры. Всегда старайтесь следовать стратегии принудительной установки свойств РастягиватьПоГоризонтали для достижения предсказуемого поведения интерфейса.

← На главную