Имя: Пароль:
1C
1С v8
Программный вывод ТаблицыЗначений на форму.
0 Vasya1c
 
23.10.19
11:26
Здравствуйте, помогите разобраться, пытаюсь вывести таблицу значений на форму обработки программно, реквизита ТЗ нет на форме

ИмяТаблицыЗн="План";
МассивДобавляемыхРеквизитов = Новый Массив;
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ИмяТаблицыЗн, Новый ОписаниеТипов("ТаблицаЗначений")));
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Контрагент", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(100)),ИмяТаблицыЗн , "Контрагент"));

ТаблицаФормы = Элементы.Добавить(ИмяТаблицыЗн, Тип("ТаблицаФормы"));
ТаблицаФормы.ПутьКДанным = ИмяТаблицыЗн;
ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
ЗначениеВРеквизитФормы(ТаблицаЗначений, ИмяТаблицыЗн);

Вылетает ошибка,
Недопустимое значение параметра (параметр номер '2')
{ВнешняяОбработка.ПолучитьФайлЭкселя.Форма.Форма.Форма(187)}:  ЗначениеВРеквизитФормы(ТаблицаЗначений, ИмяТаблицыЗн);
1 ДенисЧ
 
23.10.19
11:27
А нет ли у тебя на форме уже реквизита с таким именем?
2 Franchiser
 
гуру
23.10.19
11:33
где ИзменитьРеквизиты ?
3 Vasya1c
 
23.10.19
11:36
(1)Реквизита с таким именем нет.
(2) процедура большая я часть выложил сюда,на самом деле так

ИмяТаблицыЗн="План";
МассивДобавляемыхРеквизитов = Новый Массив;
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ИмяТаблицыЗн, Новый ОписаниеТипов("ТаблицаЗначений")));
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Контрагент", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(100)),ИмяТаблицыЗн , "Контрагент"));

ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
ТаблицаФормы = Элементы.Добавить(ИмяТаблицыЗн, Тип("ТаблицаФормы"));
ТаблицаФормы.ПутьКДанным = ИмяТаблицыЗн;
ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
ЗначениеВРеквизитФормы(ТаблицаЗначений, ИмяТаблицыЗн);
4 Vasya1c
 
23.10.19
11:38
На самом деле , пример из учебника практически, но что то не работает.
5 Андрюха
 
23.10.19
11:40
СоздатьКолонки
6 Franchiser
 
гуру
23.10.19
11:41
Если реквизит создаешь программно, то обращение к нему возможно как правило только через "ЭтоФорма".
ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
7 hhhh
 
23.10.19
11:42
(4) ну может таблицы разные. Для ЗначениеВРеквизитФормы всё должно совпадать, типы колонок и их количество и всё остальное.

Например, Контрагент - действтельно в другой таблице тоже строка длиной 100?
8 Vasya1c
 
23.10.19
11:57
Парни благодарю, действительно в тз типы не совпадают.
  Т3111= Новый ТаблицаЗначений();
  Т3111.Колонки.Добавить("Контрагент",Новый ОписаниеТипов("Строка"));
  Новаястрока=Т3111.Добавить();
  Новаястрока.Контрагент = "Леопольд";
  ЗначениеВРеквизитФормы(Т3111, ИмяТаблицыЗн);
Вот так без ошибки.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший