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