Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 04:36

Загрузка табличной части из формы выбора в документ

Автор Julia_Leo, 21 апр 2022, 17:39

0 Пользователей и 1 гость просматривают эту тему.

Julia_Leo

Есть документ ЗаказНаПроизводство, там кнопка заполнить по раскрою. Документ заимствован из расширения. При нажатии на кнопку открывается форма выбора. Нужно Номенклатуру и Количество из табличной части выбранного элемента добавить в документ ЗаказНаПроизводство. Поле Полуфабрикат табличной части имеет имя Номенклатура.


&НаКлиенте
Процедура пп_ЗаполнитьПоРаскроюВместо(Команда)
 //ПараметрыФормы = Новый Структура("МножественныйВыбор", Истина);   
 //ОткрытьФорму("Справочник.Детали.ФормаВыбора",,Элементы.Продукция);
 
 //ПараметрыФормыВыбора = Новый Структура;
 //   ПараметрыФормыВыбора.Вставить("ЗакрыватьПриВыборе", Ложь);
 //   ПараметрыФормыВыбора.Вставить("МножественныйВыбор", Истина);
 //   ОткрытьФорму("Документ.ЗаказНаПроизводство.ФормаВыбора",ПараметрыФормыВыбора,ЭтаФорма,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
   
ОткрытьФорму("Справочник.Детали.ФормаВыбора",,ЭтаФорма);   
КонецПроцедуры


&НаСервере
Процедура ЗаполнениеТабДок(НеведомаяХрень)
   //Для Каждого ЭлементМассива Из МассивРезультатов Цикл
   //    нСтрока = Объект.Продукция.Добавить();
   //    ЗаполнитьЗначенияСвойств(нСтрока, ЭлементМассива);//Реквизиты ТЧ и Документа1 которые будут заполнены должны иметь одинаковое имя
   //КонецЦикла;
   Запрос = новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
|   Детали.Состав.(
|      Номенклатура КАК Номенклатура,
|      Количество КАК Количество
|   ) КАК Состав
|ИЗ
|   Справочник.Детали КАК Детали
|ГДЕ
|   Детали.Ссылка = &НеведомаяХрень";

Запрос.УстановитьПараметр("НеведомаяХрень", НеведомаяХрень);

Результат = Запрос.Выполнить();
Выборка=Результат.Выбрать();
Выборка.Следующий();

НоваяСтрока =Объект.Продукция.Добавить();
НоваяСтрока.Номенклатура = Выборка.Номеклатура;
НоваяСтрока.Количество = Выборка.Количество;
КонецПроцедуры

&НаКлиенте
Процедура пп_ОбработкаВыбораПосле(ВыбранноеЗначение, ИсточникВыбора)
   //// Вставить содержимое обработчика.   
   //ЗаполнитьТЧ(ВыбранноеЗначение);
ЗаполнениеТабДок(ВыбранноеЗначение);
КонецПроцедуры

Снимок экрана (1).pngСнимок экрана (2).png

Julia_Leo

При выполнении ошибка поле Номенклатура не обнаружено. Не находит именно поле справочника Детали

nvj84

Не находит потому что его там нет. Поле называется полуфабрикат. Запрос лучше сразу к табличной части делать.
&НаКлиенте
Процедура ЗаполнитьПоРаскрою(Команда)
ОткрытьФорму("Справочник.Детали.ФормаВыбора",,ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.Детали") Тогда
ЗаполнениеТабДок(ВыбранноеЗначение);
КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ЗаполнениеТабДок(Деталь)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Деталь);
Запрос.Текст=
"ВЫБРАТЬ
| ДеталиСостав.Полуфабрикат КАК Номенклатура,
| ДеталиСостав.Количество КАК Количество
|ИЗ
| Справочник.Детали.Состав КАК ДеталиСостав
|ГДЕ
| ДеталиСостав.Ссылка = &Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Продукция.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры


Похожие темы (5)

Рейтинг@Mail.ru

Поиск