Имя: Пароль:
1C
1С v8
УФ: обработка, форма...
0 ДенисЧ
 
16.05.12
08:48
Есть некая обработка, которая
а) имеет 2 формы (основную и дополнительную)
б) может быть как внешней, так и встроенной в конфигурацию...

Надо по событию получить дополнительную форму этой же (!) обработки...

Вопрос: как?
1 RomaH
 
naïve
16.05.12
09:04
попытка
2 aleks-id
 
16.05.12
09:08
(0) проверь через метаданные - если есть эта обработка тогда считаем что она встроена в конфу.
3 ДенисЧ
 
16.05.12
09:11
(2) А если нет? Как мне обратиться из формы обработки / модуля обработки к его дополнительной форме?
(1) Вопрос не в том, чтобы определить, какая она. Вопрос в том, как получить допформу текущей обработки...
4 badboychik
 
16.05.12
09:13
а что, "ПолучитьФорму" не работает?
5 ДенисЧ
 
16.05.12
09:18
(4) Она новый объект отдаёт...
6 aleks-id
 
16.05.12
09:20
(3)
ДопТекст = ?(ВстроенаВКонфу(), "Внешняя","");
Допформа = ПолучитьФорму(ДопТекст+"Обработка.МояОбработка.Форма.Допформа");

ну и напиши функцию ВстроенаВКонфу()
7 aleks-id
 
16.05.12
09:21
(5) так-так... ну ка поподробнее..
вообще то перед открытием надо параметры туда передавать
8 5 Элемент
 
16.05.12
09:21
Я так понял автору нужно чтобы в новой форме объект "обработка" был таким же как в первой форме.
Вроде можно только через параметры передать и заполнить.
9 ДенисЧ
 
16.05.12
09:32
(8) пример можно?
10 Агент Инфостарта
 
16.05.12
09:37
(0) (2)
По п. (б) посмотри http://forum.aeroion.ru/topic606.html использование функции ПолучитьПолноеИмяФормы()
11 5 Элемент
 
16.05.12
09:41
(9)
// Первая форма

&НаСервере
Функция ПоместитьВХранилищеДанныеОтчета()
   
   ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
   
   АдресДанныеОтчета = ПоместитьВоВременноеХранилище(ОтчетОбъект, УникальныйИдентификатор);
   
   Возврат АдресДанныеОтчета
   
КонецФункции

&НаКлиенте
Процедура ОткрытьПараметры(Команда)
   
   АдресДанныеОтчета = ПоместитьВХранилищеДанныеОтчета();
   
   СтруктураПараметров = Новый Структура;
   СтруктураПараметров.Вставить("АдресДанныеОтчета", АдресДанныеОтчета);
   
   ПутьКОбъектуМетаданных = РеквизитФормыВЗначение("Отчет").Метаданные().ПолноеИмя();
   
   РезультатОткрытия = ОткрытьФормуМодально(ПутьКОбъектуМетаданных + ".Форма.Параметры", СтруктураПараметров);
   
КонецПроцедуры


// Вторая форма

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   АдресДанныеОтчета = Параметры.АдресДанныеОтчета;
   
   ОтчетОбъект = ПолучитьИзВременногоХранилища(АдресДанныеОтчета);
   ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет");
   
КонецПроцедуры
12 badboychik
 
16.05.12
10:54
КлючУникальности для кого придуман?
13 badboychik
 
16.05.12
10:59
(5) че то я не понял, что надо то? Ну правильно что новый объект формы, а какой тебе надо?

>>> Вопрос в том, как получить допформу текущей обработки...
Я и говорю - ЭтотОбъект.ПолучитьФорму("ДопФорма")
14 Агент Инфостарта
 
16.05.12
11:02
(13) Это для обычных форм. Для управляемых немного по другому, учи матчасть.
15 badboychik
 
16.05.12
11:12
"Следует учитывать, что при получении формы из "объекта" система получает форму для конкретного экземпляра объекта с учетом совокупности переданных параметров, в то время как для "ссылки" всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров)."