Имя: Пароль:
1C
 
Получение формы по объекту
0 assest44
 
11.12.22
22:22
Есть справочник объект, записывать его нельзя, как по нему получить форму?
Я объект заполнил на сервере в обработке, записал его в реквизит формы обработки, как получить форму объекта не записывая объект?
1 RomanYS
 
11.12.22
22:31
(0) переходи на обычные формы - там просто)))
Для УФ ЗначениеВРеквизитФормы, но форму с сервера ни открыть...
2 assest44
 
11.12.22
22:34
А как форму получить? вот в модуле у меня есть СправочникОбъект, как по нему получить форму? мне этого достаточно должно быть чтобы отработало ПриСозданииНаСервере
3 assest44
 
11.12.22
22:37
Я заполнил объект, приСозданииНаСервере происходят куча процедур с условием ЭтоНовый, то есть сначала записать потом открыть нельзя, на сервере не могу получить форму, а на клиенте не получается подсунуть созданный объект
4 RomanYS
 
11.12.22
23:10
Например можно у формы добавить реквизит с типом СправочникОбъект, на сервере его заполнить через ЗначениеВРеквизитФормы, а потом на клиенте перенести через КопироватьДанныеФормы в открытую форму.
5 assest44
 
12.12.22
00:04
Тогда событие при создание на сервере произойдет до копирования
6 Джинн
 
12.12.22
00:32
(2) Форм у объекта может быть чемодан. И Вы явно какую-то хрень делаете, пытаясь почесать левой ухо правой ногой через спину.
7 RomanYS
 
12.12.22
00:39
(5) можно засунуть всё данные в структуру и передать параметром. Главное понять простую вещь: в УФ нельзя открыть форму объекта, у открытой УФ будет свой экземпляр объекта.
8 Сергиус
 
12.12.22
02:19
(0)Надо менять логику работы - возможно сразу получать форму с передачей определенных параметров.
9 Индиго
 
12.12.22
06:57
Если я правильно стелепатировал, то вот пример:

//----------------------
&НаСервере
Процедура ЗаполнитьДокНаСервере(ДанныеФормы)  Экспорт
    
    ДокОбъект=ДанныеФормыВЗначение(ДанныеФормы,Тип("ДокументОбъект.РеализацияТоваровТорг") );
    
    МетаданныеДока = ДокОбъект.Ссылка.Метаданные();
    ЗаполнитьЗначенияСвойств(ДокОбъект,Объект);
    
    ДокОбъект.Номер="";
    ДокОбъект.Контрагент="";
    ДокОбъект.КонтрагентФилиала="";
    ДокОбъект.ДоговорКонтрагента="";
    
    ДокОбъект.Ответственный=глЗначениеПеременной("глТекущийПользователь");
    ДокОбъект.История="";
    
    УИД=Строка(Объект.Ссылка.УникальныйИдентификатор());
    ДокОбъект.Комментарий="@#Основание:"+УИД;
    ДокОбъект.СчетУчетаРасчетовСКонтрагентом = планысчетов.Типовой.КраткосрочнаяДебиторскаяЗадолженностьПокупателейИЗаказчиковВТенге;
    ДокОбъект.ВидОперации=Перечисления.ВидыОплаты.БезНал;
    тТек=Объект.Товары.Выгрузить();
    ДокОбъект.Товары.Загрузить(тТек);
    СтавкаНДС=Справочники.СтавкиНДС.НайтиПоРеквизиту("Ставка",12);
    Если НЕ ЗначениеЗаполнено(СтавкаНДС) Тогда
        СтавкаНДС=Справочники.ставкиНДС.ПолучитьСсылку(Новый УникальныйИдентификатор("48c91ab9-4fea-11e2-b46b-001b78042e0a"));
    КонецЕсли;    
    Для Каждого СтрокаТабЧасти из ДокОбъект.Товары Цикл
    // Выполнить общие действия для всех документов при изменении номенклатуры.
        СтрокаТабЧасти.ЦенаБезСкидки=СтрокаТабЧасти.Цена;
        СтрокаТабЧасти.СуммаБезСкидки=СтрокаТабЧасти.Сумма;
        СтрокаТабЧасти.Заказано=СтрокаТабЧасти.Количество;
        СтрокаТабЧасти.Отпущено=СтрокаТабЧасти.Количество;
        
        Если НЕ ЗначениеЗаполнено(СтрокаТабЧасти.СтавкаНДС) И ЗначениеЗаполнено(СтавкаНДС) Тогда
            СтрокаТабЧасти.СтавкаНДС=СтавкаНДС;
            СтрокаТабЧасти.СуммаНДС=СтрокаТабЧасти.Сумма/112*12;
        КонецЕсли;                        
        ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТабЧасти, ДокОбъект.Ссылка);
        СчетаУчета     = ПроцедурыБухгалтерскогоУчета.ПолучитьСчетаУчетаНоменклатуры(ДокОбъект.Организация, СтрокаТабЧасти.Номенклатура);
        ДокОбъект.ЗаполнитьСчетаБУ(СтрокаТабЧасти, "Товары", СчетаУчета, Истина,  МетаданныеДока);    
        СтрокаТабЧасти.НДСВидОперацииРеализации = Справочники.ВидыРеализации.РеализацияТМЗ;
    КонецЦикла;    
    ЗначениеВДанныеФормы(ДокОбъект,ДанныеФормы);
КонецПроцедуры

&НаКлиенте
Процедура РасходнаяНакладнаяНаОсновании(Команда)  Экспорт
    Если Вопрос("Создать на основании текущего документа расходную накладную?",РежимДиалогаВопрос.ДаНет)<>КодВозвратаДиалога.Да Тогда
        Возврат;
    КонецЕсли;    
    ФРН=ПолучитьФорму("Документ.РеализацияТоваровТорг.Форма.ФормаДокументаУФ");
    ДанныеФормы=ФРН.Объект;
    ЗаполнитьДокНаСервере(ДанныеФормы);
    КопироватьДанныеФормы(ДанныеФормы, ФРН.Объект);    
    
    ФРН.Открыть();
КонецПроцедуры
2 + 2 = 3.9999999999999999999999999999999...