![]() |
|
1C:Документооборот - программная установка даты контроля ↓ (Волшебник 01.03.2024 10:37) |
☑ | ||
---|---|---|---|---|
0
Trezvy
01.03.24
✎
10:39
|
На форме процесса исполнения требуется заполнять дату контроля в зависимости от значения даты исполнения: дата контроля должна принимать значение КонецДня от даты исполнения.
Делаю в общем модуле СрокиИсполненияПроцессовКлиентСервер, в функции ЗаполнитьПредставлениеСроковИсполненияВФорме(Форма), но как-то кривовато получается. В поле даты контроля не поле СрокОбработкиРезультатов, а СрокОбработкиРезультатовПредставление. Из-за этого проблемы. Может у кого-то есть более изящное решение? Процедура ЗаполнитьПредставлениеСроковИсполненияВФормеПроцедура ЗаполнитьПредставлениеСроковИсполненияВФорме(Форма) Экспорт Если Форма.Объект.Свойство("Исполнители") Тогда ЗаполнитьПредставлениеСроковВТаблицеИсполнителей( Форма.Объект.Исполнители, Форма.ИспользоватьДатуИВремяВСрокахЗадач, ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков)); КонецЕсли; Если Форма.Объект.Свойство("Исполнитель") Тогда Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) Тогда СрокИсполнения = Форма.Объект.СрокИсполнения; Иначе СрокИсполнения = Дата(1,1,1); КонецЕсли; ЗаполнитьПредставлениеСроковУчастника( Форма.СрокИсполненияПредставление, СрокИсполнения, Форма.Объект.СрокИсполненияДни, Форма.Объект.СрокИсполненияЧасы, Форма.Объект.СрокИсполненияМинуты, Форма.Объект.ВариантУстановкиСрокаИсполнения, Форма.ИспользоватьДатуИВремяВСрокахЗадач); КонецЕсли; Если Форма.Объект.Свойство("СрокОбработкиРезультатов") Тогда // +++++++++++++++++++++++++++++++++++++++++++++++++++ // // было // //Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) Тогда // СрокОбработкиРезультатов = Форма.Объект.СрокОбработкиРезультатов; //Иначе // СрокОбработкиРезультатов = Дата(1,1,1); //КонецЕсли; // // // для БП исполнения установим в сроке проверки дату = дате исполнения и время в 23:59:59 Если Форма.ИмяФормы = "БизнесПроцесс.Исполнение.Форма.ФормаБизнесПроцесса" Тогда Если Форма.СрокПроверкиВручную = Ложь И Форма.Объект.Свойство("Исполнители") И Форма.Объект.Исполнители.Количество()>0 Тогда // перебор всех исполнителей для определения максимального срока // начальная максимальная дата - пустая МаксимальныйСрок = Дата(1,1,1); // все исполнители формы РеквизитИсполнители = Форма.Объект.Исполнители; // цикл по исполнителям Для Каждого СтрИсполнитель Из РеквизитИсполнители Цикл Если ЗначениеЗаполнено(СтрИсполнитель.СрокИсполнения) Тогда ТекущийСрокИсполнения = СтрИсполнитель.СрокИсполнения; Иначе ТекущийСрокИсполнения = Дата(1,1,1); КонецЕсли; // если срок исполнения у очередного исполнителя больше текущего максимального Если ТекущийСрокИсполнения > МаксимальныйСрок Тогда // делаем его максимальным сроком МаксимальныйСрок = ТекущийСрокИсполнения; КонецЕсли; КонецЦикла; //Если ЗначениеЗаполнено(Форма.Объект.Исполнители[0].СрокИсполнения) Тогда Если ЗначениеЗаполнено(МаксимальныйСрок) Тогда // срок проверки устанавливаем на конец дня срока исполнения Форма.Объект.СрокОбработкиРезультатов = КонецДня(МаксимальныйСрок); СрокОбработкиРезультатов = КонецДня(МаксимальныйСрок); //////////// Форма.СрокОбработкиРезультатовПредставление = КонецДня(МаксимальныйСрок); ///////////// Иначе // Форма.Объект.СрокОбработкиРезультатов = Дата(1,1,1); СрокОбработкиРезультатов = Дата(1,1,1); КонецЕсли; // для сохранение установленного значения срока проверки //Если ЗначениеЗаполнено(Форма.Объект.СрокОбработкиРезультатовПредставление) Тогда //И Форма.Объект.СрокОбработкиРезультатов <> СрокОбработкиРезультатов Тогда // СрокОбработкиРезультатов = Форма.Объект.СрокОбработкиРезультатов; //КонецЕсли Иначе Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) Тогда СрокОбработкиРезультатов = Форма.Объект.СрокОбработкиРезультатов; Иначе СрокОбработкиРезультатов = Дата(1,1,1); КонецЕсли; КонецЕсли; Иначе // для остальных БП порядок установки срока исполнения остаётся прежним Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) Тогда СрокОбработкиРезультатов = Форма.Объект.СрокОбработкиРезультатов; Иначе СрокОбработкиРезультатов = Дата(1,1,1); КонецЕсли; КонецЕсли; // --------------------------------------------------- 1С:Документооборот 2.1 |
|||
1
Волшебник
29.02.24
✎
14:55
|
много бесполезных комментариев, а вот конца процедуры так и нет
|
|||
2
Trezvy
01.03.24
✎
10:39
|
Процедура ЗаполнитьПредставлениеСроковИсполненияВФорме// Заполняет представление сроков исполнения в карточке процесса/шаблона // // Параметры: // Форма - ФормаКлиентскогоПриложения - форма процесса // Процедура ЗаполнитьПредставлениеСроковИсполненияВФорме(Форма) Экспорт Если Форма.Объект.Свойство("Исполнители") Тогда ЗаполнитьПредставлениеСроковВТаблицеИсполнителей( Форма.Объект.Исполнители, Форма.ИспользоватьДатуИВремяВСрокахЗадач, ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков)); КонецЕсли; Если Форма.Объект.Свойство("Исполнитель") Тогда Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) Тогда СрокИсполнения = Форма.Объект.СрокИсполнения; Иначе СрокИсполнения = Дата(1,1,1); КонецЕсли; ЗаполнитьПредставлениеСроковУчастника( Форма.СрокИсполненияПредставление, СрокИсполнения, Форма.Объект.СрокИсполненияДни, Форма.Объект.СрокИсполненияЧасы, Форма.Объект.СрокИсполненияМинуты, Форма.Объект.ВариантУстановкиСрокаИсполнения, Форма.ИспользоватьДатуИВремяВСрокахЗадач); КонецЕсли; Если Форма.Объект.Свойство("СрокОбработкиРезультатов") Тогда // +++++++++++++++++++++++++++++++++++++++++++++++++++ // было // //Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) Тогда // СрокОбработкиРезультатов = Форма.Объект.СрокОбработкиРезультатов; //Иначе // СрокОбработкиРезультатов = Дата(1,1,1); //КонецЕсли; // // // для БП исполнения установим в сроке проверки дату = дате исполнения и время в 23:59:59 Если Форма.ИмяФормы = "БизнесПроцесс.Исполнение.Форма.ФормаБизнесПроцесса" Тогда Если Форма.СрокПроверкиВручную = Ложь И Форма.Объект.Свойство("Исполнители") И Форма.Объект.Исполнители.Количество()>0 Тогда МаксимальныйСрок = Дата(1,1,1); РеквизитИсполнители = Форма.Объект.Исполнители; Для Каждого СтрИсполнитель Из РеквизитИсполнители Цикл Если ЗначениеЗаполнено(СтрИсполнитель.СрокИсполнения) Тогда ТекущийСрокИсполнения = СтрИсполнитель.СрокИсполнения; Иначе ТекущийСрокИсполнения = Дата(1,1,1); КонецЕсли; Если ТекущийСрокИсполнения > МаксимальныйСрок Тогда МаксимальныйСрок = ТекущийСрокИсполнения; КонецЕсли; КонецЦикла; Если ЗначениеЗаполнено(МаксимальныйСрок) Тогда Форма.Объект.СрокОбработкиРезультатов = КонецДня(МаксимальныйСрок); СрокОбработкиРезультатов = КонецДня(МаксимальныйСрок); Форма.СрокОбработкиРезультатовПредставление = КонецДня(МаксимальныйСрок); Иначе СрокОбработкиРезультатов = Дата(1,1,1); КонецЕсли; Иначе Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) Тогда СрокОбработкиРезультатов = Форма.Объект.СрокОбработкиРезультатов; Иначе СрокОбработкиРезультатов = Дата(1,1,1); КонецЕсли; КонецЕсли; Иначе Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) Тогда СрокОбработкиРезультатов = Форма.Объект.СрокОбработкиРезультатов; Иначе СрокОбработкиРезультатов = Дата(1,1,1); КонецЕсли; КонецЕсли; // --------------------------------------------------- ЗаполнитьПредставлениеСроковУчастника( Форма.СрокОбработкиРезультатовПредставление, СрокОбработкиРезультатов, Форма.Объект.СрокОбработкиРезультатовДни, Форма.Объект.СрокОбработкиРезультатовЧасы, Форма.Объект.СрокОбработкиРезультатовМинуты, Форма.Объект.ВариантУстановкиСрокаОбработкиРезультатов, Форма.ИспользоватьДатуИВремяВСрокахЗадач); КонецЕсли; Если Форма.Объект.Свойство("СрокИсполненияПроцесса") Тогда Дата = Дата(1,1,1); Если ЗначениеЗаполнено(Форма.ДатаОтсчетаДляРасчетаСроков) И ЗначениеЗаполнено(Форма.Объект.СрокИсполненияПроцесса) Тогда Дата = Форма.Объект.СрокИсполненияПроцесса; КонецЕсли; Дни = 0; Часы = 0; Минуты = 0; СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("СрокИсполненияПроцессаДни"); ЗаполнитьЗначенияСвойств(СтруктураПоиска, Форма); Если СтруктураПоиска.СрокИсполненияПроцессаДни <> Неопределено Тогда Дни = Форма.СрокИсполненияПроцессаДни; Часы = Форма.СрокИсполненияПроцессаЧасы; Минуты = Форма.СрокИсполненияПроцессаМинуты; КонецЕсли; ЗаполнитьПредставлениеСрокаИсполненияПроцесса( Форма.СрокИсполненияПроцессаПредставление, Дата, Дни, Часы, Минуты, Форма.ИспользоватьДатуИВремяВСрокахЗадач); КонецЕсли; КонецПроцедуры |
|||
3
Волшебник
01.03.24
✎
07:37
|
Если нужно заполнять ДАТУ, так заполняйте ДАТУ (тип "Дата"), а не представление (тип "строка").
|
|||
4
Trezvy
01.03.24
✎
10:36
|
Верно, это лишнее:
Форма.СрокОбработкиРезультатовПредставление = КонецДня(МаксимальныйСрок); Спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |