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