Имя: Пароль:
1C
1С v8
Обращение к программно созданной колонке в ТЧ
0 Letuchiy Gollandets
 
22.03.13
01:16
Коллеги, такая проблема:

1. Сначала я программно создал 31 колонку в табличной части (ТЧ была создана в конфигураторе, также как и две колонки) с именами Реквизит1, Реквизит2,...,Реквизит31

2. после того, как ТЧ вместе с программно созданными колонками удачно отобразилась на управляемой форме, я пытаюсь передать значения, введенные интерактивно пользователями в другую ТЧ. Но при этом не могу "обратиться" к тем колонкам, которые были созданы программно. Вот код, что я делаю неправильно?

Итого=0;
Для к=1 по 31 Цикл    
ИскомаяСтрока=СписокСотрудников[с-1];   //СписокСотрудников - это ТЧ
ЗначениеКолонки=ИскомаяСтрока["Реквизит"+к];
Итого=Итого+ЗначениеКолонки;
КонецЦикла;

Программа ругается на до, что поля "Реквизит1" нет (
1 hhhh
 
22.03.13
02:09
точно в ТЧ создавали колонки? Может в табличном поле?
2 DirecTwiX
 
22.03.13
02:30
Стесняюсь спросить.. Зачем это могла понадобиться???
Вспомнил, как сапёра писал в 1С..
3 DirecTwiX
 
22.03.13
02:31
Показывай как создавал
4 Wobland
 
22.03.13
06:07
(0) обращаешься к несуществующему полю. с уважением, ваш К.О.
5 Капитан О
 
22.03.13
06:11
ну нельзя программно колонки у ТЧ делать. автор врёт
6 Web00001
 
22.03.13
07:40
(5) Тоже очень долго рассматривал СП, http://take.ms/Jhb0JV так и не понял а как? Как автор создал колонки у ТЧ программно?
7 Wobland
 
22.03.13
07:47
(6) может, внешнюю приблуду написал, которая метаданные правит
8 Михаил 1С
 
22.03.13
07:47
(5), (6)  "Как автор создал колонки у ТЧ программно?"
Я тоже недоумеваю.
Думаю, просто ошибся, с кем не бывает.
9 Wobland
 
22.03.13
08:03
(8) поди пойми его с такой ошибкой
10 Letuchiy Gollandets
 
22.03.13
10:46
Коллеги, вот код, которым программно создаю колонки:
ТипыРеквизита=Новый Массив;
ТипыРеквизита.Добавить(Тип("Число"));
ОписаниеТиповДляРеквизита=Новый ОписаниеТипов(ТипыРеквизита, Новый КвалификаторыЧисла(2,0));

Д1=День(Объект.ДатаС);
Д2=Д1+((Объект.ДатаПо-Объект.ДатаС)/(24*60*60));
Для с=Д1 по Д2 цикл;
   
ДобавляемыеРеквизиты=Новый Массив;
НовыйРеквизит=новый РеквизитФормы("Реквизит"+с,ОписаниеТиповДляРеквизита,"Объект.СписокСотрудников",с,истина);
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);


НовыйЭлемент=Элементы.Добавить("Реквизит"+с,Тип("ПолеФормы"),Элементы.СписокСотрудников);
НовыйЭлемент.ПутьКДанным="Объект.СписокСотрудников"+"."+"Реквизит"+с;
НовыйЭлемент.Вид=ВидПоляФормы.ПолеВвода;
НовыйЭлемент.Заголовок=С;

КонецЦикла;

Когда дело доходит до того кода, который я описал вначале, то программа действительно "не видит" программных колонок - это и есть мой вопрос - почему? ведь они то уже программно созданы...!
11 Letuchiy Gollandets
 
22.03.13
10:48
"СписокСотрудников" - это в конфигураторе созданная табличная часть..
12 Wobland
 
22.03.13
10:50
(11) с колонками типа РеквизитН, разумеется ;)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший