Рассмотрим распространенную ситуацию в 1С, когда требуется предоставить пользователю минимальные права доступа – только просмотр всех объектов системы – но при этом разрешить ему создавать и изменять всего лишь один конкретный документ, например, «Счет на оплату». На первый взгляд задача кажется простой: достаточно добавить права на этот документ в соответствующую роль и назначить ее пользователю. Однако, как показывает практика и обсуждаемая ситуация на форуме, часто возникают сложности, когда программа все равно не дает сохранить или провести документ, несмотря на предоставленные права.
Вместе с вами разберем, почему так происходит, и какие шаги необходимо предпринять для успешной настройки таких прав доступа. Мы выясним, что проблема кроется не только в правах на сам документ, но и в правах на множество связанных объектов, которые участвуют в процессе его создания, изменения и проведения.
Прежде всего, давайте посмотрим, как в 1С устроена система прав доступа. Она базируется на ролях, которые объединяются в профили групп доступа. Пользователям назначаются профили или непосредственно группы доступа, которые, в свою очередь, содержат роли.
Начнем с самого важного – роли. Если у пользователя уже есть роль с правами на просмотр всех объектов, мы можем создать новую роль специально для документа «Счет на оплату» или расширить существующую (что менее предпочтительно для сохранения чистоты прав).
Для этого необходимо войти в Конфигуратор, перейти в раздел Конфигурация → Роли. Создайте новую роль (например, «СозданиеИзмСчетНаОплату») или выберите роль, которую вы планируете модифицировать. В свойствах этой роли нам нужно явно предоставить следующие права для объекта «Документ.СчетНаОплату»:
Чтение: для просмотра существующих документов.Добавление: для создания новых документов.Изменение: для редактирования существующих документов.Проведение: для проведения документа (создания движений по регистрам).Удаление: если пользователю необходимо иметь возможность удалять свои счета.Важный момент: если вы только дадите право на Добавление и Изменение, но не дадите Проведение, пользователь сможет сохранить документ, но не сможет его провести. Это может быть источником недоразумений, о чем мы подробнее поговорим ниже.
В современных конфигурациях 1С 8.3 рекомендуется использовать профили групп доступа. Это удобный механизм, который объединяет несколько ролей в единый набор полномочий. Мы разберем, как его использовать:
Администрирование → Настройки пользователей и прав → Профили групп доступа.Администрирование → Настройки пользователей и прав → Пользователи. Откройте нужного пользователя и на вкладке Группы доступа назначьте ему группу доступа, основанную на новом профиле.Такой подход позволяет гибко управлять правами и избежать дублирования.
Одной из наиболее частых причин невозможности сохранить или провести документ, даже если на него самого даны все права, является отсутствие прав на связанные объекты. Мы проанализируем, почему это так важно.
Любой документ в 1С – это не изолированный объект. При его создании, изменении и особенно проведении, он взаимодействует с множеством других сущностей системы. Например, «Счет на оплату» обязательно использует:
Контрагенты: для выбора покупателя или поставщика.Номенклатура: для выбора товаров или услуг, которые указываются в счете.Организации: для выбора нашей организации.Договоры контрагентов: для привязки к конкретному договору.Банковские счета: для указания реквизитов оплаты.Если у пользователя нет права Чтение на эти справочники, он просто не сможет выбрать необходимые элементы при заполнении документа. Если есть возможность создавать новые элементы справочника прямо из формы документа (например, нового контрагента), то потребуется и право Добавление или Изменение на соответствующие справочники.
При проведении документ «Счет на оплату» обычно не делает прямых движений в регистры, но многие другие документы (например, «Реализация товаров и услуг» или «Поступление на расчетный счет») ссылаются на него или изменяют связанные данные, которые могут быть доступны через счет. Однако, для других документов (например, «Реализация товаров и услуг»), которые формируют проводки и движения, права на регистры абсолютно критичны.
Для корректного проведения документов необходимо предоставить права на следующие типы регистров:
Регистры накопления: если документ изменяет остатки товаров, взаиморасчетов.Регистры сведений: если документ записывает или считывает какую-либо информацию (например, курсы валют, ставки НДС).Регистры бухгалтерии: если документ формирует бухгалтерские проводки (хотя «Счет на оплату» обычно не формирует их сам, это делают последующие документы).На каждый регистр, в который документ делает движения или из которого считывает данные, необходимо предоставить права Чтение, Добавление, Изменение и Удаление (для сторнирования движений). Без этих прав система выдаст ошибку отсутствия доступа при попытке проведения.
Пошаговая проверка прав на связанные объекты:
Конфигуратор.Счет на оплату (или любой другой, для которого настраиваете права).Данные или Формы, чтобы понять, какие справочники и документы используются в его реквизитах.ПриСозданииНаСервере, ПередЗаписью, ПриЗаписи, ОбработкаПроведения.Движения в конфигураторе посмотрите, в какие регистры документ создает движения. На все эти регистры должны быть даны соответствующие права в вашей роли.Очень важно понимать разницу между операциями сохранения (записи) и проведения документа в 1С, а также как они влияют на требуемые права доступа.
Эта операция означает физическую запись данных документа в базу данных. При этом документ сохраняется, но не выполняет никаких движений по регистрам. Он просто становится доступен для просмотра, редактирования или проведения в будущем. Для выполнения этой операции необходимы права Чтение, Добавление и Изменение на сам документ.
Эта операция гораздо сложнее. При проведении документа, помимо записи его самого, система выполняет определенный алгоритм, который, как правило, приводит к созданию или изменению записей в различных регистрах (накопления, сведений, бухгалтерии). Именно движения по регистрам отражают хозяйственные операции и влияют на отчетность.
Для проведения документа, помимо прав на сам документ (включая право Проведение), абсолютно необходимы права на все регистры и связанные объекты, в которые документ делает движения. Если этих прав нет, документ может быть успешно сохранен (записан), но при попытке проведения программа выдаст ошибку, указывающую на отсутствие доступа к тому или иному регистру или справочнику.
Проблема, описанная автором ("программа под этим пользователем все равно не дает сохранить док"), могла быть связана как с отсутствием прав на справочники (чтобы даже заполнить и сохранить), так и с попыткой провести документ сразу после заполнения, при отсутствии прав на регистры.
В некоторых случаях, когда документ взаимодействует со сложной структурой данных или необходимо временно обойти детализированный контроль прав для определенной операции (например, при проведении сложного регламентного документа), может быть использован привилегированный режим проведения.
Мы разберем, что это такое и как его применять:
Привилегированный режим позволяет выполнять код или операции с данными без проверки прав текущего пользователя. Система как бы "повышает" права на время выполнения определенного участка кода до уровня полных прав, чтобы избежать ошибок доступа. Это может быть полезно, когда документ затрагивает множество объектов, на которые у пользователя нет прямых прав, но логика проведения должна быть выполнена.
Привилегированный режим может быть установлен программно в коде модуля объекта документа или обработчика проведения. Выглядит это следующим образом:
// Устанавливаем привилегированный режим
УстановитьПривилегированныйРежим(Истина);
// Здесь выполняется код проведения, который требует повышенных прав
// Например, запись в регистры, на которые у пользователя нет прямых прав
// Обязательно снимаем привилегированный режим после выполнения критического кода
УстановитьПривилегированныйРежим(Ложь);
Также привилегированный режим может быть включен в свойствах самого документа в Конфигураторе для всей обработки проведения. Однако это менее гибкий подход и может быть излишним.
Важно: Использование привилегированного режима требует особой осторожности. Мы должны четко понимать, зачем и где он используется. Неконтролируемое применение этого режима может привести к нарушению безопасности данных, открывая доступ к информации, которая не должна быть доступна пользователю. Это скорее исключение, чем правило, и обычно применяется для внутренних системных операций, а не для обычных пользовательских действий.
В большинстве случаев для настройки прав доступа к обычному документу достаточно корректно настроить права на сам документ и все связанные с ним справочники и регистры, как мы обсуждали ранее.
Если после всех предпринятых шагов пользователь все еще не может сохранить или провести документ, нам нужно провести тщательную диагностику. Мы выясним, какие инструменты и методы помогут найти истинную причину.
Это самый первый и самый важный шаг. Вместо общих фраз типа "не дает сохранить", попросите пользователя точно скопировать текст ошибки, которую выдает программа. Сообщение 1С часто указывает на конкретный объект, для которого не хватает прав (например, "Недостаточно прав для записи регистра накопления 'ТоварыНаСкладах'" или "Недостаточно прав для чтения справочника 'Контрагенты'"). Это сразу сузит круг поиска.
Журнал регистрации 1С – мощный инструмент для диагностики проблем. Мы посмотрим, как его использовать:
Администрирование → Поддержка и обслуживание → Журнал регистрации.Ошибка или Доступ.Вернитесь в Конфигуратор и еще раз внимательно проверьте состав новой роли, которую вы создали. Убедитесь, что для всех критически важных справочников, документов и регистров (которые мы выявили в разделе 2) установлены необходимые права (Чтение, Добавление, Изменение, Проведение).
Иногда даже незначительное упущение (например, забыли дать Чтение на справочник Валюты, если он используется) может привести к невозможности работы с документом.
Если вы программист 1С, самым точным инструментом будет Отладчик. Мы можем:
ПередЗаписью, ПриЗаписи или ОбработкаПроведения).Попробуйте создать максимально простой «Счет на оплату» с минимальным набором данных, используя только самые базовые справочники (один контрагент, одна позиция номенклатуры). Это поможет исключить влияние специфичных данных или настроек, которые могли бы привести к ошибке.
Таким образом, для успешной настройки прав доступа, позволяющих пользователю создавать и изменять всего один тип документа при общих правах на просмотр, критически важно не ограничиваться только правами на сам документ. Мы должны тщательно проанализировать и предоставить необходимые права на все связанные справочники и регистры, которые участвуют в процессе его обработки. Диагностика точных сообщений об ошибках и анализ журнала регистрации станут вашими незаменимыми помощниками на пути к успешному решению этой задачи.