|
Как открыть не типовую форму (УФ) | ☑ | ||
---|---|---|---|---|
0
said52
29.10.13
✎
13:41
|
Добрый день, есть некий бизнес-процесс (конфа самописная) в нем задача, в зависимости от этапа выполнения БП нужно создавать необходимые задачи, для каждой задачи я прорисовал свою форму, пока их 3. Вот собственно и проблема в том что никак не могу добиться того что бы открывать нужную форму для нужной задачи.
Использую метод ПолучитьФорму("Задача.Задача.Форма.ФормаТестированияПАТ") но он возвращает мне пустую форму, думал в пустую форму присвоить основной реквизит из Основной формы (которая задана по умолчанию), но выдает ошибку. Пытался и крутил разные комбинации в событиях ПриСозданииНаСервере и ПриОткрытии. Пока без результатно. Подскажите, как правильно реализовать ? Заранее большое спасибо! |
|||
1
said52
29.10.13
✎
13:44
|
Пробовал писать так.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Объект.ТестироватьВПАТ Тогда ОбъектЗадача = Объект.Ссылка.ПолучитьОбъект(); Форма = ОбъектЗадача.ПолучитьФорму("Задача.Задача.Форма.ФормаЗадачи"); ИначеЕсли Объект.ВернутьНаДоработку Тогда //Форма = Задачи.Задача.ПолучитьФорму("ФормаЗадачи"); //Форма.Открыть(); Иначе //Форма = Задачи.Задача.ПолучитьФорму("ФормаРелиз"); //Форма.Открыть(); КонецЕсли КонецПроцедуры Если пишу через получение объекта то переменная Фомра = Неопределенно. Если писать так: &НаСервере Если Объект.ТестироватьВПАТ Тогда Форма = ПолучитьФорму("Задача.Задача.Форма.ФормаЗадачи"); ИначеЕсли Объект.ВернутьНаДоработку Тогда Ошибка "Процедура или функция с указанным именем не определена" |
|||
2
Euguln
29.10.13
✎
13:45
|
(0) Обычное приложение?
|
|||
3
banco
29.10.13
✎
13:46
|
(0) посмотри обработчик ОбработкаПолученияФормы
|
|||
4
Euguln
29.10.13
✎
13:48
|
Что в СП непонятного написано?
ПолучитьФорму (GetForm) Синтаксис: ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) <Параметры> (необязательный) Тип: Структура. Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры. П = Новый Структура("Ключ", Поставщик); Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П); Форма.Открыть(); Доступность: Тонкий клиент, веб-клиент, толстый клиент. |
|||
5
said52
29.10.13
✎
15:01
|
Еще пробую писать уже на клиенте.
&НаКлиенте Процедура ПриОткрытии(Отказ) Если Объект.ТестироватьВПАТ Тогда Форма = ПолучитьФорму("Задача.Задача.Форма.ФормаТестированияПАТ"); Форма.Объект = ЭтаФорма.Объект; Форма.Открыть(); ИначеЕсли Объект.ВернутьНаДоработку Тогда //Форма = Задачи.Задача.ПолучитьФорму("ФормаЗадачи"); //Форма.Открыть(); Иначе //Форма = Задачи.Задача.ПолучитьФорму("ФормаРелиз"); //Форма.Открыть(); КонецЕсли КонецПроцедуры Идея присвоить основной реквизит другой форме, пишет ошибку: "Нельзя изменять поле, содержащее объект данных формы" Еще были мысли получить нужную пустую форму, и потом обойти реквизиты формы и заполнить их, На сервере пишу стандартная обработка = Ложь, но всеравно открывает мне 2 формы одну основную и ту которую получил и заполнил реквизиты. |
|||
6
Dethmont
29.10.13
✎
15:04
|
Ключевое слово - <Параметры>
|
|||
7
said52
29.10.13
✎
15:09
|
Приложение управляемое.
СП читал, но не могу понять что имеется в виду под параметрами, что там должно быть, можешь написать? |
|||
8
Euguln
29.10.13
✎
15:20
|
(7) Что непонятного в этой конструкции:
П = Новый Структура("Ключ", Поставщик); Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П); Форма.Открыть(); А? |
|||
9
said52
29.10.13
✎
16:34
|
Если параметр необязательный, для чего он используется, имя ключа должно равнятся какому реквизиту формы, или чеу оно должно быть равно? Какое значение должно быть в "Поставщик" ?
|
|||
10
Euguln
29.10.13
✎
16:35
|
(9) OMG
ОбъектЗадача.ПолучитьФорму("Задача.Задача.Форма.ФормаЗадачи", Новый Структура("Ключ", Объект.Ссылка)); |
|||
11
said52
29.10.13
✎
16:37
|
За подсказку спасибо а ответ на вопрос для чего структура я так и не увидел.
|
|||
12
Euguln
29.10.13
✎
16:39
|
(11) OMG
Чтобы параметры в форму передавать ... ть. |
|||
13
said52
29.10.13
✎
22:59
|
Проверил, не работает, ФормаЗадачи = Неопределено
Если Объект.ТестироватьВПАТ Тогда ОбъектЗадача = Объект.Ссылка.ПолучитьОбъект(); ФормаЗадачи = ОбъектЗадача.ПолучитьФорму("Задача.Задача.Форма.ФормаЗадачи", Новый Структура("Ключ", Объект.Ссылка)); ИначеЕсли Объект.ВернутьНаДоработку Тогда Иначе КонецЕсли что еще можно попробовать? |
|||
14
olegves
29.10.13
✎
23:31
|
(13) посмотри, как в документообороте реализовано у 1С
|
|||
15
olegves
29.10.13
✎
23:33
|
+ (14) а вообще идея такая:
1. передаешь нужные параметры в команду открытия формы 2. в самой форме в процедуре ПриСозданииНаСервере обрабатываешь эти параметры и заполняешь форму, как тебе надо |
|||
16
said52
29.10.13
✎
23:34
|
Попробую ответить, может еще кому будет полезно. Если надо открыть не основную форму с уже заполненными данными пишите:
ОткрытьФорму("Задача.Задача.Форма.ФормаТестированияПАТ", Новый Структура("Ключ", Объект.Ссылка)); где ФормаТестированияПАТ - имя не основной формы, В структуре мы передаем ссылку на тот элемент который хотим открыть, еще хотел обратить внимание что это конструкция для существующей формы. Теперь возникла проблема, открываются сразу 2 формы. Основная и дополнительная. Пробовал писать: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КонецПроцедуры но ничего не помогло. Как избавиться от открытия основной формы? |
|||
17
olegves
29.10.13
✎
23:36
|
(0) получить форму не используй - вместо этого - Открыть форму.
Когда ты получаешь форму, у тебя еще до получения выполняется процедура ПриСозданииНаСервере, поэтому в полученной форме трудно что-то менять |
|||
18
grayshadow
29.10.13
✎
23:41
|
ОбъектЗадача = Объект.Ссылка.ПолучитьОбъект();
йоптель, так же и убить можно:))) |
|||
19
grayshadow
29.10.13
✎
23:45
|
а по теме - имеет место глобальное непонимание: у бизнес-процесса в конфигураторе указывается ОДНА задача, каким образом ТС собрался вязать 3?
|
|||
20
said52
29.10.13
✎
23:56
|
Задача то одна, но в определенных местах выполнения БП нужно показывать форму только с определенными реквизитами.
А что не так с: ОбъектЗадача = Объект.Ссылка.ПолучитьОбъект(); ?? ))))))) |
|||
21
said52
29.10.13
✎
23:59
|
кажись дошло чего открывается 2 формы сразу, надо писать проверку в событии "Выбор" формы списка задач, там анализировать какой реквизит заполнен и какую форму надо открывать, а не в событии при открытии основной формы.
Как проверю - отпишусь. |
|||
22
grayshadow
30.10.13
✎
00:04
|
ОбъектЗадача = Объект.Ссылка.ПолучитьОбъект() - получает НОВЫЙ объект, ни фига не тождественный ОбъектЗадача
|
|||
23
grayshadow
30.10.13
✎
00:04
|
* то есть не тождественный Объекту
|
|||
24
grayshadow
30.10.13
✎
00:06
|
(21) так да, если вы из ПрисозданииНасервере звали другую форму, то откроется и вызванная, и основная
Отказ = Истина спасет:) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |