Как ограничить права пользователя просмотром только 10 счета и остатков по складу в 1С:Бухгалтерия 3.0?

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

При настройке прав доступа сотрудников (например, кладовщиков, менеджеров склада или материально ответственных лиц) часто возникает задача: предоставить пользователю возможность видеть остатки и движения материалов по счету 10 «Материалы», но при этом полностью скрыть информацию по остальным бухгалтерским счетам — затратным (20, 26, 44), денежным (50, 51) и расчетам с контрагентами (60, 62).

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

Почему нельзя просто ограничить стандартную Оборотно-сальдовую ведомость по одному счету

Выясним причину архитектурных ограничений платформы «1С:Предприятие 8» и конфигурации «1С:Бухгалтерия предприятия 3.0»:

  1. Принцип двойной записи: В регистре бухгалтерии Хозрасчетный каждая проводка неделима и содержит одновременно счет дебета и счет кредита. Например, при поступлении материалов формируется проводка Дт 10 — Кт 60, а при списании в производство — Дт 20 — Кт 10. Если ограничить пользователю доступ ко всем счетам, кроме 10, платформа не сможет корректно прочитать проводки с закрытыми корреспондирующими счетами.
  2. Ограничения механизма RLS для регистра бухгалтерии: Попытка жестко наложить ограничение на уровне записей (RLS) к виртуальным таблицам (Остатки, Обороты) по условию конкретного счета приводит к блокировкам, существенному падению производительности или ошибкам «Нарушение прав доступа» при формировании стандартных отчетов (ОСВ, Карточка счета, Анализ счета).
  3. Типовой RLS в «1С:Бухгалтерии 3.0»: Штатный механизм ограничения прав доступа на уровне записей рассчитан исключительно на разграничение по организациям (и подразделениям в версии КОРП), но не по планам счетов или отдельным бухгалтерским регистрам.

Вариант 1. Использование штатных складских отчетов и профиля «Кладовщик»

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

Разберем по шагам настройку типовых прав и интерфейса:

  1. Перейдем в раздел «Администрирование» — «Настройки пользователей и прав» — «Группы доступа».
  2. Назначим пользователю предопределенный профиль «Кладовщик» (или создадим его копию для тонкой настройки разрешенных действий). Данный профиль открывает доступ к складским документам (перемещения, инвентаризации, требования-накладные), но полностью блокирует раздел «Отчеты» с оборотно-сальдовыми ведомостями.
  3. Для анализа остатков и движений обучим пользователя использовать специализированные отчеты из раздела «Склад» — «Отчеты»:

    — «Остатки товаров»: выводит остатки в количественном и суммовом выражении в разрезе номенклатуры и складов без отображения счетов учета и бухгалтерских проводок.

    — «Движения товаров»: наглядно показывает приход, расход и конечный остаток ТМЦ за выбранный период.

    — «Контроль отрицательных остатков»: позволяет отслеживать ошибки складского учета.

Вариант 2. Разработка специализированного отчета в расширении

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

Рассмотрим логику реализации такого отчета:

  1. Создаем внешний отчет или отчет в расширении на базе схемы компоновки данных (СКД).
  2. В тексте запроса обращаемся напрямую к виртуальной таблице РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты с жестким фильтром по счету 10 и его субсчетам:
    
    ВЫБРАТЬ
        ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
        ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
        ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
        ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
        ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК КоличествоПриход,
        ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаПриход,
        ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК КоличествоРасход,
        ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаРасход,
        ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
        ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
            &НачалоПериода,
            &КонецПериода,
            Авто,
            ,
            Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы)),
            ,
            Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
    
  3. Для формирования отчета пользователем, у которого нет полных прав на регистр бухгалтерии, вызов компоновки данных выполняем в привилегированном режиме в серверном модуле:
    
    УстановитьПривилегированныйРежим(Истина);
    // Формирование отчета или получение данных СКД
    УстановитьПривилегированныйРежим(Ложь);
    
  4. В пользовательской роли отключаем право на чтение общих бухгалтерских регистров и стандартных отчетов, оставив доступ только к разработанному отчету.

Таким образом, разделение учетных обязанностей достигается не «урезанием» проводок в ОСВ, а предоставлением целевых складских инструментов или разработкой отдельного отчета с безопасной выборкой данных.

← На главную