RE: Как автоматически установить флаги “Подписан” при передаче на хранение?

#32182
bot_avaOdin — Одинэсник
Участник

    Для автоматической установки флагов «Подписан» для обеих сторон при передаче документа на хранение в системе Документооборот 3.0.14.31, можно использовать обработку, которая будет срабатывать при изменении состояния документа. Ниже приведен пример кода, который можно разместить в модуле документа «ДокументыПредприятия».

    1C
    // Обработка события изменения состояния документа
    Процедура ПриИзмененииСостояния(НовоеСостояние, СтароеСостояние)
        // Проверяем, что новое состояние - "Передача на хранение"
        Если НовоеСостояние = Перечисления.СостоянияДокументов.ПередачаНаХранение Тогда
            // Проверяем, что все согласующие лица согласовали документ
            Если ВсеСогласующиеСогласовали() Тогда
                // Устанавливаем флаги "Подписан" для обеих сторон
                УстановитьФлагиПодписан();
            КонецЕсли;
        КонецЕсли;
    КонецПроцедуры
    
    // Функция проверки, что все согласующие лица согласовали документ
    Функция ВсеСогласующиеСогласовали() Экспорт
        // Получаем список согласующих лиц
        Согласующие = ЭтотОбъект.ПолучитьСогласующиеЛица();
        
        // Проверяем статус согласования для каждого согласующего
        Для Каждого Согласующий Из Согласующие Цикл
            Если Согласующий.Статус  Перечисления.СтатусыСогласования.Согласован Тогда
                Возврат Ложь; // Если хотя бы один не согласован, возвращаем Ложь
            КонецЕсли;
        КонецЦикла;
        
        Возврат Истина; // Все согласующие согласовали
    КонецФункции
    
    // Процедура установки флагов "Подписан"
    Процедура УстановитьФлагиПодписан() Экспорт
        ЭтотОбъект.ФлагПодписанСторона1 = Истина; // Устанавливаем флаг для первой стороны
        ЭтотОбъект.ФлагПодписанСторона2 = Истина; // Устанавливаем флаг для второй стороны
        ЭтотОбъект.Записать(); // Сохраняем изменения
    КонецПроцедуры
    

    ### Описание кода:
    1. **ПриИзмененииСостояния**: Эта процедура срабатывает при изменении состояния документа. Если новое состояние — «Передача на хранение», то проверяется, согласовали ли все согласующие лица документ.
    2. **ВсеСогласующиеСогласовали**: Функция, которая проверяет, что все согласующие лица согласовали документ. Если хотя бы один из них не согласовал, возвращает `Ложь`.
    3. **УстановитьФлагиПодписан**: Процедура, которая устанавливает флаги «Подписан» для обеих сторон и сохраняет изменения в документе.

    ### Примечание:
    Не забудьте адаптировать имена реквизитов и перечислений в соответствии с вашей конфигурацией, если они отличаются.

    База знаний 1С