При разработке на платформе 1С:Предприятие 7.7 можно столкнуться с неприятным визуальным багом: если в табличной части на форме скрыть самую первую колонку, все содержимое таблицы сдвигается вправо на несколько пикселей. На первый взгляд, это кажется мелочью, но такой сдвиг приводит к тому, что крайняя правая колонка частично или полностью "заезжает" под вертикальную полосу прокрутки, и ее содержимое становится нечитаемым.
Выясним причину этой проблемы и разберем несколько способов ее решения. Чаще всего с этим багом сталкиваются при использовании старого метода условного оформления строк с помощью компоненты FormEx. Для раскраски всей строки требовалось, чтобы первая колонка была служебной (содержала условие или цвет) и при этом невидимой для пользователя. Именно это действие и провоцирует ошибку отображения.
Это известный баг платформы 7.7, и, к сожалению, исправить его на уровне самой платформы невозможно. Однако существуют надежные обходные пути, которые позволяют добиться нужного результата без визуальных искажений. Рассмотрим их подробно.
Наиболее правильным, гибким и современным (в рамках 1С 7.7) решением является использование механизма "План раскраски", встроенного в компоненту FormEx. Этот метод был создан как раз для того, чтобы уйти от привязки раскраски к первой колонке и предоставить разработчикам более мощный инструмент.
Суть метода: вы создаете отдельную колонку в табличной части, в которой для каждой строки указываете не цвет, а имя стиля. Сами стили (цвет фона, цвет текста, шрифт и т.д.) заранее настраиваются в свойствах табличного поля на форме. Компонента FormEx сама находит нужный стиль по имени и применяет его ко всей строке.
Разберем по шагам, как перейти на "План раскраски":
FormEx найдите раздел, связанный с планом раскраски или стилями (часто называется "Раскраска"). Здесь вы можете создать несколько стилей, задав им уникальные имена. Например:
// Пример заполнения таблицы
Пока Выборка.ПолучитьСтроку() = 1 Цикл
НоваяСтрока = ТаблицаНаФорме.НоваяСтрока();
НоваяСтрока.Номенклатура = Выборка.Номенклатура;
НоваяСтрока.Количество = Выборка.Количество;
// Логика определения стиля
Если Выборка.Статус = "Выполнен" Тогда
НоваяСтрока.СтильСтроки = "Выполнено";
ИначеЕсли Выборка.ДатаОтгрузки < ТекущаяДата() Тогда
НоваяСтрока.СтильСтроки = "Просрочено";
КонецЕсли;
КонецЦикла;
Преимущества этого подхода:
Единственный недостаток — если у вас много форм со старым методом раскраски, их придется доработать. Однако это вложение времени окупится стабильностью и удобством дальнейшей поддержки.
Если по какой-то причине вы не можете или не хотите переходить на "План раскраски" (например, проект очень старый и вносить большие изменения рискованно), можно использовать простой, но эффективный обходной путь.
Суть метода: не делать служебную невидимую колонку первой.
"НомерСтроки") или какой-нибудь ключевой реквизит, например, артикул или код.У этого метода есть ограничение, о котором важно помнить. При использовании старого метода FormEx раскрашивает все колонки, начиная от служебной и правее. Это значит, что первая колонка ("НомерСтроки") останется нераскрашенной. Во многих случаях это некритично и даже выглядит аккуратно — номера строк остаются стандартного серого цвета, а содержательные данные подсвечиваются.
В обсуждении упоминался еще один способ, связанный с настройками FormEx — использование INDENT[-1]. Этот параметр, вероятно, позволяет управлять тем, с какой колонки начинается раскраска.
Гипотеза: указав отрицательный отступ INDENT[-1], можно "сказать" компоненте, чтобы она начала применять раскраску с колонки, расположенной левее служебной. Это теоретически позволило бы оставить служебную колонку первой и скрытой, но при этом закрасить ее саму (и все остальные). Этот метод требует проверки и изучения документации к вашей версии FormEx, но может оказаться полезным в нестандартных ситуациях.
В заключение, проанализировав ситуацию, мы видим, что баг платформы 1С 7.7 хоть и неприятен, но имеет несколько надежных решений. Для новых разработок и рефакторинга старых форм настоятельно рекомендуется использовать "План раскраски". Если же требуется быстрое исправление с минимальными трудозатратами, то изменение порядка колонок — ваш выбор.