Многие разработчики и пользователи сталкивались с неприятным поведением интерфейса «Такси», когда при попытке отрегулировать ширину колонок в табличной части документа они начинают «схлопываться», исчезать или менять размер без участия пользователя. Рассмотрим причины этой «чертовщины» и пошаговые методы борьбы с ней, от простых настроек до программных правок.
Основная причина такого поведения кроется в ошибках отрисовки элементов самой технологической платформы 1С. Чаще всего сбой проявляется при наличии горизонтальной прокрутки, использовании «фиксированных» колонок (прижатых к левому или правому краю) или при перегруженности формы элементами. Платформа некорректно обрабатывает сохранение пользовательских настроек в ХранилищеСистемныхНастроек, из-за чего при каждом открытии или изменении данных в таблице она пытается применить «битые» размеры, что и приводит к визуальному хаосу.
Это первое, что нужно сделать при возникновении бага. Этот метод очищает «залипшие» некорректные параметры ширины.
Изменить форму.Установить стандартные настройки.После выполнения этих действий настройки вернутся к конфигурационным, однако имейте в виду, что при следующей ручной попытке изменить ширину «проблемных» колонок глюк может вернуться. Если вам нужно установить настройки формы для всех пользователей, потребуются другие методы.
Опытным путем выяснилось, что колонки ведут себя стабильнее, если явно указать платформе их поведение. Если у элементов ТЧ свойство РастягиватьПоГоризонтали установлено в «Авто», это часто приводит к ошибкам. Изменить свойства можно не только в конфигураторе, но и через редактор форм в режиме предприятия.
Для исправления ситуации выполните следующие действия в Конфигураторе:
Товары (или другой проблемной) выделите все колонки.РастягиватьПоГоризонтали в значение Да.После этого сбросьте настройки формы (как описано в первом методе), и колонки станут гораздо «послушнее».
Если конфигурация находится на поддержке и вы не хотите менять свойства элементов вручную в каждой форме, можно использовать Расширение конфигурации. Данный код принудительно устанавливает свойство растягивания для всех элементов таблицы при открытии.
// Пример использования в расширении
&После("ПриСозданииНаСервере")
Процедура БАГ_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка, ДополнительныеПараметры)
Попытка
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма.Объект, "Товары") Тогда
ЭлементыТЧ = Форма.Элементы.Товары.ПодчиненныеЭлементы;
Для Каждого Элемент Из ЭлементыТЧ Цикл
Элемент.РастягиватьПоГоризонтали = Истина;
КонецЦикла;
КонецЕсли;
Исключение
// Обработка исключения не требуется
КонецПопытки;
КонецПроцедуры
Если проблема сохраняется из-за большого количества колонок и использования фиксации, попробуйте изменить структуру формы:
Группа колонок.Горизонтальная.Фиксацию в таблице, примените её к созданной группе, а не к отдельным колонкам.Это позволяет платформе более корректно рассчитывать размеры блока элементов, предотвращая неконтролируемое расширение.
Самым надежным решением, которое закрывает большинство подобных ошибок, является обновление платформы 1С до версий 8.3.18, 8.3.19 и выше. Разработчики 1С признали данную проблему (код ошибки 10218655), и в актуальных релизах механизмы отрисовки элементов управления были существенно переработаны. Если ваша база работает на старых версиях 8.3.15 или 8.3.16, переход на более свежий релиз платформы — лучший способ избавиться от проблемы раз и навсегда.
Важное замечание: Если ничего не помогает, а работать нужно срочно, вы всегда можете временно нажать Ctrl при перетаскивании границ колонок или очистить кэш AppData/Local/1C, однако это лишь временные меры. Всегда старайтесь следовать стратегии принудительной установки свойств РастягиватьПоГоризонтали для достижения предсказуемого поведения интерфейса.