Имя: Пароль:
1C
 
Добавление Колонок в табличнуюЧасть
0 mzelensky
 
09.11.09
15:20
Здравствуйте! Стоит следующая проблема: имеется справочник, в форме элемента справочника пользователь указывает количество строк и количество колонок, нажимает кнопочку "сформировать" и в результате должно получиться следующее - в табличной части (в этой же форме) должно создаться необходимое количество колонок ( (колонка наименования и колонка количества)*число колонок введенное пользователем ) и затем необходимое количество строк. Как создать колонку, я знаю, но у меня не получается определить этой колонке ТИП ЗНАЧЕНИЯ (мне нужно чтобы у колонки Наименования была ссылка на элемент другого справочника, а у колонки Количество - число). Подскажите плиз, как это сделать!?!?!?
И еще, можно ли использовать вместо табличной части ТабличноеПоле?
1 ТелепатБот
 
гуру
09.11.09
15:20
2 twise
 
09.11.09
15:26
Колонки.Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>)
3 mzelensky
 
09.11.09
15:38
Пишу так:

Для сч=1 по ПолеВвода2 цикл
     
       имя="Наименование"+строка(сч);
      Табличноеполе1.Колонки.Добавить(имя, Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), имя );
      имя="Количество"+строка(сч);
      Табличноеполе1.Колонки.Добавить(имя, Новый ОписаниеТипов("Число"), имя);
   КонецЦикла;


ОШИБКА: неверное имя колонки на первой же итерации!ТабличноеПоле1 - тип значения ТаблицаЗначений.
4 hhhh
 
09.11.09
15:46
(3) так добавляй в таблицу значений, зачем ты через задницу хочешь добавить?
5 vmv
 
09.11.09
15:46
строка(сч) - формат правильно задай без пробелов и разделителей
6 vmv
 
09.11.09
15:50
тип сначала составной сделать надо и прописать его при добавлении колонки ОДИН раз.

код вообще бредовый)
7 mzelensky
 
09.11.09
15:58
Если я делаю вот так:

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

То все создается нормально!!!Код Работоспособный!!! Но, мне нужно сделать тоже самое с Табличнм полем (размещенным в форме), у которого тип данных ТаблицаЗначений. Почему-то, когда я пытаюсь сдела тоже самое с этим Табличным Полем, то выходит ошибка!!!
8 mzelensky
 
09.11.09
16:01
(5) Никакого формата там создавать не надо в (строка(сч)). Таким образом я просто добиваюсь ,чтобы имена колонок были:
Наименование1
Количество1
Наименование2
Количество2

и так далее!Составной тип тут тоже НЕ нужен. так как одной ячейки соответствует только 1 тип значения (либо ссылка на справочник, либо число)!
9 73
 
09.11.09
16:02
(7) Потому что ТП не есть ТЗ.
Добавь колонки в ТЗ, а у ТП сделай СоздатьКолонки().
10 butterbean
 
09.11.09
16:02
(7) посмотри отладчиком - перед добавлением твоих колонок нету ли уже с такими же именами
11 NcSteel
 
09.11.09
16:04
УТ документ Установка Цен (хороший пример)
12 mzelensky
 
09.11.09
16:17
В итоге вот так сделал - работает:

Для сч=1 по ПолеВвода2 цикл
     
       имя="Наименование"+строка(сч);
       Если ТабличноеПоле1.Колонки.Найти(имя)<>Неопределено тогда
           продолжить;
       КонецЕсли;

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


Теперь другйо вопрос, как тоже самое сделать с табличной частью????
13 asady
 
09.11.09
16:27
в ТП создавай колонки
типа так:

ТекКолонка = ЭлментыФормы.табличноеПоле1.Колонки.Добавить(Имя);
ТекКолонка.УстановитьЭлементУправления(Тип("ПолеВвода"));
ЭУ_Колонки = Колонка.ЭлементУправления;
ЭУ_Колонки.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
14 mzelensky
 
09.11.09
16:39
(13) Все добавляется, но глюк такой:
Когда добавляешь строку и указываешь в колонке "Наименование" какой либо элемент справочника Номенклатура, то наименование не отображается в ячейке табличной части. При этом же, если создать скажем 3 строки и хотябы одной из них указать какой-то элемент справочника, то и все остальным строка присвоется это значение :(
15 asady
 
09.11.09
16:40
(14) эти колонки можно заполнять и читать теперь только ПриПолученииДанных() или ПриВыводеСтроки()
16 asady
 
09.11.09
16:41
(15) они же не связаны никак с источником данных твоего ТП :)

ты видимо задачу плохо поставил :) - бывает.... - особенно поначалу
17 mzelensky
 
09.11.09
16:44
Просто до этого не приходилось сталкиваться с динамическим созданием реквизитов ТабличнойЧасти :( а сейчас вот приперло!
18 asady
 
09.11.09
16:46
(17) пойми для это есть источник данных динамический ТЗ например, а Табличная часть это статика.
19 mzelensky
 
09.11.09
16:47
Мне нужно, чтобы эти данные хранились в Базе. Т.е. первоначально я ТЗ создам, уже это сделал, но как эти данные записать так, чтобы при повторном вызове элемента справочника (формы где все это делается) все ранее введенные данные остались, а не сбросились в 0?!
20 asady
 
09.11.09
16:48
(19) тебе в (11) посоветовали учиться на типовых - пробовал?
21 NcSteel
 
09.11.09
16:50
(19) Такое ТЧ делается через 2 ТЧ.
22 mzelensky
 
09.11.09
16:50
А там реализована именно эта технология?
Я не люблю лесть в типовые, потому что там много лишнего и тяжело разобраться.
23 NcSteel
 
09.11.09
16:56
(22) В типовых мало лишнего (просто сделано уиверсально), да реализовано.
24 mzelensky
 
09.11.09
17:09
Хорошо, посмотрю. Спасибо! :)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший