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