Здравствуйте всем, уважаемые форумчане. Заранее прошу прощения и не кидаться камнями, потому что знаю что задача плёвая, но не могу решить, так как в программировании 1С совсем чайник. Собственно сама задача. Мне нужно создать форму обработки, заполнить её табличную часть данными в цикле и открыть её модально. Вроде всё просто, но не выходит заполнить табличную часть.
1С 8.2.19.130, Форма обработки обычная. Создал я эту форму с названием ФормаСпецификации. В этой форме есть табличная часть (Спецификация). Далее создаю табличную часть, называю её Спецификация, там всего 2 реквизита (НомерЯщика и НеттоЯщика), и в свойствах формы в табличной части, в поле "Данные" выбираю её. Необходимо при нажатии кнопки чтобы эта форма вывелась модально и заполнились данные табличной части. Вот процедура при нажатии кнопки.
Процедура СформироватьСпецификацию(Элемент)
ФормаСпецификации = Обработки.ИнтерфейсМаркировки.ПолучитьФорму("ФормаСпецификации");
Для каждого ТекСтрока из Товары Цикл
СтрокаТабличнойЧасти = Спецификация.Добавить();
СтрокаТабличнойЧасти.НомерЯщика = Число(ТекСтрока.ПорядковыйНомер);
СтрокаТабличнойЧасти.НеттоЯщика = Число(ТекСтрока.КоличествоNetto);
КонецЦикла;
ФормаСпецификации.ОткрытьМодально();
КонецПроцедуры
Lamozavrik @ Сегодня, 15:48
,
Добрый день! У Вас нет объекта из которого получать данные(т.е. документа из которого необходимо прочитать табличную часть).
Док = СсылкаНаОбъект; // реквизит обработки - ссылка на документ из которого надо прочитать табличную часть
Для каждого Стр Из Док.Товары Цикл // Цикл обработки табличной части "Товары"
НоваяСтр = Форма.Спецификация.Добавить();
НоваяСтр.НомерСтроки = Стр.НомерСтроки;
НоваяСтр.Номенклатура = Стр.Номенклатура.Наименование;
НоваяСтр.Кво = 0;
НоваяСтр.КвоДокумент = Стр.Количество;
КонецЦикла;
Форма.Открыть();
denis84 @ Сегодня, 16:16
,
Простите, не совсем понимаю. Данные у меня берутся с другой формы. Если формировать документ с макета, то всё ок.
Товары - это тоже табличная часть. Если выводить в цикле через "Сообщить", то всё нормально выводится. Я просто её строки перебираю в цикле и хочу этими данными заполнить табличную часть другой формы.
Lamozavrik @ Сегодня, 16:23
,
"Товары" табличная часть этой формы? Попробуйте написать "Форма.Товары"
denis84 @ Сегодня, 16:16
,
Сиситема такая: оператор взвешивает товар, вес и номер ящика заполняются в табличную часть "Товары", и эти данные выводятся в форме "Товары". Далее я беру эти данные с табличной части "Товары" и перебираю в цикле. И вот "ТекСтрока" - Это одна строка этих данных. Мне этими данными нужно заполнить другую табличную часть (Спецификация) и вывести эти данные в форме "ФормаСпецификации". Только вот при открытии эта табличная часть пустая. Не заполняется
ФормаСпецификации = Обработки.ИнтерфейсМаркировки.ПолучитьФорму("ФормаСпецификации"); //Получаю новую форму
Для каждого ТекСтрока из Товары Цикл //В цикле перебираю данные из табличной части "Товары". В "ТекСтрока" всё присутствует
СтрокаТабличнойЧасти = Спецификация.Добавить(); //Добавляю строку в табличную часть "Спецификации"
СтрокаТабличнойЧасти.НомерЯщика = Число(ТекСтрока.ПорядковыйНомер); //Заполняю значения реквизитов
СтрокаТабличнойЧасти.НеттоЯщика = Число(ТекСтрока.КоличествоNetto);
КонецЦикла;
ФормаСпецификации.ОткрытьМодально(); //Вывожу форму, но табличная часть пустая
ФормаСпецификации = ЭтотОбъект.ПолучитьФорму("ФормаСпецификации"); //Получаю новую форму
Для каждого ТекСтрока из Товары Цикл //В цикле перебираю данные из табличной части "Товары". В "ТекСтрока" всё присутствует
СтрокаТабличнойЧасти = ФормаСпецификации.Спецификация.Добавить(); //Добавляю строку в табличную часть "Спецификации"
СтрокаТабличнойЧасти.НомерЯщика = Число(ТекСтрока.ПорядковыйНомер); //Заполняю значения реквизитов
СтрокаТабличнойЧасти.НеттоЯщика = Число(ТекСтрока.КоличествоNetto);
КонецЦикла;
ФормаСпецификации.ОткрытьМодально();
denis84 @ Сегодня, 16:43
,
Пишет что Поле объекта не найдено (НомерЯщика), хотя реквизиты формы есть, реквизиты табличной части есть...
Lamozavrik @ Сегодня, 16:48
,
Надо смотреть обработку! Может мы разговариваем о разных вещах (не понимаем друг друга). Киньте мне на почту в личку написал адрес
denis84 @ Сегодня, 16:53
,
Сейчас выгружу и кину
denis84 @ Сегодня, 16:53
,
Спасибо. Кинул
ФормаСпецификации = ЭтотОбъект.ПолучитьФорму("ФормаСпецификации");
Для Каждого ТекСтрока Из Товары Цикл // заполним табличную часть документа, из ТаблицыЗначений
НС = ФормаСпецификации.Спецификация.Добавить();
НС.Номенклатура = ТекСтрока.Номенклатура;
КонецЦикла;
ФормаСпецификации.ОткрытьМодально();
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua