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

Как автоматически у...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

документооборот 3.0.14.31. напиши пример обработки для случаев, когда при передаче документа ДокументыПредприятия на хранение (состояние Передача на хранение) (то есть все согласующие лица согласовали документ) автоматически проставлялись флаги "Подписан" для обеих сторон.



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

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

// Процедура установки флагов "Подписан"
Процедура УстановитьФлагиПодписан() Экспорт
    ЭтотОбъект.ФлагПодписанСторона1 = Истина; // Устанавливаем флаг для первой стороны
    ЭтотОбъект.ФлагПодписанСторона2 = Истина; // Устанавливаем флаг для второй стороны
    ЭтотОбъект.Записать(); // Сохраняем изменения
КонецПроцедуры

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

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



   
ОтветитьЦитата