helpf.pro
Регистрация
 0 
Распечатать

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

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

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

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

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


&НаКлиенте
Процедура СоздатьПеремещение(Команда)
	Форма=ПолучитьФорму("Документ.ПеремещениеТоваров.ФормаОбъекта"); 
	ДанныеФормы=Форма.Объект;
	ДанныеФормы=СоздатьПеремещениеНаСервере(ДанныеФормы);
	КопироватьДанныеФормы(ДанныеФормы,Форма.Объект);
	Форма.Открыть();
КонецПроцедуры
   
Разместил:   Версии: | 8.2 УП | 8.3 |  Дата:   Прочитано: 44663
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 53
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Автоматическая архивация баз 1С с использованием Cobian Backup и VBS скриптов 9
Клиент попросил настроить автоматическую архивацию баз 1С раз в три дня и выгрузку архивов на Dropbox и на FTP Сервер. Кроме 1С нужно архивировать папку с рабочими документами. Хочет - так хочет, делаем: Первым делом настроим автоматическую архивац
Ввод данных по командировкам в программе ЗУП 0
Ввод сведений о командировках в программе 1С: Зарплата и управление персоналом 8 (ред.30) осуществляется в Разделе Кадры - Все кадровые документы - Создать - Командировка Откроется документ: Ввод сведений о командировках в программ
Посмотреть все результаты поиска похожих
Комментарии
Vovan58
28.08.2019 11:49Комментарий: 2
Vovan58

Жесть конечно. 1С ориентируется на события. Соответственно должен быть следующий текст:

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

А всю процедуру заполнения поместить в модуль объекта Документ.ПеремещениеТоваров в процедуру

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) 

А так Вы нарушаете парадигму программирования - где искать, как и кем заполняется объект?

Vovan58
28.08.2019 11:48Комментарий: 1
Vovan58

Жесть конечно. 1С ориентируется на события. Соответственно должен быть следующий текст:

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

А всю процедуру заполнения поместить в модуль объекта Документ.ПеремещениеТоваров в процедуру

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) 

А так Вы нарушаете парадигму программирования - где искать, как и кем заполняется объект?

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!