Почему не отображается добавленный реквизит на форме в 1С:ЗУП 3.1 КОРП и как это исправить?

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

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

Анализируем постановку задачи

Рассмотрим типичную ситуацию: в справочнике СпособыОтраженияЗарплатыВБухУчете необходимо добавить новый реквизит. Вы открываете форму элемента, перетаскиваете реквизит из объекта на форму или создаете реквизит формы вручную. Однако после обновления конфигурации базы данных и запуска программы элемент на форме отсутствует. Даже под полными правами. Более того, подмена пути к данным у существующего (видимого) элемента на ваш новый реквизит приводит к исчезновению этого элемента. Это явный признак того, что в работу включаются механизмы платформы, ограничивающие видимость на уровне метаданных или функциональных настроек.

Шаг 1. Проверка используемой формы

Прежде чем углубляться в программный код, нам необходимо убедиться в самом очевидном — а ту ли форму мы редактируем? В современных конфигурациях у одного объекта может быть несколько форм: для разных режимов работы, для разных пользователей или специализированные формы для КОРП-версии. Разберем, как проверить, какая форма открывается в режиме пользователя.

Для этого в коде модуля формы в процедуре ПриСозданииНаСервере можно временно вставить диагностическое сообщение:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Сообщить("Открыта форма: " + ЭтаФорма.ИмяФормы);
КонецПроцедуры

Если при открытии в режиме предприятия вы видите ожидаемое имя формы, значит, причина скрыта глубже — в свойствах самих данных.

Шаг 2. Проверка прав доступа (RLS и роли)

Проанализируем систему прав. В 1С:ЗУП 3.1 КОРП права на справочник СпособыОтраженияЗарплатыВБухУчете обычно регулируются ролями БазовыеПраваКонфигурацииЗарплатаКадрыРасширенная и ДобавлениеИзменениеАналитикаБухучета. Важно помнить, что в 1С существует механизм «Устанавливать права для реквизитов и табличных частей по умолчанию». Если вы добавили новый реквизит в объект, убедитесь, что у соответствующих ролей есть право «Просмотр» и «Редактирование» именно на этот новый реквизит.

Однако, как показывает практика, если реквизит формы имеет тип Строка и отображается, а при смене типа на СправочникСсылка исчезает — дело не в правах на сам реквизит, а в доступности типа данных.

Шаг 3. Функциональные опции — главная причина «невидимости»

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

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

Разбираем работу с функциональной опцией «Использовать финансовый учет»

В 1С:ЗУП 3.1 КОРП справочник НаправленияДеятельности тесно связан с функциональной опцией ИспользоватьФинансовыйУчет. Эта опция обычно включается при интеграции с системами 1С:ERP или 1С:Комплексная автоматизация.

Рассмотрим, как найти, где управляется эта опция:

  1. Переходим в раздел Настройки.
  2. Ищем подразделы, связанные с особенностями ведения учета или синхронизацией данных.
  3. В некоторых версиях КОРП этот флаг находится в настройках распределения затрат.

Если данная опция отключена, любой реквизит на форме (даже не связанный с объектом базы данных напрямую, а просто имеющий такой тип), будет скрыт платформой автоматически. Это поведение «по умолчанию», которое невозможно переопределить простым свойством Видимость = Истина в коде.

Шаг 4. Диагностика через «Изменить форму»

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

Шаг 5. Программное управление видимостью и ФО

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

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


ЗначениеОпции = ПолучитьФункциональнуюОпцию("ИспользоватьФинансовыйУчет");
Если Не ЗначениеОпции Тогда
    ИнформационноеСообщение = "Внимание: Функциональная опция финансового учета выключена. 
                               Реквизиты типов 'Направления деятельности' будут скрыты.";
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ИнформационноеСообщение);
КонецЕсли;

Особенности справочника «Способы отражения зарплаты»

Проанализируем специфику самого объекта. Справочник СпособыОтраженияЗарплатыВБухУчете в ЗУП 3.1 является, по сути, «словарем» наименований для обмена с бухгалтерскими системами. В самой ЗУП он почти не несет аналитической нагрузки. Вся сложная аналитика (статьи затрат, номенклатурные группы, направления деятельности) «приезжает» в документ «Отражение зарплаты в бухучете» из настроек в учетной политике или заполняется на стороне ERP. Поэтому разработчики типовой конфигурации скрыли большинство аналитик за функциональными опциями, чтобы не перегружать интерфейс бухгалтера-расчетчика лишними полями, которые не участвуют в локальном расчете.

Резюме и рекомендации

Подведем итоги нашего исследования. Если реквизит на форме 1С не отображается, следуем четкому алгоритму:

  1. Проверяем тип данных. Если это ссылка на другой справочник, проверяем, не входит ли этот справочник в состав какой-либо функциональной опции.
  2. Проверяем константы. Убеждаемся, что в настройках программы включен соответствующий функционал (в нашем случае — финансовый учет).
  3. Анализируем состав ФО. В конфигураторе находим функциональную опцию и смотрим вкладку «Состав». Если там указан ваш объект или его тип — причина найдена.
  4. Используем отладчик. В процедуре ПриСозданииНаСервере проверяем значение свойства Элементы.ВашРеквизит.Видимость. Если там Истина, но элемента нет — это 100% работа механизма функциональных опций платформы.

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

← На главную