Имя: Пароль:
1C
1С v8
Добавление в табличное поле формы значений (обычное приложение)
0 Len1vec
 
04.03.23
14:15
Добрый день!
Подскажите, пожалуйста, как правильно реализовать открытие формы в обычном приложении (толстый клиент).
Есть документ. В форме документа вызывается проверка. По результатам этой проверки, если найдены соответствующие записи в табличной части документа, то надо открыть произвольную форму, принадлежащую этому документа.
Функция Проверка()
    МассивЗначений = ИмяТЧ.НайтиСтроки(Отбор);
    
    Если МассивЗначений .Количество() > 0 Тогда
        Форма = ПолучитьФорму("ПроизвольнаяФормаДокумента");
        Форма.ПеременнаяФормыЭкспорт = МассивЗначений;
        Форма.Открыть();
    КонецЕсли;
КонецФункции

На произвольной форме документа создал табличное поле, у которого в поле "Данные" указал тип данных "РеквизитФормы". Код обработки формы перед открытием:

Перем ПеременнаяФормыЭкспорт Экспорт;

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    РеквизитФормы = ПеременнаяФормыЭкспорт;
    Для Каждого Стр Из ПеременнаяФормыЭкспорт Цикл
        ЭлементыФормы.ИмяТабличногоПоля.ДобавитьСтроку();
        //И тут я застопорился
    КонецЦикла;
КонецПроцедуры

Как правильно во время выполнения процедуры "ПередОткрытием" произвольной формы документа заполнить табличное поле из массива значений, который был передан в переменную ПеременнаяФормыЭкспорт?
1 RomanYS
 
04.03.23
14:41
//ЭлементыФормы.ИмяТабличногоПоля.ДобавитьСтроку();
Ты путаешь данные и элементы формы

СтрТЗ = Форма.ИмяРеквизитаС_ТЗ.Добавить();
точнее в данном контексте
СтрТЗ = ЭтаФорма.ИмяРеквизитаС_ТЗ.Добавить();
или просто
СтрТЗ = ИмяРеквизитаС_ТЗ.Добавить();
2 Lexandr
 
05.03.23
06:59
Создаешь реквизит формы ИмяТабличногоПоля, присваиваешь тип ТаблицаЗначений. Создаешь на форме элемент табличноеполе с именем ИмяТабличногоПоля и в поле "данные" выбираешь ИмяТабличногоПоля.
Процедура ПриОткрытии()    
ИмяТабличногоПоля.Колонки.Добавить("Номер");

Для Каждого Стр Из ПеременнаяФормыЭкспорт Цикл
     Стр = ИмяТабличногоПоля.Добавить();
КонецЦикла;
ЭлементыФормы.ИмяТабличногоПоля.Значение = ИмяТабличногоПоля

ЭлементыФормы.ИмяТабличногоПоля.СоздатьКолонки();

КонецПроцедуры