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

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

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

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

Почему стандартный RLS на регистр бухгалтерии — это тупиковый путь?

Начнем с анализа наиболее очевидной идеи, которая приходит в голову многим администраторам и программистам 1С: настроить RLS (Row-Level Security) на таблицы регистра бухгалтерии или на план счетов. Давайте разберем по шагам, почему этот подход технически некорректен и к каким критическим последствиям он может привести:

  1. Нарушение баланса двойной записи: Механизм RLS в платформе «1С:Предприятие» эффективно работает только с балансовыми измерениями регистра бухгалтерии. В типовой конфигурации БП 3.0 таким измерением является только Организация. Если мы попытаемся наложить ограничение непосредственно на счет учета (например, запретим чтение записей регистра, где счет равен 70), то при формировании общих отчетов (таких как общая Оборотно-сальдовая ведомость) у пользователя «поедет» баланс. Обороты по дебету перестанут сходиться с оборотами по кредиту, поскольку часть проводок будет скрыта.
  2. Проблема изменения структуры метаданных: Попытка обойти ограничение «в лоб» через добавление нового балансового измерения в регистр бухгалтерии (для последующего наложения RLS) ведет к тяжелым последствиям для СУБД. При проведении любых документов по денежным средствам (счета 50, 51) будет нарушаться равенство оборотов в разрезе новой аналитики. Это спровоцирует лавинообразный рост служебных таблиц и критическое падение производительности всей информационной базы.
  3. Прозрачность субконто: Даже если вы скроете сам план счетов от пользователя, проводки в таблице регистра бухгалтерии все равно будут видны. По характеру корреспондирующих счетов и по содержимому субконто (например, справочнику ФизическиеЛица) пользователь сможет легко догадаться, какие именно операции проводятся в системе.

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

Решение 1. Ведение сводного учета и интеграция с ЗУП (Рекомендация 1С)

Самый надежный, методологически верный и безопасный способ скрыть персональные данные по зарплате — это вынос всех расчетов во внешнюю программу 1С:Зарплата и управление персоналом 3.1 (ЗУП), а в БП 3.0 выгрузка данных в свернутом виде.

Разберем по шагам, как реализуется этот подход:

  1. В программе 1С:ЗУП при настройке синхронизации данных устанавливается режим выгрузки «Сводно по сотрудникам».
  2. При переносе данных в 1С:Бухгалтерию вместо сотен документов начисления по конкретным людям создается один сводный документ Отражение зарплаты в бухучете.
  3. В проводках по дебету затратных счетов и кредиту счета 70 в качестве субконто «Работники организаций» подставляется один обезличенный предопределенный элемент — например, «Все сотрудники».

Важный подводный камень: Обратите внимание, что даже при сводной выгрузке персональные данные сотрудников могут «утекать» через смежные механизмы. Например, при расчете удержаний по исполнительным листам (счет 76.41) или по прочим операциям с персоналом (счет 73) программе все равно требуются конкретные контрагенты-физлица для корректного ведения взаиморасчетов. Чтобы решить эту проблему, техническим специалистам приходится дорабатывать правила обмена, принудительно заменяя реальных сотрудников на технических контрагентов прямо в процессе синхронизации.

Решение 2. Ограничение прав доступа к таблицам регистра и отчетам

Если разделение баз невозможно, а доступ нужно ограничить внутри одной базы БП 3.0 (например, дать доступ бухгалтеру по ОС, но скрыть от него зарплату), можно применить программный метод ограничения доступа к формам.

Рассмотрим подробнее этот алгоритм:

  1. В пользовательских ролях полностью отключается право на непосредственный просмотр таблицы РегистрБухгалтерии.Хозрасчетный.
  2. Для пользователей, у которых нет прав на просмотр зарплаты, полностью закрывается доступ к стандартным бухгалтерским отчетам (ОСВ, Карточка счета и т.д.).
  3. Взамен пользователям предоставляются специализированные внешние отчеты (или отчеты, добавленные через механизм расширений), которые получают данные через запрос в привилегированном модуле.
  4. При формировании таких отчетов программно контролируется состав счетов в отборах. Если система обнаруживает попытку проанализировать счет 70, выполнение запроса блокируется, либо данные по счету 70 динамически исключаются из результирующей выборки.

Решение 3. Использование расширения конфигурации (.cfe) для перехвата отчетов

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

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


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

Данный метод позволяет точечно перехватить построение отчетов типа ОСВ по счету, Карточка счета и Анализ счета. Система выдаст предупреждение и заблокирует вывод конфиденциальной информации на экран.

Решение 4. Метод «обезличивания» персональных данных

Если для сверки балансовых показателей бухгалтеру по ОС или другому смежному сотруднику всё же необходимо видеть общие обороты по счету 70, но категорически нельзя показывать конкретные фамилии сотрудников и их индивидуальные начисления, применяется метод деперсонализации прав.

Алгоритм настройки выглядит следующим образом:

  1. В профиле групп доступа целевого пользователя полностью отключаются права на чтение справочников ФизическиеЛица и Сотрудники.
  2. В результате во всех проводках, журналах документов, оборотно-сальдовых ведомостях и карточках счетов вместо конкретных фамилий сотрудников пользователь будет видеть пустые поля или системную надпись <Объект не найден...>.

Важное ограничение: Применяя этот метод, учитывайте, что ограничение доступа к справочнику сотрудников может заблокировать корректную работу пользователя в других документах. Например, там, где эти сотрудники выступают в качестве ответственных лиц, авторов документов, подотчетных лиц или материально-ответственных лиц (МОЛ) на складах. Поэтому данный способ требует детального предварительного тестирования на копии базы данных.

Подведем итоги

Ограничить доступ к счету 70 в БП 3.0 стандартными методами платформы «в один клик» невозможно из-за базовых принципов ведения учета. Наиболее стабильным и архитектурно правильным решением остается ведение расчетов в ЗУП с выгрузкой сводных показателей. Если этот вариант не подходит, следует смотреть в сторону разработки расширения конфигурации для динамической фильтрации отчетов или использовать метод обезличивания справочника физлиц.

← На главную