В процессе администрирования системы 1С:Зарплата и управление персоналом 3.1 КОРП специалисты часто сталкиваются с ситуацией, когда пользователь при попытке открыть справочник Подразделения видит пустой список. Ситуация осложняется тем, что даже назначение полных прав или ролей на чтение и изменение данного справочника не всегда решает проблему. В некоторых случаях при попытке открыть конкретный элемент возникает системная ошибка, указывающая на отсутствие полей формы.
В данной статье мы подробно разберем, почему возникают такие сложности, проанализируем программный код системы и выясним, какие именно настройки и права влияют на корректное отображение подразделений.
Одной из наиболее явных зацепок при поиске причины является ошибка в коде при открытии формы элемента. Рассмотрим ситуацию: при попытке зайти в карточку подразделения система выдает ошибку в процедуре СписокВыбораБухучетЗарплатыВариантНастройки. Проблема заключается в том, что в коллекции Элементы отсутствует объект БухучетЗарплатыВариантНастройки.
Проанализируем фрагмент кода, который вызывает сбой:
&НаСервере
Процедура СписокВыбораБухучетЗарплатыВариантНастройки()
Если ДоступенПросмотрБухучетЗарплатыПодразделений Тогда
СписокВыбора = Элементы.БухучетЗарплатыВариантНастройки.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить(0, "Как указано для организации");
СписокВыбора.Добавить(1, "Отражается на указанном счете, субконто");
Если Не БазоваяВерсияКонфигурации Тогда
СписокВыбора.Добавить(2, "Распределяется по счетам, субконто");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Выясним причину такого поведения. В управляемых формах 1С элементы могут удаляться из формы динамически, если у пользователя нет прав на объекты метаданных, к которым эти элементы привязаны. В данном случае элемент формы БухучетЗарплатыВариантНастройки напрямую зависит от прав на ведение бухгалтерского учета зарплаты. Если роль не назначена, платформа «вырезает» поле из формы еще до выполнения серверного кода, и когда процедура пытается обратиться к нему — происходит обращение к неопределенному объекту.
Решение: Для устранения этой ошибки пользователю необходимо добавить роль «Добавление и изменение бухгалтерского учета зарплаты» или аналогичную роль на чтение этих данных. Это позволит платформе корректно отрисовать форму.
Если программных ошибок нет, но список подразделений пуст, проанализируем настройки ведения штатного расписания. В ЗУП 3.1 существует тесная связь между справочником Подразделения и штатным расписанием.
Разберем основные моменты:
Одной из самых частых причин «пустых списков» в версии КОРП является механизм RLS (Record Level Security). В отличие от обычной версии, в КОРП настройки доступа могут быть очень детализированными.
Рассмотрим порядок проверки настроек доступа:
Организации или Подразделения, убедитесь, что пользователю разрешен доступ именно к той организации, к которой относятся искомые подразделения.Организации. Если у пользователя есть права на подразделения, но закрыт доступ к самой организации-владельцу, список будет пустым.Проанализируем архитектурную особенность версии КОРП. Здесь часто используются два похожих понятия:
Если пользователь ищет подразделения в одной форме, а настройки прав выполнены для другой структуры, возникнет путаница. Убедимся, что права настроены именно на объект Справочник.ПодразделенияОрганизаций.
Если даже с полными правами конкретный пользователь не видит данные, а у других всё отображается корректно, стоит заподозрить проблему в локальных настройках отображения. Рассмотрим шаги по их очистке:
Шаг 1. Очистка настроек формы. Перейдем в Администрирование — Настройки пользователей и прав — Настройки пользователей. Выберем проблемного пользователя и в разделе «Внешний вид» или «Настройки отчетов» удалим настройки, связанные со справочником подразделений. Иногда пользователи случайно устанавливают фильтр «встать на пустое поле» и сохраняют его.
Шаг 2. Очистка кэша конфигурации. Выясним, не закешировались ли некорректные метаданные на компьютере пользователя. Для этого необходимо удалить базу из списка в стартере 1С и добавить её заново (это очистит идентификаторы кэша) или вручную удалить содержимое папок %AppData%\1C\1Cv8.
Для решения проблемы отсутствия подразделений в ЗУП 3.1 КОРП рекомендуем действовать по следующему алгоритму:
ПриСозданииНаСервере.Такой комплексный подход позволит не только вернуть видимость данных пользователю, но и обеспечить стабильную работу формы без системных ошибок.