Конкретик :: Блог об 1С Документооборот и 1С ERP

Автоматическое изменение срока задачи при обработке документа

Есть документ Служебная записка на командировку сотрудника, в этом документе есть реквизит Дата окончания командировки. Упрощённо процесс обработки можно представить так:

  1. Согласование записки — 1 день
  2. Ознакомление автора документа с результатом согласования — 1 день
  3. Подготовка отчета о командировке — Дата окончания командировки + 5 дней

Заказчик захотел, чтобы срок у задачи Подготовить отчет о командировке ставился бы не относительный, как предполагает типовая функциональность, а абсолютный + 5 дней от указанной в документе Даты окончания командировки.

Вот как можно реализовать данную задачу без конфигуратора, но с использованием скрипта в схеме обработки:

  1. Процесс нужно настроить в виде схемы
  2. В схему добавить скрипт
Документ = Параметры.ОбработкаОбъект.Владелец.Ссылка;
//Получить значение дополнительного реквизита документа Дата окончания командировки 

 ДРДатаОкончания = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("ИдентификаторДляФормул", "ДатаОкончанияКомандировки");

 Если УправлениеСвойствами.ПроверитьСвойствоУОбъекта(Документ, ДРДатаОкончания) Тогда

 ДатаОкончания = УправлениеСвойствами.ЗначениеСвойства(Документ, ДРДатаОкончания);

 КонецЕсли; 

 Запрос = Новый Запрос;
 // Установка значений параметров
 Запрос.УстановитьПараметр("Предмет", Документ);
 Запрос.УстановитьПараметр("ПомещеноВИсторию", Ложь);
 Запрос.УстановитьПараметр("ВидДействия", Справочники.ВидыДействий.НайтиПоКоду("000000003"));// Отбор вида действия, по задаче которого нужно поменять дату. В моем примере это Подготовить отчет по командировке (Справочники.ВидыДействий)

//Отбираем задачу из справочника Действия исполнения
 Запрос.Текст =
 "ВЫБРАТЬ
 |	ДействияИсполнения.Ссылка КАК Ссылка
 |ИЗ
 |	Справочник.ДействияИсполнения КАК ДействияИсполнения
 |ГДЕ
 |	ДействияИсполнения.Предмет = &Предмет
 |	И ДействияИсполнения.ВидДействия = &ВидДействия
 |	И ДействияИсполнения.ПомещеноВИсторию = &ПомещеноВИсторию";

 Выборка = Запрос.Выполнить().Выбрать();

 Пока Выборка.Следующий() Цикл
 ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
 ДокументОбъект.Участники[0].Срок = ДатаОкончания+5*24*60*60; // Прибавляем нужное количество времени к дате
 ДокументОбъект.ОбменДанными.Загрузка = Истина; 
 ДокументОбъект.записать();
КонецЦикла;

Один ответ для «Автоматическое изменение срока задачи при обработке документа»

  1. Аватар пользователя Ольга
    Ольга

    Добрый день.
    Данный скрипт меняет (добавляет) Срок только на вкладке документа «Обработка» , но не изменяет его в Документ.ДействиеЗадачи.ФормаСписка. Т.е. фактически у задачи (действия) срок не появляется.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *