Как исключить документ из проверки даты запрета редактирования в 1С:ERP?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет IT и автоматизация бизнеса
← На главную

При работе в 1С:ERP часто возникают задачи, требующие корректировки документов в закрытом периоде. Стандартный механизм Даты запрета изменения (ДЗИ), реализованный в БСП, надежно защищает данные, однако иногда требуется точечно разрешить редактирование конкретного документа. Рассмотрим, почему стандартные способы не всегда работают и как решить эту задачу правильно. Для гибкой настройки исключений без изменения программного кода можно использовать расширение для управления датами запрета изменений в разрезе метаданных и пользователей.

Почему не срабатывает «ПропуститьПроверкуЗапретаИзменения»?

Многие разработчики пытаются использовать ДополнительныеСвойства объекта для отключения контроля, добавляя свойство ПропуститьПроверкуЗапретаИзменения. Однако в современных версиях 1С:ERP, особенно в казначейских документах, проверка происходит не только при записи самого объекта, но и при записи наборов движений по регистрам накопления. Механизм БСП выполняет контроль непосредственно перед записью набора записей в базу данных, и в этот момент контекст ДополнительныхСвойств документа может быть утрачен или проигнорирован системой.

Решение проблемы через изменение общего модуля

Если документ «Заявка на расходование денежных средств» блокируется из-за движений по регистрам (например, РасчетыПоФинансовымИнструментам), эффективным способом является принудительный пропуск проверки в соответствующем модуле БСП.

Для реализации этого метода необходимо внести изменения в процедуру ПроверитьДатуЗапретаПоТаблицеИзменений, которая отвечает за проверку соответствия даты документа установленному запрету. Ниже приведен пример того, как программно исключить конкретный тип документа:


Процедура ПроверитьДатуЗапретаПоТаблицеИзменений(Механизмы, Документ, МенеджерВременныхТаблиц, Отказ) Экспорт
    
    Если ТипЗнч(Документ) = Тип("ДокументОбъект.ЗаявкаНаРасходованиеДенежныхСредств") Тогда
        Возврат;    
    КонецЕсли; 
    
    // Далее следует стандартный код проверки БСП...
КонецПроцедуры

Рекомендации по реализации

Хотя предложенный код решает поставленную задачу, важно учитывать следующие рекомендации при внедрении:

  1. Используйте расширения: Чтобы не снимать конфигурацию с поддержки и облегчить будущие обновления, реализуйте эту логику через расширение конфигурации. Переопределите процедуру ПроверитьДатуЗапретаПоТаблицеИзменений в расширении.
  2. Анализ последствий: Полное исключение документа из проверки ДЗИ позволяет пользователям изменять исторические данные, которые могли быть уже закрыты в отчетности. Убедитесь, что финансисты подтверждают необходимость такой корректировки.
  3. Анализ движений: Если блокировка происходит из-за специфических регистров, проверьте, действительно ли требуется править код. Возможно, целесообразнее пересмотреть бизнес-процесс и использовать документы корректировки в текущем периоде вместо изменения прошлых записей.

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

← На главную