|
Заполнение таблицы значений управляемая форма | ☑ | ||
---|---|---|---|---|
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) я создавал ее в реквизитах формы. в процедурах на сервере данный реквизит имеет значение ДанныеФормыКоллекция
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |