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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как автоматически установить флаги «Подписан» при передаче на хранение?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32181
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С