Почему не отображаются добавленные колонки в форме списка справочника «Сотрудники» и как это исправить

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

Разработка расширений для современных конфигураций 1С, таких как 1С:ERP 2.0, 1С:Комплексная автоматизация 2 или 1С:ЗУП 3.1, часто преподносит сюрпризы программистам. Одна из наиболее распространенных проблем — добавление новых колонок в форму списка справочника Сотрудники. Вы можете добавить колонку в визуальном редакторе, изменить запрос динамического списка и даже увидеть новые данные в отладчике, но в пользовательском режиме колонка упорно не появляется. Рассмотрим подробнее, почему это происходит и как решить данную задачу.

Анализ ситуации: когда визуальное добавление не работает

Проанализируем типичный сценарий. Программист добавляет форму списка справочника Сотрудники в расширение. Затем он выполняет следующие действия:

  1. Добавляет новые элементы (колонки) на форму в группу Список.
  2. Корректирует текст запроса динамического списка Список, чтобы вытянуть нужные данные (например, КатегорияПерсонала).
  3. Указывает в свойствах новых колонок путь к данным (например, Список.КатегорияПерсонала).
  4. Проверяет работу расширения через отладку в процедуре ПриСозданииНаСервере — данные на месте, колонки в коллекции Элементы присутствуют.

Однако при запуске системы в режиме «1С:Предприятие» колонки отсутствуют даже в меню «Изменить форму». Выясним причину этого поведения.

Причина 1: Программное формирование состава колонок в ERP и ЗУП

В современных конфигурациях, использующих подсистему «Зарплата и кадры», формы списков ключевых справочников не являются статичными. Они управляются программно. Разберем по шагам, что происходит внутри системы:

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

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

Причина 2: Сброс пользовательских настроек (Кэш формы)

Рассмотрим вторую по популярности причину — сохранение старых настроек формы в системном хранилище. Платформа 1С запоминает состояние формы (состав колонок, их ширину и положение) для каждого пользователя индивидуально.

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

Что нужно сделать для проверки:

  1. Зайти в меню «Ещё» -> «Установить стандартные настройки» прямо в форме списка.
  2. Если это не помогло, необходимо очистить настройки пользователя через раздел «Администрирование» -> «Настройки пользователей и прав» -> «Очистка настроек», выбрав конкретную форму справочника Сотрудники.

Причина 3: Динамическое переопределение запроса (Property Список.ТекстЗапроса)

Проанализируем ситуацию с динамическим списком. В ERP 2 часто текст запроса списка формируется не в редакторе, а собирается программно в коде. Если ваше расширение меняет запрос в визуальном конструкторе, а основной код конфигурации выполняет команду:

Список.ТекстЗапроса = "ВЫБРАТЬ ... ИЗ Справочник.Сотрудники КАК Сотрудники ...";

То ваши изменения (новые поля в ВЫБРАТЬ) будут полностью стерты. В этом случае необходимо использовать расширение для процедуры, которая формирует этот текст запроса (обычно это процедуры с префиксом ПриСозданииНаСервере или специальные методы инициализации списка).

Посмотрим на пример использования аннотации &После для корректировки запроса:


&НаСервере
&После("ПриСозданииНаСервере")
Процедура вч_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Проверяем, что поле еще не добавлено программно
    Если Список.ТекстЗапроса.Найти("КатегорияПерсонала") = 0 Тогда
        // Модифицируем текст запроса, добавляя нужные поля
        Список.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "Сотрудники.Ссылка", "Сотрудники.Ссылка, Сотрудники.КатегорияПерсонала");
    КонецЕсли;
    
КонецПроцедуры

Причина 4: Безопасный режим и функциональные опции

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

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

Рекомендации по правильному добавлению колонок в ERP

Чтобы гарантированно увидеть свои изменения, придерживайтесь следующего алгоритма:

  1. Программное добавление полей: Вместо визуального добавления в редакторе, попробуйте добавить колонки программно в процедуре ПриСозданииНаСервере вашего расширения. Это позволит обойти механизмы БСП, которые «чистят» форму.
  2. Перехват формирования состава: Изучите общий модуль ЗарплатаКадрыОбщиеФормы. Найдите метод, который отвечает за настройку списка сотрудников. Используйте расширение (&Вместо или &После), чтобы внедрить свои поля в структуру, которую этот модуль считает «разрешенной».
  3. Проверка прав доступа: Убедитесь, что у пользователя есть права (RLS) на чтение данных, которые вы выводите в новую колонку. Если сработал RLS, поле в динамическом списке будет пустым или вызовет ошибку отображения.

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

← На главную