программно создать док а потом открыть его форму на УФ

1. uralcentr 06.11.14 08:41 Сейчас в теме
загружаю накладную из текста, хотелось бы понять, как вернуть на клиент заполненную форму и показать её пользователю?


&НаСервере
Процедура СделатьДокументы( )
	
	Накл = Документы.ПоступлениеТоваров.СоздатьДокумент();
	Накл.Дата = ТекущаяДата();
	Накл.Организация = Справочники.Организации.НайтиПоНаименованию("ИП Новиков Олег Васильевич");
	Накл.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Основной поставщик");
	Накл.Склад = Справочники.Склады.НайтиПоНаименованию("Склад");
	Накл.Магазин = Справочники.Магазины.НайтиПоНаименованию("Магазин");
	ИмяФайла = Объект.ФайлЗагрузки;
	Текст = Новый ТекстовыйДокумент;
	Текст.Прочитать(Объект.ФайлЗагрузки);
	Сообщить(Текст);
	Для Ы = 2 По Текст.КоличествоСтрок() Цикл
		Строка = Текст.ПолучитьСтроку(ы);
		//		Позиция = Найти(Стр, "~");
		//		Код = Сред(Стр,1,Позиция-1);
		//		Буфер = стрЗаменить(Адрес,",",Символы.ПС);
		//Город = стрПолучитьСтроку(Буфер,1);
		//Улица = стрПолучитьСтроку(Буфер,2);
		//Дом = стрПолучитьСтроку(Буфер,3);
		Поля = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка, "~");
		Имя = СтрЗаменить(Поля[1],Символ(34),"");
		//С = Накл.Товары.Добавить();
		Ном = Справочники.Номенклатура;
		Если Справочники.Номенклатура.НайтиПоНаименованию(Имя) = ном.ПустаяСсылка() Тогда
			Ном = Справочники.Номенклатура.СоздатьЭлемент();
			Ном.Наименование = Имя;
			Ном.НаименованиеПолное = Имя;
			Если Справочники.БазовыеЕдиницыИзмерения.НайтиПоНаименованию(СтрЗаменить(Поля[5],Символ(34),"")) <> Справочники.БазовыеЕдиницыИзмерения.ПустаяСсылка() Тогда
				Ном.ЕдиницаИзмерения = Справочники.БазовыеЕдиницыИзмерения.НайтиПоНаименованию(СтрЗаменить(Поля[5],Символ(34),""));
			Иначе 
				Ном.ЕдиницаИзмерения = Справочники.БазовыеЕдиницыИзмерения.НайтиПоКоду("796");
			КонецЕсли;
			//Ном.
			Ном.Артикул = СтрЗаменить(Поля[2],Символ(34),"");
			Ном.Записать();
			Сообщить("создан товар " + Имя);
			//С.Номенклатура = Ном;
		Иначе 
			Продолжить;
		КонецЕсли;
	КонецЦикла;	
	Для Ы = 2 По Текст.КоличествоСтрок() Цикл
		Строка = Текст.ПолучитьСтроку(ы);
		//		Позиция = Найти(Стр, "~");
		//		Код = Сред(Стр,1,Позиция-1);
		//		Буфер = стрЗаменить(Адрес,",",Символы.ПС);
		//Город = стрПолучитьСтроку(Буфер,1);
		//Улица = стрПолучитьСтроку(Буфер,2);
		//Дом = стрПолучитьСтроку(Буфер,3);
		Поля = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка, "~");
		Имя = СтрЗаменить(Поля[1],Символ(34),"");
		С = Накл.Товары.Добавить();
		//Ном = Справочники.Номенклатура;
		//Если Справочники.Номенклатура.НайтиПоНаименованию(Имя) = ном.ПустаяСсылка() Тогда
		//	Ном = Справочники.Номенклатура.СоздатьЭлемент();
		//	Ном.Наименование = Имя;
		//	Ном.НаименованиеПолное = Имя;
		//	Ном.ЕдиницаИзмерения = Справочники.БазовыеЕдиницыИзмерения.НайтиПоНаименованию(СтрЗаменить(Поля[5],Символ(34),""));
		//	//Ном.
		//	Ном.Записать();
		//	Сообщить("создан товар " + Имя);
		//	С.Номенклатура = Ном;
		//Иначе	
			//С.Номенклатура = ?(Не Справочники.Номенклатура.НайтиПоНаименованию(Имя) = ном.ПустаяСсылка(), Справочники.Номенклатура.НайтиПоНаименованию(Имя), СоздатьТовар(Имя));
			С.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Имя);
		//КонецЕсли;
		С.Количество = Число(СтрЗаменить(Поля[3],Символ(34),""));
		С.Цена = Число(СтрЗаменить(Поля[6],Символ(34),""));
		С.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
		С.СуммаНДС = Число(СтрЗаменить(Поля[9],Символ(34),""));
		С.Сумма = Число(СтрЗаменить(Поля[8],Символ(34),""));
		С.Количество = Число(СтрЗаменить(Поля[3],Символ(34),""));
	КонецЦикла;
	Накл.Записать(РежимЗаписиДокумента.Запись);
	//Для Каждого Ы Из Накл.Товары Цикл
	//	Ы.Количество = Окр(Ы.Сумма / Ы.Цена);
	//КонецЦикла;	
	ПараметрыПТМЦ = Новый Структура; 
	//ОткрытьФорму("Документ.ПоступлениеТоваров.ФормаОбъекта",ПараметрыПТМЦ,Накл).Обновить();
	Накл.Ответственный = Пользователи.ТекущийПользователь();
	Накл.Записать(РежимЗаписиДокумента.Запись);
	//ОткрытьФ(Накл);
//	#Если Клиент Тогда

//	Накл.ПолучитьФорму("ФормаДокумента").Открыть();
//	Накл.ПолучитьФорму("ФормаДокумента").Обновить();
//#КонецЕсли
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. DJDUH 17 06.11.14 11:42 Сейчас в теме
(1) Shanya1983, А так
 МояФорма = Накл.ПолучитьФорму(); Мояформа.Открыть();
разве на клиенте не работает?
4. spezc 784 06.11.14 11:46 Сейчас в теме
(3) это только для толстого клиента
2. spezc 784 06.11.14 09:05 Сейчас в теме
верните на клиент ссылку записанного документа и откройте ее через ОткрытьЗначение - откроется основная форма объекта.
если же хотите открыть какую-то особенную форму, тогда:

ПараметрыФормы = Новый Структура;
ПараметрыФормы.вставить("Ключ",СсылкаНадокумент);
ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.ОсобеннаяФорма", ПараметрыФормы);
5. Olna 06.11.14 11:51 Сейчас в теме
как вариант сначала можно ФормаДокумента = ПолучитьФорму("путь");
а потом заполнить структуру ее данных через ФормаДокумента.Объект
6. copybases 68 12.11.14 22:30 Сейчас в теме
Попробуйте использовать функцию ОткрытьЗначение().
Пример из синтакс-помощника:

Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
ОткрытьЗначение(Товар);

В Вашем случае будет не элемент справочника, а документ.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот