Имя: Пароль:
1C
1С v8
Заполнение таблицы значений управляемая форма
0 Noobik1C
 
08.07.15
09:17
&НаСервере
Перем ТаблицаДанных Экспорт;

&НаСервере
Процедура СоздатьТаблицуНаСервере(СтруктураКолонок)
    ТаблицаДанныхЗ = Новый ТаблицаЗначений;
    //ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
    Для каждого ЭлементСтруктуры Из СтруктураКолонок Цикл
        ТаблицаДанныхЗ.Колонки.Добавить(ЭлементСтруктуры.Ключ);
    КонецЦикла;
КонецПроцедуры

&НаСервере
Процедура ДобавитьСтрокуВТаблицуЗначений(СтруктураКолонок)
    НоваяСтрока = ТаблицаДанных.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока,СтруктураКолонок);
КонецПроцедуры

Также пробовал создавать реквизит таблицазначений на форме, все время неопределено, как ее заставить работать.
1 Галахад
 
гуру
08.07.15
09:23
Разные же переменные.
2 olegves
 
08.07.15
09:27
(0) добавь свою ТЗ в реквизиты формы - и будет тебе щастье
3 Noobik1C
 
08.07.15
09:32
Одинаковые, то не тот кусок кода был.
Форма.Форма.Форма(15)}: Значение не является значением объектного типа (Добавить)
    НоваяСтрока = ТаблицаДанных.Добавить();
Вот такая ошибка когда с переменной.
А вот такая когда с ТЗ в реквизитах формы.
    ТаблицаДанных_ = Новый ТаблицаЗначений;
по причине:
Нельзя изменять поле, содержащее объект данных формы
4 olegves
 
08.07.15
09:50
(3) Зачем создавать ТЗ, когда она у тебя уже создана в реквизитах?
И не забудь, большинство операций с ТЗ выполняется на сервере
5 Noobik1C
 
08.07.15
09:52
(4) Ну если не создавать то пишет другую ошибку:
Поле объекта не обнаружено (Колонки)
ТаблицаДанных_.Колонки.Добавить(ЭлементСтруктуры.Ключ);
6 Drac0
 
08.07.15
09:54
(5) Пздец. А ТаблицаДанных_ какого у тебя типа?
7 Noobik1C
 
08.07.15
09:55
(6) ДанныеФормыКоллекция, поэтому и не добавляются колонки. Но почему то никак не ТЗ.
8 Drac0
 
08.07.15
09:57
(7) А ты почему в реквизит сразу не добавляешь колонки? На форме. Если хочешь добавлять динамически, то делается это совсем по другому.
9 Noobik1C
 
08.07.15
10:00
(8) Да хочу добавлять динамически так как количество колонок будут отличать каждый раз
10 Остап Сулейманович
 
08.07.15
10:03
(0) Вообще нет никакого смысла вот в этом :
&НаСервере
Перем ТаблицаДанных Экспорт;
11 Noobik1C
 
08.07.15
10:04
(10) та я уже понял, что тут все непросто.
12 Остап Сулейманович
 
08.07.15
10:05
+ (10) Нужно в реквизитах формы создать реквизит с типом ТаблицаЗначений. Тогда ее можно будет заполнять, менять количество колонок НА СЕРВЕРЕ.
13 Noobik1C
 
08.07.15
10:07
(12) так я и создал реквизит на форме, и выдает (5) потому что  НаСервере у нее значение как ДанныеФормыКоллекция
14 Остап Сулейманович
 
08.07.15
10:10
+ (12) Для отображения данных НА КЛИЕНТЕ нужно на форму добавить Элемент "таблица". Для нее указать "путь к данным" твой реквизит. И НА СЕРВЕРЕ заполнять ее колонками привязанными к колонкам твоего реквизита.
15 Drac0
 
08.07.15
10:11
(13)

ТаблицаФормы- твоя таблица

НовыеКолонки  = Новый Массив;

ИмяРеквизита    = ПрефиксФМ+ТекНомФормата;
НовыйРеквизитТЧ = Новый РеквизитФормы(ИмяРеквизита, НужныйТип, ТаблицаФормы,, Истина);
НовыеКолонки.Добавить(НовыйРеквизитТЧ);

ИзменитьРеквизиты(НовыеКолонки,СтарыеКолонки);

для новыйх колонок добавляешь элементы формы, если нужно

ТекЭлемент = Элементы.Добавить(ИмяРеквизита, Тип("ПолеФормы"),ТекГруппа);
ТекЭлемент.Вид                 = ВидПоляФормы.ПолеВвода;
ТекЭлемент.ГоризонтальноеПоложение     = ГоризонтальноеПоложениеЭлемента.Право;
ТекЭлемент.РастягиватьПоГоризонтали    = Ложь;
ТекЭлемент.БыстрыйВыбор            = Истина;
ТекЭлемент.ТолькоПросмотр        = Истина;
ТекЭлемент.ОтображатьВШапке        = Ложь;
ТекЭлемент.Заголовок                = "Любой заголовок";
ТекЭлемент.Шрифт                    = пЖирныйШрифт;
ТекЭлемент.Ширина             = пШиринаКолонки;
ТекЭлемент.ОтображатьВПодвале        = Ложь;
ТекЭлемент.ПутьКДанным               = ТаблицаФормы +"."+ИмяРеквизита;
16 Остап Сулейманович
 
08.07.15
10:12
(13) Посмотри что внутри этой коллекции.
17 Noobik1C
 
08.07.15
10:16
(14) А если мне не нужно выводить данные на форму? Мне просто таблица нужна для дальнейшего создания всякой фигни. Что никак нельзя без добавления таблицы?
18 Drac0
 
08.07.15
10:18
(17) Если ты с ней хочешь работать только на Сервере, то создавай и передавай ее параметром между функциями.
19 Noobik1C
 
08.07.15
10:21
(18) Параметром это что я пытался сделать в первом варианте через переменную? Или как?
20 Drac0
 
08.07.15
10:22
(19) Ага.
21 Noobik1C
 
08.07.15
10:29
(20) Так оно ж ошибку выдает, когда добавляю колонки они заполняються норм, а когда попадаю в процедуру с добавлением строк, то уже моя ТаблицаДанных имеет неопределено (.
22 Noobik1C
 
08.07.15
10:46
Как работать с переменной при переходе в другую серверную процедуру значение у переменной = неопределено.
23 antoneus
 
08.07.15
11:30
(17) Ты можешь создать реквизит формы таблица значений и ВНЕЗАПНО не выводить ее на форму.
24 Noobik1C
 
08.07.15
14:23
(23) так я ее и создал, и не выводил. но при запонении она имеет значение ДанныеФормыКоллекция
25 Nuobu
 
08.07.15
14:31
http://catalog.mista.ru/public/198766/
Суть твоей переменной с грифом "НаСервере" в том, что в каждом серверном выводе она "обнуляется" - становится Неопределено.
А в клиентском - недоступна.
Если ты поставишь гриф "НаКлиенте", то не сможешь с ней работать как с ТаблицейЗначений.
Нужно создать её в реквизитах формы с типом ТаблицаЗначений.
И почитай очень внимательно ссылку.
26 Noobik1C
 
08.07.15
14:45
(25) я создавал ее в реквизитах формы. в процедурах на сервере данный реквизит имеет значение ДанныеФормыКоллекция
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.