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