Разработчики 1С часто сталкиваются с загадочной ситуацией: в конфигураторе форма списка выглядит идеально, лишние поля удалены или вовсе не выведены в таблицу, но при запуске в режиме «1С:Предприятие» пользователь видит «фантомные» колонки. Особенно странно это выглядит, когда колонки отображают устаревшие синонимы (например, с пометкой «не используется»), которые игнорируют псевдонимы, заданные в тексте запроса динамического списка. Рассмотрим подробно, почему это происходит и как очистить интерфейс от лишних данных.
Это самая распространенная причина появления «призраков» прошлого в интерфейсе. Платформа 1С сохраняет настройки формы (расположение колонок, их видимость, ширину) для каждого пользователя индивидуально. Если когда-то эти реквизиты были выведены на форму, а затем удалены разработчиком в конфигураторе, платформа может попытаться «восстановить» их из старого кэша настроек.
Разберем по шагам, как это исправить:
%AppData%\1C\1cv8\).Проанализируем свойства самого реквизита формы, имеющего тип ДинамическийСписок. У него есть флаг Автозаполнение доступных полей. Если эта галочка установлена, платформа автоматически добавляет в список доступных полей все реквизиты основной таблицы, указанной в динамическом списке.
Почему это приводит к проблемам:
Когда включено автозаполнение, система «видит» все поля объекта метаданных. Если пользователь случайно (или через механизм «Изменить форму») добавит их, они появятся в таблице. При этом платформа может брать синоним напрямую из метаданных объекта (то самое «(не используется)»), игнорируя ваши красивые псевдонимы в тексте запроса ВЫБРАТЬ Реквизит КАК МоеПоле. Чтобы этого избежать, попробуйте снять галочку Автозаполнение доступных полей и явно указать нужные поля в запросе и в списке доступных полей.
Если ваша конфигурация построена на «1С:Библиотеке стандартных подсистем» (БСП), то интерфейс часто формируется динамически. Проанализируем программный код в модуле формы и связанных общих модулях.
Многие подсистемы БСП (например, «Дополнительные отчеты и обработки», «Свойства», «Префиксация объектов») подключаются к формам в процедуре ПриСозданииНаСервере. Ищите вызовы, подобные этим:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// БСП может программно добавлять колонки, связанные с доп. реквизитами
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, Объект);
// Или модифицировать состав динамического списка
ОбщегоНазначенияБСП.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
Проверьте, не включены ли данные реквизиты в состав Дополнительных реквизитов и сведений. БСП умеет автоматически выводить их в списки, чтобы пользователь мог видеть расширенные данные без изменения конфигурации.
Выясним, нет ли в системе активных расширений. Расширение может модифицировать ту же самую форму, добавляя в нее элементы или меняя текст запроса динамического списка. В основной конфигурации вы будете видеть одну картину, а в режиме предприятия — результат слияния основной формы и формы из расширения.
Проверьте в расширениях обработчики &Вместо, &После для процедур ПриСозданииНаСервере или наличие измененного макета динамического списка.
Существует специфическая проблема, возникающая при миграции баз с версии 8.2 на 8.3 или при длительной разработке одной формы. Платформа может сохранять внутренние идентификаторы полей, которые уже не существуют или скрыты. Как отмечают опытные разработчики, иногда «фантомные» колонки появляются даже тогда, когда их нет ни в запросе, ни в настройках.
Радикальное решение («Метод пересоздания»):
Если ни очистка кэша, ни проверка кода не помогают, выполните следующие действия:
Важно: Простое копирование формы Ctrl+C / Ctrl+V часто переносит и скрытую ошибку, поэтому важно создать форму «с нуля».
Чтобы точно понять, откуда берется колонка, воспользуйтесь Замером производительности:
Элементы.Добавить или ТекстЗапроса. Это позволит найти код, который программно «вклинивается» в процесс отрисовки формы.Также полезно проверить форму через Консоль запросов. Скопируйте текст запроса из динамического списка и выполните его в консоли. Если лишних полей в результате нет, значит проблема на 100% кроется в слое представления (настройки формы, кэш или программное управление элементами интерфейса).
Подводя итог, можно сказать, что «фантомные» колонки — это результат работы механизмов адаптивности 1С. Тщательная очистка пользовательских настроек и проверка программных модулей БСП в большинстве случаев позволяют решить проблему без радикального пересоздания форм.