Получить форму не записанного объекта в 1С
Вариант 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
&НаКлиенте Процедура ОткрытьФормуНовогоДокумента(Команда) // 1.1 // Получаем форму нового подчиненного документа ФормаПодчиненного = ПолучитьФорму("Документ.ПеревыставлениеТоваровУслуг.ФормаОбъекта"); // 1.2 // Получим объект формы - это Новый - создаваемый объект ОбъектФормы = ФормаПодчиненного.Объект; // 2. Передадим управление на сервер. ЗаполнитьПодчиненныйДокументПеревыставленияНаСервере(ОбъектФормы, Объект.Ссылка); // 3.1 // В ранее созданной форме нового документа переопределим объект - документ (подменим его на заполненный документ) КопироватьДанныеФормы(ОбъектФормы, ФормаПодчиненного.Объект); // 3.2 ФормаПодчиненного.Модифицированность = Истина; // Чтобы выдавалось сообщение при попытке закрыть документ без сохранения ФормаПодчиненного.Открыть(); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьПодчиненныйДокументПеревыставленияНаСервере(ОбъектФормы, ДокументОснование) // 2.1 // Подготовим данные для заполнения нового документа ДанныеДляЗаполнения = Документы.ПоступлениеПеревыставляемыхТоваровУслуг.ПолучитьСтруктуруДанныхЗаполнения(); // 2.2 // Получим документ-объект (для дальнейшего заполнения) ДокументОбъект = ДанныеФормыВЗначение(ОбъектФормы, Тип("ДокументОбъект.ПеревыставлениеТоваровУслуг")); // 2.3 // Вызовем процедуру обработки заполнения ДокументОбъект.Заполнить(ПараметрыОтбораПеревыставления); // 2.4 // Преобразуем прикладной объект - в объект формы (коллекцию) ЗначениеВДанныеФормы(ДокументОбъект, ОбъектФормы); КонецПроцедуры |
Вариант 2
1 2 3 4 5 6 7 8 9 10 11 12 |
ФормаДокумента = ПолучитьФорму("Документ.УстановкаЦен.Форма.ФормаДокумента"); ФормаДокумента.Объект.ТипЦены = ТипЦены; Для Каждого Строка Из ТаблицаДанных Цикл НоваяСтрока = ФормаДокумента.Объект.ТМЦ.Добавить(); НоваяСтрока.Номенклатура = Строка.Номенклатура; НоваяСтрока.ЕдиницаИзмерения = Строка.ЕдиницаИзмерения; НоваяСтрока.ПравилоНазначенияЦен = Строка.ПравилоНазначенияЦен; НоваяСтрока.Цена = Строка.Цена; НоваяСтрока.Коэффициент = 1; КонецЦикла; ФормаДокумента.Модифицированность = Истина; ФормаДокумента.Открыть(); |
Вариант 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
&НаКлиенте Процедура КомандаОткрытьФорму(Команда) Форма = ПолучитьФорму("Справочник.Пользователи.ФормаОбъекта"); ДанныеФормы = Форма.Объект; ЗаполнитьНаСервере(ДанныеФормы); КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); Форма.Открыть(); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьНаСервере(НовыйОбъект); НовыйОбъект.Наименование = "Новый элемент"; Для К=1 По 100 Цикл НоваяСтрока = НовыйОбъект.ТЧ.Добавить(); НоваяСтрока.РеквизитТЧ = К; КонецЦикла; КонецПроцедуры |