Обеспечение конфиденциальности данных по заработной плате — одна из наиболее частых задач в практике автоматизации бухгалтерского учета. В типовой конфигурации 1С:Бухгалтерия предприятия 3.0 (БП) стандартные роли бухгалтера зачастую позволяют видеть абсолютно все проводки и отчеты. Однако возникает ситуация, когда определенным пользователям (например, рядовым бухгалтерам, кассирам или аудиторам) необходимо закрыть доступ к детализации счета 70 «Расчеты с персоналом по оплате труда» в разрезе сотрудников, сохранив при этом возможность полноценно работать с остальным планом счетов.
Особенно остро эта проблема встает при синхронизации с 1С:Зарплата и управление персоналом 3 (ЗУП). Выгрузка проводок может происходить как с детализацией по сотрудникам, так и сводно. Давайте подробно рассмотрим и проанализируем все возможные варианты решения этой задачи, их технические ограничения, риски и лучшие практики.
---
Первое решение, которое часто приходит на ум техническим специалистам — это использование механизма RLS (Row-Level Security), встроенного в платформу 1С:Предприятие. На форумах можно встретить рекомендации настроить ограничение на чтение плана счетов Хозрасчетный или регистра бухгалтерии.
Пример ограничения RLS на план счетов Хозрасчетный для роли с ограничением прав (условие на чтение):
Хозрасчетный ГДЕ НЕ Хозрасчетный.Код = "70"
Также предлагается накладывать ограничения на справочник ФизическиеЛица, чтобы пользователь видел только разрешенный сегмент сотрудников:
ФизическиеЛица ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СотрудникиМагазинов КАК СотрудникиМагазинов
ПО ФизическиеЛица.Ссылка = СотрудникиМагазинов.Сотрудник
Почему использование RLS для этой задачи не рекомендуется и крайне опасно?
Дт 70 — Кт 51 при выплате зарплаты. Это приведет к критическим ошибкам при проведении документов и формировании базовых отчетов (например, анализа счета 51).---
Наиболее чистый с точки зрения производительности и методологии 1С способ — это отключение детализации по сотрудникам на уровне синхронизации с 1С:ЗУП. В этом случае все данные по заработной плате будут храниться в ЗУП, а в 1С:Бухгалтерию будут попадать только общие суммы по подразделениям. Для подготовки проекта миграции можно также изучить раздел с решениями по переносу данных ЗУП и выбору направлений перехода.
Что пугает пользователей при переходе на этот вариант?
В настройках программы присутствует предупреждение: «Если менять настройку, чтобы проводки по зарплате стали выгружаться „сводно по сотрудникам“, то на счете 70 в 1С:Бухгалтерии будет отключен признак аналитического учета (субконто) „Сотрудники“. Если эту манипуляцию проделать на базе с заполненными данными, то сведения о зарплате в разрезе сотрудников будут потеряны».
Выясним причину этого предупреждения и проанализируем последствия:
Ведомость в банк и Ведомость в кассу перестают мигрировать из ЗУП в БП. Выплаты будут оформляться документами Списание с расчетного счета или Расходный кассовый ордер на общую сумму операции, без указания конкретных лиц.Как правильно перейти на сводный учет в середине года:
---
Если вам необходимо сохранить ведение учета по сотрудникам в 1С:Бухгалтерии (например, для целей УСН), но при этом скрыть эти данные от конкретных пользователей без использования «тяжелого» RLS, лучшим решением является создание расширения конфигурации (.cfe).
Этот способ безопасен, не требует изменения типовой конфигурации и не влияет на скорость закрытия месяца.
Принцип работы расширения:
Вместо ограничения доступа к самим таблицам СУБД, расширение перехватывает процесс формирования стандартных отчетов (ОСВ, Карточка счета, Анализ счета) и документов. Если у текущего пользователя нет специальной роли (например, ДоступКСчету70), расширение модифицирует вывод данных.
Рассмотрим пример кода в расширении, который перехватывает компоновку результата стандартного отчета (например, Оборотно-сальдовой ведомости по счету) и блокирует вывод, если выбран счет 70:
&Вместо("ПриКомпоновкеРезультата")
Процедура Расш70_ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Проверяем, установлена ли у пользователя роль-исключение
Если Не РольДоступна("РазрешитьПросмотрЗаработнойПлаты") Тогда
// Анализируем настройки компоновщика отчета
ПараметрыКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
// Ищем упоминание счета 70 в отборе
Для Каждого ЭлементОтбора Из ПараметрыКомпоновки.Отбор.Элементы Цикл
Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Счет")
И (ЭлементОтбора.ПравоеЗначение = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда
Или ЭлементОтбора.ПравоеЗначение = "70") Тогда
СтандартнаяОбработка = Ложь;
ВызватьИсключение "Недостаточно прав для формирования отчета по счету 70!";
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
С помощью расширения можно реализовать различные сценарии защиты данных:
РаботникиОрганизации из табличного документа отчета перед выводом его на экран пользователю. При этом общие суммы (итого по счету) будут видны, но детализация по фамилиям сотрется.Отражение зарплаты в бухучете, Начисление зарплаты и ведомостей на выплату для неавторизованных пользователей.---
Еще один практический обходной путь — ведение детального учета, но на «обезличенном» уровне. Этот метод объединяет плюсы сводного учета и детальной настройки счетов:
Физические лица (и соответственно Сотрудники) в 1С:Бухгалтерии создается единственный виртуальный элемент с наименованием, например, «Уважаемый сотрудник» или «Все сотрудники (сводно)».---
Выбор конкретного метода зависит от технических требований вашей организации и используемой системы налогообложения: