К статье
Практический материал

Администрирование · 12 мин

Как запретить отмену проведения документа в 1С

Как запретить отмену проведения документа в 1С: настройка прав, ролей, дат запрета редактирования и кода. Пошаговые инструкции для типовых конфигураций.

Отмена проведения документа — одна из самых рискованных операций в учётной базе 1С. Случайное или неправомерное распроведение накладной, счёта-фактуры или кассового документа приводит к разъезду остатков, искажению отчётности и спорам с контрагентами. Поэтому задача «как запретить отмену проведения документа» возникает у администраторов и разработчиков 1С регулярно.

Готовой кнопки «запретить распроведение» в типовых конфигурациях нет, но задача решается несколькими способами: настройкой прав доступа и ролей, установкой дат запрета редактирования, доработкой кода в обработчиках документа и использованием расширений. Выбор зависит от того, кого нужно ограничить — всех пользователей, отдельную группу или конкретный тип документов.

Ниже разобраны рабочие варианты для типовых конфигураций на управляемых формах (Бухгалтерия предприятия, Управление торговлей, ERP) и для самописных решений, а также типичные ошибки, из-за которых запрет не срабатывает.

Почему стоит ограничить отмену проведения

Отмена проведения удаляет движения документа по регистрам. Если документ был основанием для других операций — оплат, отгрузок, расчёта себестоимости — после распроведения цепочка учёта ломается. Восстановить её вручную бывает сложно, особенно если изменения заметили спустя дни или недели.

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

Третий аспект — разграничение ответственности. Менеджер по продажам не должен иметь возможность распровести реализацию, а кладовщик — складской ордер. Запрет отмены проведения здесь работает как элемент внутреннего контроля.

Способ 1. Запрет через права и роли

Основной и самый надёжный метод — убрать у пользователей соответствующее право. В конфигураторе у каждого документа есть набор прав, среди которых «Отмена проведения» и «Интерактивная отмена проведения». Первое разрешает операцию программно и интерактивно, второе — только действиями пользователя в интерфейсе.

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

Настройка запрета через конфигуратор
  1. 1
    Откройте конфигуратор и найдите нужный вид документа в дереве объектов.
  2. 2
    Откройте роль, назначенную пользователям, в разделе «Общие → Роли».
  3. 3
    Снимите флажки «Отмена проведения» и «Интерактивная отмена проведения» для выбранного документа.
  4. 4
    Обновите конфигурацию базы данных (F7) и проверьте, что пользователи перезапустили сеанс.
  5. 5
    Войдите под тестовым пользователем и попробуйте распровести документ — кнопка должна быть недоступна.

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

Способ 2. Даты запрета редактирования

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

Настройка выполняется в разделе «Администрирование» → «Поддержка и обслуживание» → «Даты запрета изменения данных». Можно задать общую дату для всех пользователей или индивидуальные даты для конкретных сотрудников и разделов учёта. Например, бухгалтерию закрыть по квартал, а склад — по прошлый месяц.

Для полноты контроля включите также запрет загрузки данных прошлых периодов через обмены — отдельная настройка «Даты запрета загрузки данных». Иначе распроведение может прийти из другой базы через синхронизацию, минуя все интерактивные ограничения.

Способ 3. Программный запрет в коде документа

Когда нужны гибкие условия — например, запретить распроведение только утверждённых документов или документов с суммой выше порога — используется код. Основная точка вмешательства: обработчик «ОбработкаПроведения» в модуле объекта документа и подписка на событие.

Отмена проведения — это тоже вызов проведения с режимом «ОтменаПроведения». Внутри обработчика можно проверить условие и отказать в операции:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Если РежимПроведения = РежимПроведенияДокумента.ОтменаПроведения Тогда

Если НЕ РольДоступна("ПолныеПрава") Тогда

Отказ = Истина;

ВызватьИсключение "Отмена проведения документа запрещена";

КонецЕсли;

КонецЕсли;

КонецПроцедуры

Более корректное место для проверки — обработчик «ПередЗаписью» или подписка на событие, поскольку там доступен анализ состояния документа до начала транзакции. Однако для блокировки именно распроведения проверка в «ОбработкаПроведения» работает надёжно: при Отказ = Истина движения не удаляются, а пользователь получает сообщение об ошибке.

Прямое изменение типовой конфигурации усложняет обновление. Поэтому рекомендуемый подход — расширение конфигурации: обработчик добавляется через аннотацию &Вместо, &После или &ИзменениеИКонтроль, и типовая база остаётся на поддержке.

bsl
&Вместо("ОбработкаПроведения")
Процедура Расш_ОбработкаПроведения(Отказ, РежимПроведения)
    Если РежимПроведения = РежимПроведенияДокумента.ОтменаПроведения
        И НЕ РольДоступна("ПолныеПрава") Тогда
        Отказ = Истина;
        ВызватьИсключение "Отмена проведения запрещена. Обратитесь к администратору.";
    КонецЕсли;
    ПродолжитьВызов(Отказ, РежимПроведения);
КонецПроцедуры

Сравнение способов и выбор подходящего

Универсального варианта нет: у каждого метода своя область применения. Ориентируйтесь на то, кого ограничиваете и какие операции должны остаться доступными.

Сравнение вариантов

Права и роли

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

Даты запрета редактирования

Идеальны для закрытия отчётных периодов без доработок. Ограничение: блокируют все изменения, а не только распроведение.

Код в обработчиках

Даёт любые условия: статус документа, сумма, подразделение. Ограничение: требует разработки и тестирования, усложняет обновление без расширения.

Расширение конфигурации

Те же возможности, что у кода, но типовая конфигурация остаётся на поддержке. Ограничение: не все обработчики доступны для переопределения в старых версиях платформы.

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

Маршрут решения

Как выбрать действие

Нужно закрыть прошлый отчётный период для всех пользователейУстановите дату запрета редактирования в разделе «Администрирование»
Менеджеры не должны распроводить текущие документы продажСоздайте профиль групп доступа без права «Интерактивная отмена проведения»
Запрет зависит от статуса или суммы документаРеализуйте проверку в расширении через обработчик ОбработкаПроведения
Распроведение приходит через обмен даннымиНастройте даты запрета загрузки данных и проверьте права пользователя обмена

Проверка результата и типичные ошибки

После настройки запрет нужно проверить под учётной записью реального пользователя, а не под администратором. Попытайтесь распровести документ из формы списка и из формы документа, а также через групповое изменение реквизитов — все пути должны быть закрыты.

Контрольные точки

Как проверить результат

Кнопка «Провести / Отменить проведение» в форме документа
Норма

Команда недоступна или выдаёт сообщение о нарушении прав

Тревожный признак

Документ спокойно распроводится

Контекстное меню в списке документов
Норма

Пункт «Отменить проведение» отсутствует или отказ при выполнении

Тревожный признак

Распроведение выполняется из списка

Журнал регистрации после теста
Норма

Зафиксирован отказ в доступе или ошибка проведения

Тревожный признак

Запись об успешной отмене проведения

Обмен данными
Норма

Распроведение из другой базы отклонено датой запрета загрузки

Тревожный признак

Документы распроводятся после синхронизации

Отдельно проверьте сценарий «пометка удаления»: пометить на удаление проведённый документ нельзя без отмены проведения, но если у пользователя есть право интерактивного удаления, цепочка действий может обойти ваш запрет. Согласуйте права на удаление с правами на распроведение.

Типичные ошибки
01
Запрет настроен в одной роли, но у пользователя есть вторая роль с полными правами — права суммируются, запрет не работает.
02
Снято только «Интерактивная отмена проведения», но оставлено право «Отмена проведения» — распроведение возможно программно и через обработки.
03
Настроена дата запрета редактирования, но не дата запрета загрузки — распроведение приходит через обмен.
04
Код написан в типовой конфигурации без расширения — после обновления доработка стёрлась.
05
Проверка выполнялась под администратором, у которого все права — у реальных пользователей запрет оказался настроен иначе.

Ограничения и границы самостоятельной настройки

Полностью заблокировать отмену проведения для пользователя с ролью «Полные права» или «Администратор системы» штатными средствами невозможно — эти роли обходят большинство проверок. Для контроля действий администраторов используйте журнал регистрации и аудит доступа к данным.

Учитывайте, что жёсткий запрет распроведения усложняет исправление ошибок. Рекомендуемая практика — не запрещать операцию совсем, а сосредоточить её у ограниченного круга сотрудников (например, главного бухгалтера), которые распроводят документы по служебной заявке. Так сохраняется и контроль, и возможность корректного исправления учёта.

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

Итог

Что важно запомнить

Базовый запрет отмены проведения делается через роли и профили групп доступа, закрытие периодов — через даты запрета редактирования и загрузки, а гибкие условия — через расширение с проверкой в ОбработкаПроведения. Всегда проверяйте результат под учётной записью обычного пользователя и помните, что права в 1С суммируются.

Частые вопросы

Можно ли запретить отмену проведения только для одного вида документов?

Да. В ролях и профилях групп доступа права настраиваются отдельно для каждого вида документов. Снимите право «Интерактивная отмена проведения» только у нужного объекта, например у «Реализации товаров и услуг», оставив остальные документы без изменений.

Почему пользователь всё равно может распровести документ, хотя право снято?

Наиболее вероятные причины: у пользователя назначена вторая роль или профиль с полными правами, либо снято только интерактивное право, а программное осталось. Проверьте полный список ролей пользователя в его карточке и оба права — «Отмена проведения» и «Интерактивная отмена проведения».

Запретит ли дата запрета редактирования отмену проведения старого документа?

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

Как отследить, кто распровёл документ, если запрет ещё не настроен?

Откройте журнал регистрации («Администрирование» → «Обслуживание» → «Журнал регистрации») и отфильтруйте события по данным документа. Отмена проведения фиксируется как изменение данных с указанием пользователя и времени. Для регулярного контроля настройте аудит доступа к данным.

Можно ли разрешить распроведение только руководителю?

Да, это реализуется двумя путями: отдельной ролью с правом отмены проведения, назначенной только руководителю, или проверкой в коде — например, через РольДоступна("ПолныеПрава") или сравнение текущего пользователя с заданным списком. Первый вариант проще и не требует доработок.

Что делать, если распроведение приходит через синхронизацию с другой базой?

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