Как ограничить доступ к 70 счету в 1С:ERP, сохранив права администратора?

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

В крупных организациях часто возникает специфическая задача: необходимо предоставить пользователю (например, главному бухгалтеру, аудитору или техническому специалисту) максимально широкие права в системе 1С:ERP 2.4, но при этом полностью исключить его доступ к персональным данным сотрудников и суммам их заработных плат. Основная сложность заключается в том, что в бухгалтерском учете используется принцип двойной записи, и информация о 70 счете ("Расчеты с персоналом по оплате труда") может "всплывать" в самых разных отчетах и проводках.

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

Почему обычное отключение ролей не работает?

Если мы просто создадим профиль групп доступа и исключим из него роли, связанные с подсистемой "Зарплата", пользователь перестанет видеть специализированные документы (Начисление зарплаты, Ведомости). Однако, если у пользователя остаются права на просмотр Регистра бухгалтерии "Хозрасчетный" и стандартных бухгалтерских отчетов, он все равно сможет увидеть суммы выплат через:

  1. Оборотно-сальдовую ведомость (ОСВ) по счету 70.
  2. Анализ счета или Карточку счета, где 70 счет корреспондирует с затратными счетами (20, 26, 44) или денежными средствами (50, 51).
  3. Расшифровку проводок в любом другом документе.

Проанализируем ситуацию: бухгалтер, работающий с затратами производства, видя проводку Дт 20 - Кт 70, фактически видит фонд оплаты труда цеха. Если же в системе включена детализация по сотрудникам, то конфиденциальность полностью теряется.

Решение 1: Сводный учет и архитектурное разделение (Рекомендуемый метод)

Самый надежный способ скрыть зарплату в 1С:ERP — это сделать так, чтобы детальной информации по сотрудникам в базе просто не существовало. Выясним, как это реализовать.

Если учет зарплаты ведется во внешней программе (например, 1С:ЗУП 3.1), при настройке синхронизации данных можно выбрать вариант выгрузки "Сводно по сотрудникам". Для первоначального выделения учета в отдельную базу предварительно выполняется перенос кадровых и расчётных данных ERP 2 в ЗУП 3. Разберем преимущества этого подхода:

Если же учет ведется непосредственно в ERP, можно изменить настройки учетной политики и отключить ведение аналитики по сотрудникам на счете 70 в плане счетов. Однако это может затруднить работу казначейства при формировании ведомостей на выплату, поэтому внешняя синхронизация с ЗУП в режиме "Сводно" является эталоном безопасности.

Решение 2: Использование расширения для фильтрации отчетов

Если архитектурное разделение невозможно и данные по сотрудникам должны быть в базе, мы можем прибегнуть к программному ограничению. Рассмотрим вариант создания расширения конфигурации, которое будет перехватывать формирование отчетов. Современные отчеты в 1С:ERP построены на базе Системы компоновки данных (СКД) и используют механизмы Библиотеки стандартных подсистем (БСП).

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


// В обработчике события ПриКомпоновкеРезультата (или через общие модули БСП)
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Проверяем наличие роли, разрешающей просмотр ЗП
    Если НЕ РольДоступна("ПолныйДоступКЗарплате") Тогда
        
        // Получаем настройки компоновки
        Настройки = КомпоновщикНастроек.Настройки;
        
        // Ищем существующий отбор или создаем новый
        ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Счет");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии;
        ЭлементОтбора.ПравоеЗначение = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда; // 70 счет
        ЭлементОтбора.Использование = Истина;
        ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
        
    КонецЕсли;

КонецПроцедуры

Этот метод позволяет "маскировать" данные. Даже если пользователь попытается сформировать ОСВ по 70 счету, система принудительно применит фильтр "Счет НЕ в иерархии 70", и отчет выйдет пустым.

Решение 3: Ограничение на уровне записей (RLS)

Механизм RLS (Record Level Security) позволяет ограничить доступ к конкретным строкам таблиц базы данных. На первый взгляд, это кажется идеальным решением: запретить чтение записей регистра бухгалтерии, где Счет = 70. Однако посмотрим на ситуацию с точки зрения производительности.

Регистр "Хозрасчетный" — один из самых высоконагруженных в 1С:ERP. Добавление условий RLS на этот регистр приведет к тому, что каждый бухгалтерский отчет у каждого пользователя будет работать значительно медленнее, так как серверу БД придется постоянно проверять условия прав для миллионов проводок. Поэтому использование RLS для 70 счета рекомендуется только в крайних случаях и только при небольшом объеме данных.

Важные нюансы и "подводные камни"

Посмотрим на проблему шире. Ограничение одного лишь 70 счета не гарантирует полной конфиденциальности. Выясним, через какие еще объекты данные могут стать доступными:

  1. Платежные документы: В документах Списание с расчетного счета или Расходный кассовый ордер часто в назначении платежа указывается фамилия сотрудника. Необходимо также настраивать права на чтение этих документов или скрывать назначение платежа.
  2. Регистры накопления: Зарплата в ERP фиксируется не только в проводках, но и в регистрах накопления (например, Взаиморасчеты с сотрудниками, Начисления по работам). Если у пользователя есть право "Просмотр" или "Вывод" для этих регистров (например, через консоль отчетов), он увидит данные в обход бухгалтерских отчетов.
  3. Внешние отчеты: Обязательно нужно отключить возможность использования внешних отчетов и обработок, так как через них можно прочитать любые данные из базы напрямую, игнорируя фильтры в СКД.

Итоговые рекомендации

Для реализации роли "Администратор без доступа к ЗП" мы рекомендуем комбинированный подход:

  1. Минимизация прав: Удалите у пользователя все роли, содержащие слова "Чтение начислений зарплаты", "Расчетчик", "Кадровик".
  2. Программный фильтр: Создайте расширение, которое блокирует выбор 70 счета в стандартных отчетах для пользователей без спецроли.
  3. Контроль вывода: Установите запрет на использование "Все функции" (Функции для технического специалиста) и внешних обработок.

Такой подход обеспечит баланс между удобством работы специалиста и сохранностью коммерческой тайны предприятия.

← На главную