HelpF.pro

Программное создание, заполнение документа и открытие формы (УП, тонкий клиент)

Чтобы программно заполнить документ по кнопке, делаем примерно следующее:

1. на форму, в нашем случае документа, добавляем кнопку (Команда и у нее процедура СоздатьПеремещение(Команда))

2. в ее обработчике пишем код создания документа перемещение товаров и заполняем его

Код 1C v 8.3
 &НаСервере
Функция СоздатьПеремещениеНаСервере(ДанныеФормы)
	ДанныеФормы.Дата=ТекущаяДата();
	// ДанныеФормы.Номер="1";
	ДанныеФормы.СкладОтправитель =  Справочники.Склады.НайтиПоНаименованию("Склад гарантийного обслуживания");
	ДанныеФормы.СкладПолучатель = Справочники.Склады.НайтиПоНаименованию("Склад гарантийных");
	
	новСП=Новый СписокЗначений;	н=0;
	Для Каждого стр из Объект.ДанныеПоГН Цикл 
		Если стр.ДанныеПроверки=Перечисления.СтатусПроверкиГарантии.зн0 тогда //!В документ перемещение только записи статус=зн0
		новСП.Добавить(Строка(стр.НомерЗаводской));  н=н+1;
		КонецЕсли;
	КонецЦикла;
	
	Если н>0 Тогда
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РеализацияТоваровУслугСерии.Серия КАК Серия,
	|	РеализацияТоваровУслугСерии.Ссылка.Дата КАК ДатаОтгрузки,
	|	РеализацияТоваровУслугСерии.Ссылка.Контрагент КАК Контрагент,
	|	РеализацияТоваровУслугСерии.Ссылка КАК Возврат,
	|	РеализацияТоваровУслугСерии.Номенклатура,
	|	ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугСерии.Серия) КАК СерияСТР
	|ИЗ
	|	Документ.ВозвратТоваровОтКлиента.Серии КАК РеализацияТоваровУслугСерии
	|ГДЕ
	|	РеализацияТоваровУслугСерии.Серия В
	|			(ВЫБРАТЬ
	|				СерииНоменклатуры.Ссылка КАК Ссылка
	|			ИЗ
	|				Справочник.СерииНоменклатуры КАК СерииНоменклатуры
	|			ГДЕ
	|				СерииНоменклатуры.Наименование В (&Наименование))
	|
	|УПОРЯДОЧИТЬ ПО
	|	Серия
	|АВТОУПОРЯДОЧИВАНИЕ"; 	
	Запрос.УстановитьПараметр("Наименование", новСП);	
	ТаблицаЗапроса = Запрос.Выполнить().Выгрузить();	
	Для каждого стр из новСП Цикл
		
			НайденнаяСтрока=ТаблицаЗапроса.Найти(стр.Значение,"СерияСТР");
			Если НайденнаяСтрока = Неопределено Тогда
				//нет такого
			Иначе
				нстр=ДанныеФормы.Товары.Добавить();
				нстр.Номенклатура = НайденнаяСтрока.Номенклатура;
				нстр.Серия=НайденнаяСтрока.Серия; 
				нстр.КоличествоУпаковок=1;
				нстр.Количество=1;
				нстр.СтатусУказанияСерий=2;
				нстр.СтатусУказанияСерийОтправитель=2;
				нстр.СтатусУказанияСерийПолучатель=2;
				
				нстр=ДанныеФормы.Серии.Добавить();
				нстр.Номенклатура = НайденнаяСтрока.Номенклатура;
				нстр.Серия=НайденнаяСтрока.Серия; 
				нстр.Количество=1;    
			КонецЕсли;	
	КонецЦикла;
	КонецЕсли;
	Возврат ДанныеФормы;
КонецФункции


&НаКлиенте
Процедура СоздатьПеремещение(Команда)
	Форма=ПолучитьФорму("Документ.ПеремещениеТоваров.ФормаОбъекта"); 
	ДанныеФормы=Форма.Объект;
	ДанныеФормы=СоздатьПеремещениеНаСервере(ДанныеФормы);
	КопироватьДанныеФормы(ДанныеФормы,Форма.Объект);
	Форма.Открыть();
КонецПроцедуры
   

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq83/view/1883.html