Имя: Пароль:
1C
1С v8
Добавление колонок в табличную часть документа
,
0 webDoktor
 
04.10.11
16:05
<b>1С 8.1</b>

<b>Задача:</b> При загрузки формы, добавить 100 новых колонок в табличное поле.

<b>Пытаюсь решить следующим образом задачу:</b>

Счетчик = 0;    
Пока Счетчик <= 100 Цикл
       
   ЭлементыФормы.Таблица.Колонки.Добавить("Колонка"+Счетчик);
   Счетчик = Счетчик + 1;
       
КонецЦикла;

Колонки создаются.

<b>Проблема:</b> После того, как колонки созданы, создаю строку, но в данную строку невозможно внести данные.

<b>Вопрос:</b> Как создать программно 100 новых колонок/столбцов/полей в табличной части документа, чтобы в дальнейшем в них можно было записать данные НЕ программно, а визуально, с использованием формы, где располагается данная табличная часть?
1 Scooter
 
04.10.11
16:06
(0)свяжи с данными
2 Scooter
 
04.10.11
16:07
ТекКолонка = ДокФорма.ЭлементыФормы.Товары.Колонки.Добавить("МестоХраненияПолучатель", "Место хранения получатель");
   ТекКолонка.Данные = "МестоХраненияПолучатель";
   ТекКолонка.УстановитьЭлементУправления(Тип("ПолеВвода"));
   ТекКолонка.ЭлементУправления.КнопкаВыбора = Истина;
   ТекКолонка.ЭлементУправления.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы;
   
   ТекКолонка.ЭлементУправления.УстановитьДействие("НачалоВыбора", Новый Действие("ТоварыМестоХраненияПолучательНачалоВыбора"));
3 zbv
 
04.10.11
16:08
в качестве данных табличного поля не использовать табличную часть, а использовать таблицу значений.
4 SoftIce
 
04.10.11
16:49
или так

ТабЧасть - реквизит формы типа ТаблицаЗначений
   
Для к = 1 по 10 Цикл
   НовКолонка = ТабЧасть.Колонки.Добавить("Колонка"+к, Новый ОписаниеТипов("Строка"));
КонецЦикла;

ЭлементыФормы.ТабЧасть.СоздатьКолонки();
5 webDoktor
 
04.10.11
16:49
> ТекКолонка.Данные = "МестоХраненияПолучатель";

Что это за параметр? Как я понимаю, данные должны браться из источника "МестоХраненияПолучатель"? Это что, справочник?

Остальное все понятно. Сделал так (добавил поле с типом "ПолеВвода"):

ТекКолонка = ЭлементыФормы.Таблица.Колонки.Добавить("Поле", "Новое поле");
ТекКолонка.УстановитьЭлементУправления(Тип("ПолеВвода"));

Колонка создалась. Данные можно вводить.

Проблема (прямо объясняю пошагово): Добавить строчку (в панели есть специальная кнопочка). Далее заполняю реквизит "Наименование" и затем перехожу к созданной колонке "Поле". Два раза кликаю по месту, куда нужно вводить данные, ввожу данные. Затем нажимаю Enter и введенные данные пропадают. Причем, если снова два раза кликнуть на это поле, то как мы видим, данные есть. То есть, данные можно ввести и отредактировать, но данные невозможно просто просмотреть.
6 SoftIce
 
04.10.11
16:52
Попробуй (4)
7 webDoktor
 
04.10.11
16:52
SoftIce,

Если делать так:

Для к = 1 по 10 Цикл
   НовКолонка = Таблица.Колонки.Добавить("Колонка"+к, Новый ОписаниеТипов("Строка"));
КонецЦикла;

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

То возникает ошибка: Поле объекта не обнаружено (Колонки).

А если делать так:

Для к = 1 по 10 Цикл
   НовКолонка = ЭлементыФормы.Таблица.Колонки.Добавить("Колонка"+к, Новый ОписаниеТипов("Строка"));
КонецЦикла;
ЭлементыФормы.Таблица.СоздатьКолонки();

То колонки вовсе не добавляются.
8 Asmody
 
04.10.11
16:53
(0) [Как создать программно 100 новых колонок/столбцов/полей в табличной части документа] — ответ: никак. реквизиты табличных частей создаются только в конфигураторе
9 SoftIce
 
04.10.11
16:57
На форму добавляем ТабличноеПоле. Имя=Таблица; Данные=Таблица.  Создается реквизит формы с тем же именем.

Процедура ПриОткрытии()

   Для к = 1 по 10 Цикл
       НовКолонка = Таблица.Колонки.Добавить("Колонка"+к, Новый(ОписаниеТипов("Строка"));
   КонецЦикла;

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

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

Обрати внимание: колонки добавляешь не в элемент формы а в реквизит формы
10 webDoktor
 
04.10.11
16:58
Asmody,

Предположим, если создавать, допустим электронный журнал для класса. Все помнят его? Много-много-много полей, где каждое поле равняется дате занятия и в этой колонке выставляются оценки. Допустим, там 50 колонок. Получается, нужно создавать 50 реквизитов?
11 Asmody
 
04.10.11
16:59
(9) ты вопрос читал? он не хочет данные программно записывать, хочет чтобы «само». Поэтому ответ «никак».
12 SoftIce
 
04.10.11
16:59
Если ТабличноеПоле связано с ТабличнойЧастью документа - то действительно никак.
13 Asmody
 
04.10.11
17:00
(10) как один из возможных вариантов — да. если хочется, чтобы «само»
14 SoftIce
 
04.10.11
17:01
Электронный - не бумажный. Оценки выставлять каким-то документом и записывать в РС. Потом запросом выбирать и программно заполнять в желаемую форму
15 webDoktor
 
04.10.11
17:03
Asmody,
SoftIce,

Спасибо вам большое. Теперь буду знать.