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