Имя: Пароль:
1C
1С v8
Не открываются формы
0 Dirk Diggler
 
27.09.23
15:38
Что-то не то с открытием форм. Не могу понять что. Пытаюсь на толстом клиенте создать объект и открыть его форму(управляемую). Форма есть, установлена основной, и прекрасно работает, если я создаю объект из формы списка по Ins, например. Однако, когда я пытаюсь это сделать программно, например так^

БП = БизнесПроцессы.DX_ОбработкаТикета.СоздатьБизнесПроцесс();
БП.ЗаказПокупателя = ЭлементыФормы.тпЗаказыПокупателей.ТекущиеДанные.Ссылка;
Ф = БП.ПолучитьФорму();
Ф.Открыть();

то нужная форма не открывается. А открывается обычная дефолтная форма, ну типа когда все доступные реквизиты объекта выведены по порядку один под другим.

Нужную форму программно удается открыть только вот так:

БизнесПроцессы.DX_ОбработкаТикета.ПолучитьФорму().Открыть()

но мне нужно создать объект и заполнить ему кое-какие реквизиты до открытия формы. Как сделать? Это глюк платформы или я что-то не понимаю?
1 Dirk Diggler
 
27.09.23
15:43
Все, нагуглил. Ща попробую отпишусь на всякий
2 Dirk Diggler
 
27.09.23
15:46
А, не, фигню нагуглил. Писали, что нужно ОткрытьЗначение использовать. Не работает. Тоже открывается обычная дефолтная форма.
3 Dirk Diggler
 
27.09.23
15:54
Сборол. Программно формы надо открывать только через ОткрытьФорму и передачу объекта в структуре

    БП = БизнесПроцессы.DX_ОбработкаТикета.СоздатьБизнесПроцесс();
    БП.ЗаказПокупателя = ЭлементыФормы.тпЗаказыПокупателей.ТекущиеДанные.Ссылка;
    ОткрытьФорму("БизнесПроцесс.DX_ОбработкаТикета.ФормаОбъекта", Новый Структура("Ключ", БП));
4 Dirk Diggler
 
27.09.23
16:18
А, блин, не, не то. Все равно новый пустой объект создается.

И все-таки как открыть управляемую форму предварительно созданного, заполненного, но не записанного объекта?
5 AlexeyKh
 
27.09.23
16:53
да вроде элементарно все, я использую такие команды
(это пример)

    лкФорма = ПолучитьФорму("Документ.ЗаказНаПеремещение.ФормаОбъекта");
    КопироватьДанныеФормы(ЗаказНаПеремещение, лкФорма.Объект);
    лкФорма.Открыть();
    
где ЗаказНаПеремещение - реквизит формы обработки тип:ДокументОбъект (Не ссылка)
в результате открывается форма с созданным/заполненным документом, но еще не записанным.
6 AlvlSpb
 
27.09.23
17:03
(3) Таким образом открывается форма записанного документа Здесь ключ - это должна быть ссылка записанного документа. В твоем варианте ссылки еще не существует, нет ключа.
А вот в структуру без ключа передается то, что нужно заполнить. Типа "Организация" = Такая-то организация, "Контрагент" - такой-то контрагент.
А вообще, открывай и читай СП ("ОткытьФорму", "ПолучитьФорму"). Там все достаточно подробно и доходчиво
7 Dirk Diggler
 
28.09.23
14:10
(6) да, с тем, что при попытке на клиенте получить управляемую форму для незаписанного в БД объекта возникает коллизия где брать этот объект при создании её на сервере - отчего и формируется автоматическая обычная форма, я разобрался.

Но с передачей структуры тоже вопрос.
Мне же надо потом получить объект.
А я же в лучшем случае получу ссылку?
8 AlvlSpb
 
28.09.23
16:48
(7) ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Организация",
    Справочники.Организации.НайтиПоНаименованию("НашаОрг");
ПараметрыФормы.Вставить("Контрагент",Справочники.Контрагенты.НайтиПоНименованию("Лучший Контрагент");
ОткрытьФорму("Документы.Расходная.Форма.ФормаОбъекта", ПараметрыФормы)

Откроет форму документа с заполненными полями Организация и Контрагент, если имена реквизитов совпадают с именем ключа структуры.
  Еще раз. ОТКРОЙ СП и прочитай про ОткрытьФорму, там все доступно и достаточно подробно
9 Dirk Diggler
 
29.09.23
10:47
(8) Форму откроет.
Форму открывать и параметры туда передавать я сделал, в этом компоненте все окей.

А как закрыть форму так, чтобы в месте вызова ОткрытьФорму() получить объект(допустим, в форме он записан не был)? Опять-таки никак...

Ладно, я понял, что такой код архитектурно неправилен, будем думать как обойти.
10 Мимохожий Однако
 
29.09.23
10:51
(9) Вместо гугла неплохо бы сначала обращаться к СП и долго думать
11 RVN
 
29.09.23
13:09
(9) ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)

......

<ОписаниеОповещенияОЗакрытии> (необязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана при закрытии формы со следующими параметрами:
<РезультатЗакрытия> - значение, переданное при вызове метода Закрыть открываемой формы,
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан, то по завершению никакая процедура вызвана не будет.
Используется только в управляемом приложении.

Это все написано в СП
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.