Администрирование · 8 мин
Как в 1С запретить копирование документов
Как запретить копирование документов в 1С: настройка ролей и прав доступа, подписки на события, проверка результата и типичные ошибки администраторов.
Копирование документов в 1С — удобный механизм, но в ряде случаев он создаёт риски: сотрудник может по ошибке продублировать реализацию или платёжное поручение, скопировать документ прошлого периода в текущий или создать «теневой» документ на основании чужого. Запретить копирование полностью штатной галочкой в типовых конфигурациях нельзя — потребуется настройка прав доступа, подписка на событие или доработка конфигурации.
Выбор способа зависит от задачи. Если нужно запретить копирование конкретного вида документов для отдельных пользователей — достаточно настроить роли. Если запрет должен быть абсолютным для всех — потребуется подписка на событие «При копировании» или расширение конфигурации. Ниже разобраны все рабочие варианты с условиями их применения.
Почему штатной настройки «запретить копирование» нет
В типовых конфигурациях 1С (Бухгалтерия, Управление торговлей, ERP) нет отдельного права «Копирование». Платформа рассматривает копирование как создание нового объекта: при нажатии F9 или кнопки «Скопировать» программа фактически инициирует добавление документа с предзаполненными реквизитами. Поэтому копирование управляется теми же правами, что и добавление.
Из этого следует важное ограничение: если у пользователя есть право создавать документы данного вида, технически он может и копировать их. Запретить только копирование, оставив возможность создавать документы вручную, стандартными ролями невозможно — нужен программный механизм.
Способ 1. Ограничение прав через роли
Самый простой вариант подходит, когда пользователю вообще не нужно создавать документы определённого вида. Откройте конфигуратор, найдите роль, назначенную пользователю, и снимите права «Добавление» и «Интерактивное добавление» для нужного вида документов. После этого кнопка «Скопировать» станет недоступной вместе с кнопкой «Создать».
В типовых конфигурациях с профилями групп доступа (БСП) работа ведётся через раздел «Администрирование — Настройки пользователей и прав — Профили групп доступа». Найдите профиль пользователя и проверьте, какие роли в него входят. Изменять типовой профиль не рекомендуется — создайте копию профиля и скорректируйте состав ролей в ней.
Дополнительно можно ограничить доступ на уровне записей (RLS): например, запретить работу с документами чужих организаций или прошлых периодов. Это не отключит копирование как таковое, но не позволит скопировать документ, к которому у пользователя нет доступа.
Способ 2. Подписка на событие «При копировании»
Точечный запрет копирования реализуется через подписку на событие. В конфигураторе создайте подписку на событие для нужного вида документов, выберите обработчик события «ПриКопировании» и в модуле установите отказ от операции. При попытке копирования пользователь получит предупреждение, а новый объект создан не будет.
Пример кода обработчика:
Процедура ЗапретКопированияДокументовПриКопировании(Источник, Отказ) Экспорт
Отказ = Истина;
КонецПроцедуры
Можно сделать запрет гибким: проверять роль пользователя, дату документа-источника или организацию. Например, запрещать копирование только документов закрытого периода или только для пользователей без роли «Полные права». Условие добавляется внутри обработчика до установки отказа.
Способ 3. Расширение конфигурации без снятия с поддержки
Если конфигурация находится на поддержке, правильнее реализовать запрет через расширение. В расширении можно добавить собственную подписку на событие «ПриКопировании» для нужных объектов — механизм идентичен описанному выше, но типовая конфигурация не изменяется и обновляется штатно.
Порядок действий: в конфигураторе откройте «Конфигурация — Расширения конфигурации», создайте новое расширение, добавьте в него подписку на событие и общий модуль с обработчиком. После записи и обновления конфигурации базы данных расширение начнёт действовать для всех пользователей.
- 1Создайте резервную копию информационной базы
- 2В конфигураторе создайте новое расширение конфигурации
- 3Добавьте в расширение общий модуль с обработчиком, устанавливающим Отказ = Истина
- 4Создайте подписку на событие ПриКопировании для нужного вида документов
- 5Запишите расширение и обновите конфигурацию базы данных
- 6Проверьте запрет под тестовым пользователем
Способ 4. Запрет копирования через запрет изменения закрытого периода
Частая причина, по которой требуется запретить копирование, — защита закрытых периодов. Здесь помогает штатный механизм «Даты запрета изменения данных» в разделе «Администрирование — Поддержка и обслуживание». Если документ-источник относится к закрытому периоду, пользователь без специальных прав не сможет ни изменить его, ни создать на его основе документ в запрещённой дате.
Учтите ограничение: дата запрета не мешает скопировать старый документ с текущей датой. Если критично именно само действие копирования, этот способ не подходит — используйте подписку на событие.
Сравнение вариантов запрета
Подходит, если пользователю вообще не нужно создавать документы этого вида. Не позволяет запретить только копирование.
Точечный запрет копирования с гибкими условиями. Требует изменения конфигурации и усложняет обновление.
Тот же эффект, что у подписки, но без снятия с поддержки. Оптимальный вариант для типовых решений.
Защищает закрытые периоды штатными средствами, но не запрещает копирование как действие.
Как проверить, что запрет работает
Проверку выполняйте под учётной записью реального пользователя, а не под администратором: полные права обходят большинство ограничений. Откройте список документов, выделите документ и нажмите F9 или кнопку «Скопировать». При корректной настройке появится предупреждение о запрете, а новый документ не будет создан и не попадёт в журнал.
Проверьте оба сценария: копирование из формы списка и копирование из открытой формы документа. Также убедитесь, что обычное создание документа (если оно разрешено) по-прежнему работает, — избыточный запрет в обработчике может сломать ввод новых документов.
Как проверить результат
Появляется предупреждение, документ не создаётся
Открывается форма нового документа с заполненными реквизитами
Действие блокируется с сообщением
Документ копируется без ограничений
Кнопка «Создать» работает штатно
Создание тоже заблокировано — условие в обработчике избыточно
Типичные ошибки при настройке запрета
Отдельная ошибка — игнорирование программного копирования. Подписка «ПриКопировании» срабатывает и при вызове метода Скопировать() из кода. Если в конфигурации есть обмены или обработки, создающие документы копированием, безусловный запрет может их сломать. Добавляйте в обработчик проверку привилегированного режима или параметров сеанса.
FAQ
Можно ли запретить копирование только для одного пользователя?
Да. В обработчике подписки на событие добавьте проверку текущего пользователя или его роли и устанавливайте отказ только при выполнении условия. Альтернатива — отдельный профиль доступа, если достаточно запрета на создание документов.
Запретит ли дата запрета редактирования копирование старых документов?
Нет. Дата запрета блокирует изменение и создание документов в закрытом периоде, но пользователь может скопировать старый документ с текущей датой. Для полного запрета нужна подписка на событие «ПриКопировании».
Что делать, если после доработки перестали работать обмены данными?
Проверьте, не срабатывает ли подписка при программном копировании объектов в обмене. Добавьте в обработчик условие, пропускающее вызовы из привилегированного режима или при установленном параметре обмена данными у источника.
Можно ли обойтись без конфигуратора и доработок?
Частично. Через профили групп доступа можно снять право интерактивного добавления — тогда копирование тоже станет недоступно, но вместе с ручным созданием документов. Запретить только копирование без доработки или расширения нельзя.
Сохранится ли запрет после обновления конфигурации?
Если запрет реализован расширением — да, расширения не затрагиваются обновлением. Если подписка добавлена в основную конфигурацию, при обновлении её нужно будет перенести вручную через сравнение и объединение.
Что важно запомнить
Штатного права «запрет копирования» в 1С нет: копирование управляется правом на добавление. Точечный запрет реализуется подпиской на событие «ПриКопировании» с отказом, оптимально — через расширение конфигурации. Проверку всегда выполняйте под учётной записью обычного пользователя.