|
Обращение к конкретной форме задачи 1С 8.3 | ☑ | ||
---|---|---|---|---|
0
vlasabo
06.11.15
✎
16:27
|
Доброго дня. Видимо не знаю как корректно построить поисковый запрос, поэтому не могу найти интересующую инфу.
Суть вопроса: есть объект Задачи с именем "Задачи". У него есть две формы объекта - ФормаЗадачи и ФормаЗадачиДополнительно. По умолчанию - ФормаЗадачи. Программно в документе создаётся задача (не привязанная к бизнес-процессу). Естественно по умолчанию создается ФормаЗадачи, а как выбрать требуемую форму ФормаЗадачиДополнительно? Код: &НаСервере Процедура СоздатьЗадачуСтаршемуАдминистратору(ФИОСотрудника,Процедура1,ФИОАдмин,ФИОАдмин2,ФИОАдмин3,Дата1) НоваяЗадача = Задачи.Задачи.СоздатьЗадачу(); НоваяЗадача.Наименование = "Установить сотруднику " + ФИОСотрудника + " процент за процедуру " + Процедура1 + ", за дату " + Формат(Дата1,"ДЛФ=DD"); НоваяЗадача.Записать(); КонецПроцедуры |
|||
1
VikingKosmo
06.11.15
✎
16:29
|
И где в (0) создается вообще хоть какая то форма?!
|
|||
2
vlasabo
06.11.15
✎
16:31
|
(1) не правильно выразился. Создается не форма, конечно, создается задача. Вопрос в том, как при последующем открытии этой программно созданной задачи открыть нужную форму?
|
|||
3
VikingKosmo
06.11.15
✎
16:32
|
(2) ОткрытьФорму(). Всегда Ваш, К.О.
|
|||
4
vlasabo
06.11.15
✎
16:40
|
(3)
-На форме по умолчанию нет поля реквизита Рекв. -Программно создаем задачу, заполняем реквизит Рекв. -Пользователь открывает из клиента задачу, открывается форма по умолчанию - на котором нет поля реквизита Рекв и он его не видит. Вопрос: как при открытии пользователем задачи разграничить когда какую форму открывать? |
|||
5
VikingKosmo
06.11.15
✎
16:46
|
(4) вариантов масса:
Открывать нужную форму программно. Воспользоваться событием ОбработкаПолученияФормы Придумать, что то еще... |
|||
6
vde69
06.11.15
✎
16:48
|
в форме задачи "по умолчанию":
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) ОткрыватьМодально = МодальныйРежим; // сначало проверим для вложеных БП, если есть - вообще форму не покажем Если Ссылка.ТочкаМаршрута <> Неопределено Тогда Если Ссылка.ТочкаМаршрута.Вид = ВидТочкиМаршрутаБизнесПроцесса.ВложенныйБизнесПроцесс Тогда Отказ = Истина; // здесь можно сделать открытие формы вложеного БП, или списка текущих задачь по вложеному БП Возврат; КонецЕсли; КонецЕсли; // проверим, что нельзя двигать процесс если есть пред обработка (0-уровень) Если (ТипЗнч(Ссылка.ГлавныйБП) = Тип("БизнесПроцессСписок.ВедениеПоручений")) И (Константы.ИспользоватьПредварительныйКонтроль.Получить() = Истина) И (Константы.ГруппаАдресацииПервойЛинии.Получить() = Ссылка.Адресат) тогда Предупреждение("Используется режим предварительной оценки. Используйте быструю переадресацию"); Отказ = Истина; СтандартнаяОбработка = Ложь; Возврат; КонецЕсли; АльтернативнаяФорма = Неопределено; Попытка Если ВидЗадачи = Перечисления.ВидЗадачи.Уведомление И ЗначениеЗаполнено(Сделка) Тогда АльтернативнаяФорма = Сделка.ПолучитьФорму(); ИначеЕсли ВидЗадачи = Перечисления.ВидЗадачи.Уведомление И НЕ ЗначениеЗаполнено(Сделка) Тогда АльтернативнаяФорма = Ссылка.ПолучитьФорму("ФормаУведомленияМинимальногоОстатка", ЭтаФорма.ВладелецФормы, ЭтаФорма.КлючУникальности); ИначеЕсли ВидЗадачи = Перечисления.ВидЗадачи.ПоБизнесПроцессу Тогда // ВНИМАНИЕ!!! данный алгоритм возможно надо будет переделать, сравнение строк не надежно, // возможно совпадение с названиями в будующих БП Попытка АльтернативнаяФорма = Ссылка.ПолучитьФорму(СокрЛП(Ссылка.ТочкаМаршрута.Имя), ЭтаФорма.ВладелецФормы, ЭтаФорма.КлючУникальности); Исключение АльтернативнаяФорма = Неопределено; КонецПопытки; // позможно есть форма по умолчанию для этого БП Если АльтернативнаяФорма = Неопределено Тогда Если БизнесПроцесс.Метаданные().Имя = "ИсполнениеПоручений" Тогда АльтернативнаяФорма = Ссылка.ПолучитьФорму("ОсновнаяДляБПИсполнениеПоручений", ЭтаФорма.ВладелецФормы, ЭтаФорма.КлючУникальности); ИначеЕсли БизнесПроцесс.Метаданные().Имя = "СогласованиеПоручений" Тогда АльтернативнаяФорма = Ссылка.ПолучитьФорму("ОсновнаяДляБПСогласованиеПоручений", ЭтаФорма.ВладелецФормы, ЭтаФорма.КлючУникальности); ИначеЕсли БизнесПроцесс.Метаданные().Имя = "ВедениеПоручений" Тогда АльтернативнаяФорма = Ссылка.ПолучитьФорму("ОсновнаяДляПоручений", ЭтаФорма.ВладелецФормы, ЭтаФорма.КлючУникальности); КонецЕсли; КонецЕсли; Если АльтернативнаяФорма = Неопределено Тогда АльтернативнаяФорма = ГлавныйБП.ПолучитьФорму(); КонецЕсли; ИначеЕсли ВидЗадачи = Перечисления.ВидЗадачи.ПоДокументу И БизнесПроцесс.Метаданные().Имя = "СогласованиеДопЗатрат" Тогда АльтернативнаяФорма = Ссылка.ПолучитьФорму("ОсновнаяДляЗаполненияДопЗатрат", ЭтаФорма.ВладелецФормы, ЭтаФорма.КлючУникальности); ИначеЕсли ВидЗадачи = Перечисления.ВидЗадачи.ПоДокументу Тогда АльтернативнаяФорма = ГлавныйБП.ДокументСогласования.ПолучитьФорму(); КонецЕсли; Исключение АльтернативнаяФорма = Неопределено; КонецПопытки; Если АльтернативнаяФорма <> Неопределено Тогда // есть специальная форма, надо работать с ней АльтернативнаяФорма.ТолькоПросмотр = ТолькоПросмотр; Если ОткрыватьМодально Тогда АльтернативнаяФорма.ОткрытьМодально(); Иначе АльтернативнаяФорма.Открыть(); КонецЕсли; Отказ = Истина; СтандартнаяОбработка = Ложь; Возврат; КонецЕсли; КонецПроцедуры |
|||
7
vlasabo
06.11.15
✎
16:52
|
(6) суть я уловил, спасибо, но в (0) указано что задача вообще к БП отношения не имеет
|
|||
8
vlasabo
06.11.15
✎
16:54
|
(5) благодарю, пошел читать про ОбработкаПолученияФормы.
Открывать форму программно - вы имеете ввиду отключить стандартное получение формы и написать своё, я правильно понял? |
|||
9
VikingKosmo
06.11.15
✎
16:54
|
(8) да
|
|||
10
Гёдза
06.11.15
✎
16:55
|
Сначала нужно определить по какому признаку мы должны понимать какую форму открывать
|
|||
11
VikingKosmo
06.11.15
✎
16:55
|
(6) ТС вроде написал 8.3, что подразумевает УФ. О каком тогда ПередОткрытием() может идти речь?
|
|||
12
vlasabo
06.11.15
✎
16:56
|
(10) в моём случае можно по ЗначениеЗаполнено(НужныйРеквизитКоторыйЕстьВОднойФормеНоНетВДругой)
|
|||
13
vlasabo
06.11.15
✎
17:49
|
Эх, ОбработкаПолученияФормы у нас в модуле менеджера, а оттуда заполнен реквизит или нет я никак не могу посмотреть. Буду думать дальше
|
|||
14
almar
06.11.15
✎
17:53
|
(0) Например, так:
&НаКлиенте Процедура ПриОткрытии(Отказ) Если ТипЗнч(Объект.Предмет)=Тип("ДокументСсылка.ЗадачиМаркетинг") Тогда Отказ=Истина; Пар=Новый Структура("Ключ",Объект.Предмет); ОткрытьФорму("Документ.ЗадачиМаркетинг.Форма.ФормаДокумента",Пар); КонецЕсли; КонецПроцедуры |
|||
15
VikingKosmo
06.11.15
✎
17:54
|
(14) за такое руки надо по колено отрывать...
|
|||
16
vlasabo
06.11.15
✎
18:27
|
(14) я чего-то если честно не понял как это должно работать (и в моих реалиях не работает):
Понятно было бы еслиб надо было выдать форму выбора или форму списка с отбором по параметру, но как открыть так форму элемента - я не понимаю. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |