Как добавить поле МОЛ в отчет «Оборотно-сальдовая ведомость по счету» при ограниченных правах

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

При настройке прав доступа в системе 1С:Предприятие 8.3 (особенно в конфигурации Бухгалтерия предприятия 3.0) разработчики часто сталкиваются с ситуацией, когда пользователю с ограниченными правами требуется сформировать стандартный отчет, например, «Оборотно-сальдовая ведомость по счету» (ОСВ), и вывести в него дополнительные данные. Одной из самых распространенных задач является вывод Материально ответственного лица (МОЛ) для основных средств по счету 01.

Проблема заключается в том, что даже если у пользователя есть права на сам счет и справочник «Основные средства», поле МОЛ в настройках дополнительных полей может просто отсутствовать или не заполняться. В этой статье мы подробно разберем, почему это происходит и как правильно настроить права через механизм расширений, чтобы решить эту задачу.

Проанализируем причину отсутствия поля

Прежде всего, выясним, откуда система берет данные о материально ответственном лице. В конфигурации «Бухгалтерия предприятия 3.0» информация о МОЛ для основных средств не является обычным реквизитом справочника ОсновныеСредства. Эта информация носит периодический характер (она может меняться со временем при перемещении ОС) и хранится в специализированных регистрах сведений.

Когда мы пытаемся добавить поле в отчет через Систему компоновки данных (СКД), механизм компоновки анализирует доступные права текущего пользователя ко всем объектам метаданных, задействованным в запросе. Если хотя бы на один промежуточный объект (регистр), из которого «подтягиваются» данные, прав недостаточно, СКД исключает это поле из визуального выбора в настройках отчета.

Пошаговое решение проблемы через расширение

Рассмотрим ситуацию, когда мы создали свою роль РасшБП_ПросмотрОСВ в расширении и хотим дать пользователю возможность видеть МОЛ по счету 01. Разберем по шагам, какие именно права необходимо добавить.

Шаг 1. Идентификация источника данных.

Для счета 01 в БП 3.0 основным источником сведений о местонахождении и ответственном лице является регистр сведений МестонахождениеОСБухгалтерскийУчет. Именно в нем хранятся записи о том, за кем закреплено основное средство в конкретный момент времени.

Шаг 2. Добавление прав на регистр в расширении.

Перейдем в наше расширение, найдем созданную роль и добавим в нее права на регистр сведений МестонахождениеОСБухгалтерскийУчет. Нам необходимо установить два ключевых права:

  1. Чтение (Read) — позволяет системе получать данные из таблиц регистра на уровне запроса.
  2. Просмотр (View) — критически важное право для интерфейса. Без него поле не появится в списке выбора «Дополнительные поля» в настройках отчета.

Шаг 3. Проверка прав на связанные справочники.

Поскольку поле МОЛ в регистре имеет тип ссылки на справочник ФизическиеЛица, мы должны убедиться, что у нашей роли есть права на чтение и просмотр этого справочника. Если прав на физлиц не будет, то вместо фамилии ответственного лица пользователь увидит в отчете надпись «Объект не найден» или пустую строку.

Аналогично стоит проверить права на справочник ПодразделенияОрганизаций, так как местонахождение ОС часто связано именно с ним.

Особенности реализации прав в расширениях

При работе с расширениями важно учитывать технические нюансы платформы 8.3.16 и выше. Посмотрим на пример того, как это должно выглядеть в метаданных вашей роли:


// В расширении для роли РасшБП_ПросмотрОСВ 
// должны быть установлены галочки:
// РегистрСведений.МестонахождениеОСБухгалтерскийУчет -> Чтение, Просмотр
// Справочник.ФизическиеЛица -> Чтение, Просмотр
// Справочник.ОсновныеСредства -> Чтение, Просмотр

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

Почему недостаточно прав только на справочник «Основные средства»?

Многие начинающие программисты полагают, что раз в ОСВ мы выбираем счет 01, а субконто там — «Основные средства», то достаточно прав на этот справочник. Однако механизм СКД в типовых отчетах 1С работает сложнее. Он «пробрасывает» связи (левые соединения) к регистрам сведений, чтобы получить актуальные на дату отчета данные.

Проанализируем ситуацию: в справочнике ОсновныеСредства может быть реквизит МОЛ, но он часто является либо устаревшим, либо справочным, либо не используется в логике формирования ОСВ. Типовая ОСВ в БП 3.0 берет МОЛ именно через связь с регистром МестонахождениеОСБухгалтерскийУчет. Если прав на «мостик» (регистр) нет, связь не срабатывает, и поле исчезает из интерфейса настроек.

Рекомендации по тестированию

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

  1. Зайдем в систему под пользователем с ограниченными правами.
  2. Откроем «Оборотно-сальдовую ведомость по счету» и выберем счет 01.
  3. Нажмем кнопку «Показать настройки».
  4. Перейдем на закладку «Дополнительные поля».
  5. Нажмем кнопку «Добавить» и убедимся, что в дереве доступных полей в разделе Основное средство появилось вложенное поле МОЛ (или путь ОсновноеСредство.МатериальноОтветственноеЛицо).

Если поле все еще не появилось, попробуем очистить локальный кэш метаданных пользователя или запустить 1С с параметром /ClearCache, так как структура доступных полей СКД иногда кэшируется платформой для повышения производительности.

Резюме

Для того чтобы сделать поле МОЛ доступным в ОСВ по счету 01 для неполных прав, необходимо:

Такой системный подход позволяет корректно настроить интерфейс отчетов без предоставления пользователю избыточных «Полных прав», сохраняя безопасность и целостность данных в системе.

← На главную