При работе в 1С Розница 2.2 часто возникает необходимость ограничить возможность редактирования уже проведенных документов для определенных групп пользователей, например, для кассиров или менеджеров по продажам, при этом сохраняя для них возможность создавать новые документы. Это критично важно для обеспечения целостности данных, предотвращения случайных или преднамеренных изменений, которые могут исказить учет.
Рассмотрим различные подходы к решению этой задачи, от типовых механизмов платформы 1С до более гибких решений с использованием регламентных заданий и расширений.
Одним из самых распространенных и типовых механизмов в 1С является "Дата запрета изменения данных". Этот механизм позволяет установить дату, до которой или включительно с которой запрещено редактировать любые данные в информационной базе.
Разберем подробнее, как мы можем использовать этот механизм:
Администрирование -> Поддержка и обслуживание -> Дата запрета изменения данных.18.10.2023. Все документы, датированные этой датой или ранее, будут заблокированы для изменения. Однако, как отмечают пользователи, это требует ежедневного ручного переноса даты, что крайне неудобно.20.10.2023, запрет будет установлен на 19.10.2023 и ранее. Документы, созданные 20.10.2023, можно будет редактировать.Для случаев, когда нам нужна более сложная логика установки даты запрета, например, не просто "предыдущий день", а "текущий день минус N дней" (например, минус 2 или 3 дня, как было предложено в обсуждении), ручное передвижение даты становится проблемой. В этом случае мы можем автоматизировать процесс с помощью регламентных заданий.
Рассмотрим шаги по автоматизации:
ТекущаяДата() - 2 Дня) и установить ее. Для этого мы можем использовать функционал общих модулей, отвечающих за работу с датой запрета. В конфигурациях на управляемых формах часто используется регистр сведений ДатыЗапретаИзменения или аналогичный.
// Предполагаем, что у нас есть функция, которая устанавливает дату запрета
// в зависимости от конфигурации и версии платформы, это может быть вызов общего модуля
// или работа напрямую с регистром.
Функция УстановитьДатуЗапрета(НоваяДатаЗапрета)
// Пример для работы с регистром сведений 'ДатыЗапретаИзменения' (может отличаться)
РегистрДатыЗапрета = РегистрыСведений.ДатыЗапретаИзменения;
// Получаем существующую запись (или создаем новую, если ее нет)
ЗаписьДатыЗапрета = РегистрДатыЗапрета.СоздатьНаборЗаписей();
ЗаписьДатыЗапрета.Прочитать();
Если ЗаписьДатыЗапрета.Количество() > 0 Тогда
ЗаписьДатыЗапрета[0].ДатаЗапрета = НоваяДатаЗапрета;
Иначе
НоваяЗапись = ЗаписьДатыЗапрета.Добавить();
НоваяЗапись.ДатаЗапрета = НоваяДатаЗапрета;
// Также могут быть поля типа "ВидЗапрета" или "ГраницаЗапретаПоПользователям"
КонецЕсли;
Попытка
ЗаписьДатыЗапрета.Записать();
Возврат Истина;
Исключение Как Искл
Сообщить("Ошибка при установке даты запрета: " + Искл.Описание, СтатусСообщения.Ошибка);
Возврат Ложь;
КонецПопытки;
КонецФункции
// В теле регламентного задания или обработки:
НоваяДатаЗапрета = ТекущаяДата() - 2 * 86400; // Минус 2 дня в секундах
// Или так: НоваяДатаЗапрета = ДобавитьКДате(ТекущаяДата(), День, -2);
Если УстановитьДатуЗапрета(НоваяДатаЗапрета) Тогда
Сообщить("Дата запрета изменена на " + Формат(НоваяДатаЗапрета, "ДФ=dd.MM.yyyy"), СтатусСообщения.Информация);
КонецЕсли;
Администрирование -> Поддержка и обслуживание -> Регламентные задания.Такой подход обеспечивает гибкость и автоматизацию, позволяя устанавливать дату запрета по любой требуемой логике, не требуя ручных действий.
Одним из наиболее эффективных и современных способов запрета редактирования проведенных документов является использование специализированного права в ролях пользователя, появившегося в последних версиях платформы 1С:Предприятие 8.3. Это право называется Интерактивное изменение проведенных.
Рассмотрим, как это работает:
Администрирование -> Настройки пользователей и прав -> Профили групп доступа. Откройте нужный профиль (или создайте новый), который назначен вашим сотрудникам, для которых мы хотим установить запрет. Далее, в списке ролей, которые входят в этот профиль, или при редактировании конкретной роли, мы найдем право Интерактивное изменение проведенных.Интерактивного изменения проведенных, существуют и другие права, такие как Проведение, Отмена проведения, Интерактивное проведение и Интерактивная отмена проведения, которые также влияют на работу с проведенными документами. Мы должны убедиться, что они настроены соответствующим образом, чтобы не создавать конфликтов или не давать излишних разрешений.Этот способ является наиболее чистым и эффективным, поскольку он использует встроенные механизмы разграничения прав платформы, не требуя никаких доработок кода или внешних обработок. Мы просто настраиваем существующие роли и профили доступа.
Если нам требуется более сложная логика, чем предоставляют типовые средства, но мы не хотим снимать конфигурацию с поддержки или изменять ее напрямую, мы можем использовать расширения конфигурации. Разработчики 1С и сторонние компании предлагают готовые расширения, которые позволяют гибко управлять запретом редактирования проведенных документов.
Рассмотрим возможности, которые могут предоставлять такие расширения:
Реализация товаров и услуг, Приходный кассовый ордер), для которых будет действовать запрет.При выборе расширения мы должны убедиться, что оно совместимо с нашей версией 1С Розница 2.2 и соответствует нашим требованиям безопасности и функциональности.
В некоторых организациях применяется правило, что проведенный документ редактировать нельзя, а только непроведенный документ можно менять. Этот подход реализуется через грамотную настройку прав и ролей пользователей.
Рассмотрим, как мы можем настроить это:
Интерактивное изменение проведенных, которое является ключевым для этой стратегии. Убирая это право, мы запрещаем любые изменения проведенных документов.Эта стратегия является частью общего подхода к управлению данными и их целостностью, где статус документа (проведен/не проведен) определяет возможности пользователя по его изменению.
При внедрении любых ограничений на редактирование проведенных документов нам необходимо помнить о следующих критически важных моментах:
Применяя эти методы и учитывая важные аспекты, мы сможем эффективно запретить редактирование проведенных документов в 1С Розница 2.2 для определенных сотрудников, обеспечив при этом корректность и надежность учета.