В практике работы с «1С:Бухгалтерией» часто возникает деликатная задача: главный бухгалтер просит ограничить доступ рядовых сотрудников к данным по 70 счету. Проблема заключается в том, что стандартные отчеты, такие как Оборотно-сальдовая ведомость (ОСВ), предназначены для полноценного анализа бухгалтерского учета, и «вырезать» из них один счет без нарушения логики работы системы довольно сложно. Рассмотрим подробнее, какими методами можно решить эту задачу, проанализируем риски каждого подхода и выберем оптимальный путь.
Проанализируем самый надежный и правильный с точки зрения методологии 1С способ. Если учет заработной платы ведется в той же информационной базе, что и основной бухгалтерский учет, скрыть детализацию практически невозможно. Самым эффективным решением будет использование внешней программы, например, «1С:Зарплата и управление персоналом» (ЗУП).
Выясним, как это работает по шагам:
РаботникиОрганизации) в проводках будет фигурировать общая сумма по всей организации.Преимущество: Бухгалтер видит общую сумму затрат на оплату труда в ОСВ, но не знает, кто конкретно и сколько получил. Это полностью снимает вопрос конфиденциальности персональных данных.
Если вариант с разделением баз не подходит, рассмотрим настройку ограничений на уровне записей (RLS). Этот метод позволяет на уровне SQL-запроса отсекать данные, к которым у пользователя нет доступа.
Чтобы реализовать это, нам потребуется создать отдельную роль и прописать ограничение доступа на чтение для объекта РегистрБухгалтерии.Хозрасчетный. Условие может выглядеть следующим образом:
ГДЕ СчетДт <> ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда)
И СчетКт <> ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда)
Однако при внедрении RLS мы столкнемся с рядом серьезных проблем:
Объект не найден.Посмотрим на более «гибкий», но трудоемкий способ — вмешательство в процесс формирования отчета. В обычных формах большинство отчетов строятся с использованием ПостроителяОтчетов или универсального отчета.
Рассмотрим алгоритм доработки:
ТабличныйДокумент, мы можем проанализировать данные.ПриВыводеСтроки или программный перебор областей после выполнения метода Вывести().Пример фрагмента кода для очистки данных в табличном документе:
Для Каждого ОбластьСтрока Из ТабличныйДокумент.Области Цикл
Если Найти(ОбластьСтрока.Текст, "70") > 0 Тогда
// Нашли строку со счетом 70
// Очищаем ячейки с суммами (нужно знать индексы колонок)
ОбластьСтрока.Параметры.СуммаОборотДт = 0;
ОбластьСтрока.Параметры.СуммаОборотКт = 0;
КонецЕсли;
КонецЦикла;
Важно: Этот метод требует «затыкания дыр» во всех отчетах: ОСВ по счету, Анализ счета, Карточка счета, Обороты счета, Шахматка и Главная книга. Также придется закрыть доступ к универсальному отчету и консоли запросов.
Проанализируем более простой, но менее защищенный вариант. Можно модифицировать форму настройки ОСВ таким образом, чтобы при выборе счета пользователем из определенного списка (или с определенной ролью) счет 70 был недоступен для выбора или автоматически исключался из фильтров.
В модуле формы отчета можно добавить проверку:
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если Не РольДоступна("ПолныеПрава") Тогда
// Добавляем фиксированный отбор, который пользователь не сможет снять
Отбор = ПостроительОтчетов.Отбор;
Если Отбор.Найти("Счет") = Неопределено Тогда
НовыйОтбор = Отбор.Добавить("Счет");
НовыйОтбор.ВидСравнения = ВидСравнения.НеВИерархии;
НовыйОтбор.Значение = ПланСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
НовыйОтбор.Использование = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Этот способ лишь ограничивает удобство, но опытный пользователь сможет увидеть суммы через корреспондирующие счета (например, посмотрев обороты по 51 или 50 счету в дебет 70).
Выясним, почему технические ограничения не всегда являются лучшим выходом. 1С — это система двойной записи. Если пользователь видит, что со счета 51 (Расчетный счет) ушло 500 000 рублей с назначением платежа «Выплата заработной платы», ему не нужно открывать 70 счет, чтобы понять объем фонда оплаты труда.
Поэтому наиболее эффективным и дешевым способом часто является:
Если задача стоит критически остро, лучшее решение — переход на сводный учет (Метод 1). Все остальные программные способы (RLS, модификация отчетов) будут либо приводить к ошибкам в балансе, либо потребуют огромных затрат на поддержку при каждом обновлении конфигурации. Помните, что безопасность данных в учетной системе — это всегда баланс между техническими запретами и административным регламентом.