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

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

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

Особенно остро эта проблема встает при синхронизации с 1С:Зарплата и управление персоналом 3 (ЗУП). Выгрузка проводок может происходить как с детализацией по сотрудникам, так и сводно. Давайте подробно рассмотрим и проанализируем все возможные варианты решения этой задачи, их технические ограничения, риски и лучшие практики.

---

Вариант 1. Ограничение прав на уровне записей (RLS)

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

Пример ограничения RLS на план счетов Хозрасчетный для роли с ограничением прав (условие на чтение):

Хозрасчетный ГДЕ НЕ Хозрасчетный.Код = "70"

Также предлагается накладывать ограничения на справочник ФизическиеЛица, чтобы пользователь видел только разрешенный сегмент сотрудников:


ФизическиеЛица ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица 
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СотрудникиМагазинов КАК СотрудникиМагазинов 
ПО ФизическиеЛица.Ссылка = СотрудникиМагазинов.Сотрудник

Почему использование RLS для этой задачи не рекомендуется и крайне опасно?

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

---

Вариант 2. Переход на обмен «Сводно по сотрудникам»

Наиболее чистый с точки зрения производительности и методологии 1С способ — это отключение детализации по сотрудникам на уровне синхронизации с 1С:ЗУП. В этом случае все данные по заработной плате будут храниться в ЗУП, а в 1С:Бухгалтерию будут попадать только общие суммы по подразделениям. Для подготовки проекта миграции можно также изучить раздел с решениями по переносу данных ЗУП и выбору направлений перехода.

Что пугает пользователей при переходе на этот вариант?

В настройках программы присутствует предупреждение: «Если менять настройку, чтобы проводки по зарплате стали выгружаться „сводно по сотрудникам“, то на счете 70 в 1С:Бухгалтерии будет отключен признак аналитического учета (субконто) „Сотрудники“. Если эту манипуляцию проделать на базе с заполненными данными, то сведения о зарплате в разрезе сотрудников будут потеряны».

Выясним причину этого предупреждения и проанализируем последствия:

Как правильно перейти на сводный учет в середине года:

  1. Сделайте полную резервную копию базы данных 1С:Бухгалтерия и 1С:ЗУП. Для этой задачи удобно использовать автоматическое архивирование и обслуживание нескольких баз 1С в тихом режиме.
  2. Завершите и полностью закройте отчетный период (например, полугодие) — сдайте всю отчетность.
  3. Проверьте, чтобы остатки на конец закрытого периода по счету 70 в 1С:Бухгалтерии сходились с сальдо в 1С:ЗУП. Для ускорения процесса можно применить автоматическую сверку бухгалтерских проводок между базами 1С через COM-соединение.
  4. В настройках параметров учета 1С:Бухгалтерии («Администрирование» — «Параметры учета» — «Настройки зарплаты») измените способ ведения расчетов на «Сводно по всем работникам».
  5. В 1С:ЗУП в настройках синхронизации также установите переключатель в положение «Сводно по сотрудникам».
  6. Обратите внимание, что прошлые периоды в БП лишатся аналитики по сотрудникам, но общее сальдо по счету 70 останется неизменным. Все сверки теперь необходимо будет проводить путем сопоставления бухгалтерского сальдо 1С:БП с отчетами по зарплате в 1С:ЗУП.

---

Вариант 3. Использование расширения конфигурации (Современный метод)

Если вам необходимо сохранить ведение учета по сотрудникам в 1С:Бухгалтерии (например, для целей УСН), но при этом скрыть эти данные от конкретных пользователей без использования «тяжелого» RLS, лучшим решением является создание расширения конфигурации (.cfe).

Этот способ безопасен, не требует изменения типовой конфигурации и не влияет на скорость закрытия месяца.

Принцип работы расширения:

Вместо ограничения доступа к самим таблицам СУБД, расширение перехватывает процесс формирования стандартных отчетов (ОСВ, Карточка счета, Анализ счета) и документов. Если у текущего пользователя нет специальной роли (например, ДоступКСчету70), расширение модифицирует вывод данных.

Рассмотрим пример кода в расширении, который перехватывает компоновку результата стандартного отчета (например, Оборотно-сальдовой ведомости по счету) и блокирует вывод, если выбран счет 70:


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

С помощью расширения можно реализовать различные сценарии защиты данных:

---

Вариант 4. Схема «Обобщенного сотрудника»

Еще один практический обходной путь — ведение детального учета, но на «обезличенном» уровне. Этот метод объединяет плюсы сводного учета и детальной настройки счетов:

  1. В справочнике Физические лица (и соответственно Сотрудники) в 1С:Бухгалтерии создается единственный виртуальный элемент с наименованием, например, «Уважаемый сотрудник» или «Все сотрудники (сводно)».
  2. Правила синхронизации данных между ЗУП и БП дорабатываются так, чтобы при переносе проводок и ведомостей реальные ссылки на физлиц подменялись ссылкой на этого единственного виртуального сотрудника.
  3. Таким образом, субконто «Сотрудники» на счете 70 остается активным (что решает проблемы КУДиР при УСН), но при открытии любых отчетов пользователи видят только одну строку с общими оборотами. Реальные фамилии и оклады остаются строго внутри закрытой базы 1С:ЗУП.

---

Резюме и рекомендации

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

← На главную