Имя: Пароль:
1C
1С v8
v8: Не работает ПолучитьФорму в управляемом приложении
0 D_Pavel
 
01.12.11
12:45
во внешней обработке такой код в модуле объекта:

Основнаяформа=ЭтотОбъект.ПолучитьФорму("ОсновнаяФорма");

В результате Основнаяформа= неопределено. КАк получить эту форму?
1 Поручик
 
01.12.11
12:51
(0) Оптово/розничная продажа СП от производителя

Основнаяформа = ПолучитьФорму("Справочник.Какой_Конкретный_Справочник.ФормаОбъекта");
2 Поручик
 
01.12.11
12:55
Если какая-то форма какой-то внешней обработки

   ПараметрыФормы = Новый Структура("Чего_то", Чего_То);
   Основнаяформа = ПолучитьФорму("ВнешняяОбработка.Имя_Обработки.Форма.ИмяФормы", ПараметрыФормы, ЭтаФорма);
3 D_Pavel
 
01.12.11
13:17
(2) работает, спасибо.

(1) В СП нет такого:

Пример:

Форма = ВнешОбработка.ПолучитьФорму("ГлавнаяФорма");
4 D_Pavel
 
01.12.11
13:22
Ошибся, нихрена не работает. Открывается пустая форма с незаполненной табличной частью, хотя у объекта тчасть заполнена.
5 Джинн
 
01.12.11
13:24
(4) А как процедура должна догадаться, что нужно открыть форму существующего объекта? Телепатически?
6 Федор Сумкин
 
01.12.11
13:32
Основнаяформа = ПолучитьФорму("ВнешняяОбработка.Имя_Обработки.Форма.ИмяФормы", Новый Структура("Ключ", СсылкаНаОбъект), ЭтаФорма);
7 Cube
 
01.12.11
13:37
До кучи, покури ещё
ОткрытьЗначение()
8 D_Pavel
 
01.12.11
13:44
(5) А как ей об этом сказать?

(6) Не понятно что должно быть в СсылкаНаОбъект, если это внешняя обработка.
9 Cube
 
01.12.11
13:46
(8) Как у внешней обработки ТЧ может быть заполнена? может она заполняется при открытии или как?
10 D_Pavel
 
01.12.11
13:47
(9) заполняется перед вызовом ПолучитьФорму
11 Cube
 
01.12.11
13:50
(10) Из серии, сначала я выпиваю чай, а потом наливаю?
Как, не имея ТЧ, ты заполняешь ТЧ?
12 D_Pavel
 
01.12.11
13:53
(11) С чего ты взял что ее нет? Она есть и заполняется программно.
13 Поручик
 
01.12.11
14:02
(3) В СП есть, вы не умеете их готовить.
14 Федор Сумкин
 
01.12.11
14:03
..хорошо было бы сначала книжку прочесть.....

ПолучитьФорму("ВнешняяОбработка.Имя_Обработки.Форма.ИмяФормы", Новый Структура("Ключ", СсылкаНаОбъект), ЭтаФорма)

СсылкаНаОбъект - это если б ты открывал не обработку, а элемент справочника или документ...

ОткрытьФорму("Обработка.Имя_Обработки.Форма.ИмяФормы", Новый Структура("МойСозданныйПараметр", ТоЧтоЯХочуПередатьВОбработку), ЭтаФорма)
Если обработка - создай в ней Реквизит формы и Параметр, ПриСозданииНаСервере() заполни из параметра Реквизит и дальше заполняй из него как тебе заблагорассудится...
15 Поручик
 
01.12.11
14:04
(10) Дурь. Покури типовые в части заполнения ТЧ обработок.
16 D_Pavel
 
02.12.11
08:40
(14) Тоесть получится что создастся еще один объект ВнешняяОбработка привязанный к новой созданной форме, и передать из первой копии обработки во вторую всё через параметр и заново ее заполнить? Вот хрень так хрень...
17 Поручик
 
02.12.11
08:59
(16) Порожняк несёте.
18 D_Pavel
 
02.12.11
11:19
(17) я про то и говорю, тут всё порожняк, ни одного нормального ответа.
19 D_Pavel
 
02.12.11
11:53
(5) и всётаки, как ей это задать?
20 эцп
 
02.12.11
12:00
(19) ПараметрыФормы = Новый Структура("Ключ,ЕщеПараметры", Ссылка, ЕщеПараметр);
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", ПараметрыФормы);

Через поле "Ключ"
21 D_Pavel
 
02.12.11
12:15
(20) что передать в поле ключ? "ЭтотОбъект" не передается из-за типа.
22 Джинн
 
02.12.11
12:17
(21) Ссылку
23 D_Pavel
 
02.12.11
12:27
(22) Ссылку на что?
24 эцп
 
02.12.11
12:29
(23) В моем примере "Ссылка" содержит ссылку на существующий элемент справочника "Номенклатуры", короче ТипЗнч(Ссылка) = Тип("СправочникСсылка.Номенклатура")
25 Джинн
 
02.12.11
12:30
(23) Ссылку на объект, который ты собираешься смотреть в форме.
26 D_Pavel
 
02.12.11
12:32
(25) Как получить ссылку на внешнюю обработку?
27 D_Pavel
 
02.12.11
12:33
(24) Пример со справочником тут вообще не подходит, с ним всё просто.
28 эцп
 
02.12.11
12:33
(26) а зачем? Пример в (2) чем не подошел?
29 D_Pavel
 
02.12.11
12:34
(28) Тем что он открывает не заполненную форму
30 эцп
 
02.12.11
12:49
(29) Ну, обработай в форме событие "ПриСозданииНаСервере" и заполни
31 D_Pavel
 
02.12.11
12:56
(30) Тогда получится что данные в форме никак не связаны с данными в объекте. То что я буду изменять в форме не повлияет на реквизиты объекта.
32 D_Pavel
 
02.12.11
12:58
+(31) Тоесть у формы тоже будет Объект, но другой, не тот заполненный из которого была открыта форма.
33 эцп
 
02.12.11
13:01
(32) Это в толстом клиенте сначала создается обработка (Объект), потом форма из этого объекта, потом форма отображается.
В тонком нужно сразу открывать форму, передавая ей параметры, и в ПриСозданииНаСервере заполнять нужные поля.
34 эцп
 
02.12.11
13:03
(32) Короче, вспоминай 7.7
35 D_Pavel
 
02.12.11
13:03
(33) Тоесть если объект уже создан, его форму никак нельзя открыть?
36 Джинн
 
02.12.11
13:03
(26) У внешней обработки нет объекта в классическом понимании его (документ, справочник и т.п.). Это просто форма с набором реквизитов. Если ты ее открываешь, то должен сам позаботится о том, чтобы их заполнить.

Решается это передачей параметров в открываемую форму и обработке переданных параметров в самой форме.
37 Джинн
 
02.12.11
13:04
(35) Млин, НЕТ у тебя никакого "объекта". Это форма обработки. По сути программный модуль с формой.
38 D_Pavel
 
02.12.11
13:07
(37) есть "Модуль объекта" внешней обработки, значит есть и Объект. К тому же у формы есть реквизит "Объект".
39 эцп
 
02.12.11
13:18
(38) Ну так, создашь форму, автоматически создастся Объект. В чем проблема?
40 Джинн
 
02.12.11
13:23
(38) Я же тебе по-русски выше написал, что объекта в КЛАССИЧЕСКОМ "учетном" понимании у нее НЕТ. Это не элемент справочника, не документ, не запись регистра. Объект там чисто в программерском понимании.

Тебе же нужно заполнить РЕКВИЗИТЫ формы обработки переданными значениями. Ну дык и заполняй. Разобраться в этом минут 20 с двумя перекурами. Ты же вторые сутки мозг выносишь.
41 D_Pavel
 
02.12.11
13:31
(39) В том что обработка создается универсальным механизмом, а не форма сначала открывается:

Обработка = ВнешниеОбработки.Создать(ИмяФайла);
Обработка.ВыполнитьЧегонадо();
42 эцп
 
02.12.11
13:34
(41) Каким таким универсальным механизмом? Что за конфигурация?
43 D_Pavel
 
13.12.11
13:44
(42) Такой механизм что создается объект внешняя обработка и заполняется его табличная часть и другие реквизиты объекта, потом открывается форма. Конфигурация самописная на базе торговли.
44 Seeker
 
13.12.11
14:15
ВнешОтчет = ВнешниеОтчеты.Создать(РеквизитФормыВЗначение("Отчет").ИспользуемоеИмяФайла);
ВнешОтчет.ПолучитьФОрму();

может как то так?