Как ограничить доступ к разделу «Зарплата и кадры» в 1С:Бухгалтерии предприятия 3.0, сохраняя доступ к остальной бухгалтерии?

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

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

Суть проблемы: конфликтующие права доступа

Основная сложность заключается в том, что в БП 3.0 права доступа часто сгруппированы в типовых ролях таким образом, что функциональность раздела «Зарплата и кадры» включена в общие роли, дающие доступ ко всей бухгалтерии. Например, роль Чтение и изменение данных бухгалтерии или Добавление и изменение данных бухгалтерии, необходимая для полноценной работы бухгалтера, одновременно предоставляет права и на объекты, связанные с учетом зарплаты и кадров. Мы не можем просто убрать эту роль у пользователя, иначе он потеряет доступ к огромному объему другой, критически важной бухгалтерской информации.

Если мы попробуем создать новый профиль доступа и просто исключить из него роли, отвечающие за ЗиК, то обнаружим, что пользователь лишается возможности работать со многими документами и отчетами, не имеющими прямого отношения к зарплате. Разработчики 1С предупреждают, что корректная работа программы гарантируется только для стандартных профилей, а пользовательские сочетания ролей требуют тщательной проверки и могут быть нестабильны.

Подход 1: Модификация типовых профилей и ролей

Первое, что приходит на ум – это попытка скопировать существующий профиль, например, «Бухгалтер», и создать новый, исключив из него роли, связанные с «Зарплатой и кадрами». Рассмотрим этот подход подробнее.

  1. Копирование профиля в режиме предприятия:
  2. Мы можем создать новый профиль доступа на основе типового профиля «Бухгалтер» через раздел «Администрирование» - «Настройки пользователей и прав» - «Профили групп доступа». Затем из этого скопированного профиля можно попытаться убрать роли, которые, как нам кажется, отвечают только за ЗиК (например, Добавление и изменение документов зарплата и кадры, Добавление и изменение депонированной зарплаты).

  3. Проблемы этого подхода:
  4. Копирование роли в конфигураторе:
  5. Более радикальный вариант — скопировать типовую роль Добавление и изменение данных бухгалтерии прямо в конфигураторе и в ее копии вручную ограничить права на объекты, связанные с зарплатой. Затем эту модифицированную роль использовать в пользовательском профиле.

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

Подход 2: Использование ограничений на уровне записей (RLS - Record Level Security)

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

  1. Как работает RLS:
  2. В настройках «Профиля групп доступа» на вкладке «Ограничение доступа» мы можем добавить параметры ограничений. Например, можно ограничить доступ к документам и справочникам только для определенных организаций. Если данные о зарплате хранятся в отдельных регистрах или документах, связанных с конкретными параметрами, теоретически можно настроить RLS.

  3. Почему RLS не подходит для сокрытия всего раздела:

Таким образом, RLS – это мощный инструмент, но он предназначен для другого типа задач и не позволяет полностью скрыть раздел «Зарплата и кадры» или его функционал, а лишь ограничить доступ к данным внутри него.

Подход 3: Применение расширений конфигурации

Расширения – это современный механизм, позволяющий изменять конфигурацию программы без снятия ее с поддержки, что значительно упрощает процесс обновлений. На первый взгляд, это кажется идеальным решением. Мы могли бы создать расширение, скопировать в него нужную роль и модифицировать ее, исключив объекты ЗиК.

  1. Идея с расширением:
  2. Автор исходного сообщения рассматривал создание в расширении альтернативной роли, которая исключала бы из себя все, что относится к ЗиК. Такой подход позволил бы избежать непосредственного изменения основной конфигурации.

  3. Серьезные проблемы с расширениями в данном случае:

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

Подход 4: Управление через функциональные опции

Функциональные опции (ФО) предназначены для гибкого включения/отключения определенного функционала в программе без изменения кода. Идея заключается в том, чтобы использовать программное управление функциональными опциями для скрытия подсистемы «Зарплата и кадры» в зависимости от текущего пользователя.

  1. Как это могло бы работать:
  2. Мы могли бы создать новую функциональную опцию, которая управляла бы видимостью раздела «Зарплата и кадры». Затем, при старте программы или при смене пользователя, мы могли бы с помощью процедуры УстановитьПараметрыФункциональныхОпцийИнтерфейса программно включать или отключать эту опцию для конкретных пользователей или групп доступа.

    
    // Пример концепции, как это могло бы быть реализовано в модуле сеанса или при старте
    Если РольДоступна("ОграниченныйБухгалтер") Тогда
        // Предполагается, что "ЗарплатаИКадры" - это имя нашей функциональной опции
        // и она привязана к видимости подсистемы
        УстановитьПараметрыФункциональныхОпцийИнтерфейса("ЗарплатаИКадры", Ложь);
    Иначе
        УстановитьПараметрыФункциональныхОпцийИнтерфейса("ЗарплатаИКадры", Истина);
    КонецЕсли;
    

    Это позволило бы скрывать раздел без изменения прав доступа к данным, что потенциально решило бы проблему конфликтующих ролей.

  3. Проблемы и ограничения:

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

Подход 5: Разделение учета с помощью 1С:ЗУП

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

  1. Принцип работы:
  2. Преимущества:
  3. Недостатки:

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

Подход 6: Точечные доработки и специализированные расширения

Если нет возможности использовать 1С:ЗУП, а вышеперечисленные типовые подходы не дают нужного результата, остается вариант точечных доработок конфигурации или создания специализированного расширения, сфокусированного на конкретных объектах.

  1. Фокусировка на объектах:
  2. Вместо попытки скрыть весь раздел, можно сфокусироваться на ограничении доступа к наиболее критичным объектам: документам начисления зарплаты, справочникам сотрудников, отчетам по зарплате, проводкам по 70-му счету.

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

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

    Также можно в расширении создавать свои собственные формы для просмотра данных, где будет реализован нужный уровень ограничений.

  5. Ограничение доступа к счету 70:
  6. Как мы уже выяснили, стандартными средствами RLS невозможно ограничить доступ к конкретному счету бухгалтерского учета. Однако, можно использовать вышеописанные доработки форм отчетов, чтобы не выводить данные по 70-му счету для определенных пользователей, или же модифицировать запросы отчетов, чтобы они не включали данные этого счета. Это будет доработкой, а не типовым функционалом.

  7. Преимущества:
  8. Недостатки:

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

Как мы видим, прямого и простого способа полностью скрыть раздел «Зарплата и кадры» в 1С:Бухгалтерии предприятия 3.0 без серьезных изменений или использования дополнительных решений в типовом функционале нет. Проблема сложна и многогранна. В качестве готового решения можно использовать обработку для запрета просмотра блока зарплаты в БП 3.0.

В качестве основных рекомендаций мы можем выделить следующее:

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

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

← На главную