|
управляемые формы, определение формы которую надо открыть | ☑ | ||
---|---|---|---|---|
0
vlasabo
06.11.15
✎
19:16
|
Доброго дня еще раз. В связи с предыдущей темой назрел вопрос:
Есть две формы объекта задачи. В одной есть поле "Рекв" и он соответственно заполняется, во второй его нет и он соответственно пустой. Вопрос: как при открытии формы определить какую именно форму открывать? Открывать будет пользователь из клиента через список задач, т.е. ОткрытьФорму мне не поможет, увы. Т.е. логика ясна, если реквизит "рекв" заполнен - то первую форму, если не заполнен - то вторую, но как реализовать? ОбработкаПолученияФормы у нас в модуле менеджера, как добраться оттуда до реквизита задачи я не знаю. ЗЫ: не обязательно упираться именно в этот способ решения, если есть еще варианты - посоветуйте, пожалуйста. Задача с БП не связана, существует отдельно сама по себе |
|||
1
Горогуля
06.11.15
✎
19:18
|
сделать фейковую форму, из которой уже открывать ту или эту не вариант?
|
|||
2
Zamestas
06.11.15
✎
19:19
|
(0) А одной формой обойтись никак?
|
|||
3
vlasabo
06.11.15
✎
19:26
|
(1) а как?
Процедура ПриОткрытии(Отказ) Если ЗначениеЗаполнено(Рекв) Тогда ?? Иначе ?? КонецЕсли; КонецПроцедуры (2) одной формой, опять же, как? Видимость элементов отключать при незаполненности, чтоб пользователям не мешали куча незаполненных полей? Костыли же, хотелось бы нормально реализовать. |
|||
4
Zamestas
06.11.15
✎
19:51
|
(3) Т.е. отключать видимость - это костыли, а использование двух форм не костыли?
|
|||
5
FIXXXL
06.11.15
✎
19:56
|
реквизит именно формы? тогда он заполняется по какому то условию в момент открытия? условие вне формы возможно анализировать?
|
|||
6
vlasabo
07.11.15
✎
14:43
|
Реквизит объекта. Заполняется программно в момент создания задачи, анализировать какую форму открыть надо соответственно перед открытием формы. Можно и вне, но как?
|
|||
7
vlasabo
07.11.15
✎
14:44
|
(4) отключать видимость костыли потому, что когда будет десяток рахзных форм -можно будет потеряться в видимости элементов. Тогда как использование различных форм для каждого случая - решение вполне масштабируемое
|
|||
8
DmitrO
07.11.15
✎
17:08
|
Вообще не понятно в чем проблема.
В ОбработкаПолученияФормы передаются параметры открытия формы среди них ясен пень есть параметр Ключ, который является ссылкой.. |
|||
9
vlasabo
09.11.15
✎
09:22
|
(8) не могу понять, увы(
Не мог бы ты набросать примерный код, привязанный к примеру наверху, в (0)? ЗЫ: я не на чужом горбу в рай хочу, если что, пример сверху - упрощенный вариант того, что мне надо сделать. Разберусь с ним - разберусь и со своей проблемой... |
|||
10
BadSanta
09.11.15
✎
09:24
|
(9) поставь точку останова в событии и сам посмотри что приезжает в параметрах.
|
|||
11
Fedor-1971
09.11.15
✎
09:32
|
(9) Вот тебе схема:
1. создаёшь форму со списком задач (в запросе ДС должен быть твой параметр, на основании которого собираешься открывать различные формы) 2. в событии ПриНачалеИзменения() ДС проводишь анализ и выбираешь форму, которую собрался открыть. Второй вариант: На форму выносишь закладки без заголовков и в ПриСозданииНаСервере рулишь активной страницей - имеешь одну форму, расширяемую и т.д. и не имеешь гемора с выбором какую форму соизволить открыть поскольку она одна во всех лицах. |
|||
12
vlasabo
09.11.15
✎
10:01
|
(11) ок, ДС выбирает в т.ч. нужный мне параметр, проверку реализовал,
&НаКлиенте Процедура СписокПередНачаломИзменения(Элемент, Отказ) Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.Рекв) тогда ?????; КонецЕсли; КонецПроцедуры Как открыть форму?) Т.е. если я тупо напишу ОткрытьФорму то он мне и откроет её, пустую. |
|||
13
Fedor-1971
09.11.15
✎
10:16
|
(12) Посмотри в сторону параметра Ключ (погугли или в СП прочитай)
пар=новый Структура("Ключ", СтрокаДС.СсылкаНаОткрываемуюЗадачу); ОткрытьФорму("ОднаИзНужныхФорм", пар); |
|||
14
vlasabo
09.11.15
✎
10:19
|
(13)
Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.Ссылка1) тогда Сообщить("итс ворк"); П = Новый Структура; П.Вставить("Ключ", Элемент.ТекущиеДанные.ссылка); ОткрытьФорму("Задача.Задачи.Форма.ФормаЗадачи1", П); КонецЕсли; не работает. |
|||
15
vlasabo
09.11.15
✎
10:20
|
То есть исправно сообщает "итс ворк" когда условие срабатывает, но форму все равно открывает установленную по дефолту
|
|||
16
Горогуля
09.11.15
✎
10:21
|
не "итс ворк", а "ИТС воркс"
|
|||
17
vlasabo
09.11.15
✎
10:30
|
(13) пардон, всё заработало, случайно в названии процедуры добавил лишний символ и она перестала быть привязанной к событию.
Крайний вопрос: сейчас код выглядит так: &НаКлиенте Процедура СписокПередНачаломИзменения(Элемент, Отказ) Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.Рекв) тогда П = Новый Структура; П.Вставить("Ключ", Элемент.ТекущиеДанные.ссылка); ОткрытьФорму("Задача.Задачи.Форма.ФормаЗадачи1", П); КонецЕсли; КонецПроцедуры Всё исправно отрабатывает, открывает нужную форму, но вместе с ней открывается и стандартная форма. В общем-то это я думаю решу и самостоятельно, спасибо большое за долгую возню со мной и помощь. |
|||
18
vlasabo
09.11.15
✎
10:35
|
После КонецЕсли но перед КонецПроцедуры забыл дописать Отказ=Истина;
Задвоение прошло |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |