При автоматизации бизнес-процессов часто возникает необходимость программного изменения или перепроведения документов, которые относятся к периодам, закрытым для обычных пользователей. В конфигурации 1С:Бухгалтерия 3.0, построенной на базе Библиотеки Стандартных Подсистем (БСП), механизм дат запрета изменения защищает данные от случайных правок. Рассмотрим, как грамотно обойти это ограничение, не нарушая целостность учетной системы.
Наиболее корректным способом «обмануть» проверку даты запрета при записи документа является передача специального флага через ДополнительныеСвойства объекта. Этот метод является стандартным для всех конфигураций на БСП. Суть метода заключается в том, что перед вызовом метода Записать мы сообщаем системе, что данная операция должна быть выполнена в обход текущих ограничений.
Рассмотрим, как реализовать это на практике:
// Получаем объект документа из ссылки
ОбъектДокумента = СсылкаНаДокумент.ПолучитьОбъект();
// Устанавливаем «волшебное слово» для прохождения проверки
ОбъектДокумента.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
// Выполняем запись с проведением
ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение);
Важно помнить, что работоспособность данного метода напрямую зависит от того, учитывает ли конкретный модуль объекта ОбработкаПроведения наличие этого свойства. В типовых конфигурациях 1С этот механизм внедрен повсеместно, однако при работе с нетиповыми или сильно измененными документами стоит предварительно проверить наличие соответствующей логики в процедурах записи.
Если вышеописанный метод не дает ожидаемого результата, рекомендуем углубиться в изучение служебных модулей БСП. В частности, ключевые алгоритмы находятся в общем модуле ДатыЗапретаИзмененияСлужебный. Метод ПропуститьПроверкуДатЗапрета является «сердцем» системы контроля. Если вы столкнулись с тем, что документ отказывается проводиться, проанализируйте этот модуль, чтобы понять, какие именно условия блокируют запись в вашем конкретном случае.
При поиске решения разработчики часто обращаются к менее «чистым» методам. Разберем, почему их использование требует осторожности:
ОбменДанными.Загрузка = Истина. Этот флаг отключает подписки на события и многие проверки целостности. Мы не рекомендуем использовать этот способ для проведения документов в рабочем режиме, так как движения по регистрам могут не сформироваться или записаться некорректно. Данный режим предназначен исключительно для процедур начальной загрузки данных.ИспользоватьДатыЗапретаИзменения. Это глобальное изменение, которое затрагивает весь сеанс работы. Если вы планируете его использовать, обязательно сбрасывайте значение обратно после завершения операции, иначе вы откроете «окно» для правок всем остальным процессам в этом сеансе.ДополнительныеСвойства.Для обеспечения стабильности и безопасности учета при программном проведении документов придерживайтесь следующих правил:
Записать убедитесь, что документ успешно проведен, если это критично для бизнес-логики.Попытка...Исключение, чтобы гарантировать возврат системы в штатный режим даже при возникновении ошибок в коде.Применяя метод ДополнительныеСвойства, вы обеспечиваете чистоту кода и следуете архитектурным стандартам фирмы «1С», что значительно упростит последующее обновление и сопровождение конфигурации.