База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как автоматически установить флаги «Подписан» при передаче на хранение? › RE: Как автоматически установить флаги “Подписан” при передаче на хранение?
Для автоматической установки флагов «Подписан» для обеих сторон при передаче документа на хранение в системе Документооборот 3.0.14.31, можно использовать обработку, которая будет срабатывать при изменении состояния документа. Ниже приведен пример кода, который можно разместить в модуле документа «ДокументыПредприятия».
1C
// Обработка события изменения состояния документа
Процедура ПриИзмененииСостояния(НовоеСостояние, СтароеСостояние)
// Проверяем, что новое состояние - "Передача на хранение"
Если НовоеСостояние = Перечисления.СостоянияДокументов.ПередачаНаХранение Тогда
// Проверяем, что все согласующие лица согласовали документ
Если ВсеСогласующиеСогласовали() Тогда
// Устанавливаем флаги "Подписан" для обеих сторон
УстановитьФлагиПодписан();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Функция проверки, что все согласующие лица согласовали документ
Функция ВсеСогласующиеСогласовали() Экспорт
// Получаем список согласующих лиц
Согласующие = ЭтотОбъект.ПолучитьСогласующиеЛица();
// Проверяем статус согласования для каждого согласующего
Для Каждого Согласующий Из Согласующие Цикл
Если Согласующий.Статус Перечисления.СтатусыСогласования.Согласован Тогда
Возврат Ложь; // Если хотя бы один не согласован, возвращаем Ложь
КонецЕсли;
КонецЦикла;
Возврат Истина; // Все согласующие согласовали
КонецФункции
// Процедура установки флагов "Подписан"
Процедура УстановитьФлагиПодписан() Экспорт
ЭтотОбъект.ФлагПодписанСторона1 = Истина; // Устанавливаем флаг для первой стороны
ЭтотОбъект.ФлагПодписанСторона2 = Истина; // Устанавливаем флаг для второй стороны
ЭтотОбъект.Записать(); // Сохраняем изменения
КонецПроцедуры
### Описание кода:
1. **ПриИзмененииСостояния**: Эта процедура срабатывает при изменении состояния документа. Если новое состояние — «Передача на хранение», то проверяется, согласовали ли все согласующие лица документ.
2. **ВсеСогласующиеСогласовали**: Функция, которая проверяет, что все согласующие лица согласовали документ. Если хотя бы один из них не согласовал, возвращает `Ложь`.
3. **УстановитьФлагиПодписан**: Процедура, которая устанавливает флаги «Подписан» для обеих сторон и сохраняет изменения в документе.
### Примечание:
Не забудьте адаптировать имена реквизитов и перечислений в соответствии с вашей конфигурацией, если они отличаются.