|
Таблица значений в Управляемой форме | ☑ | ||
---|---|---|---|---|
0
GirlProgram
11.01.12
✎
21:07
|
Управляемая форма
В форме создла реквезит ПредварительныеДанные и присвоила ему тип Таблица значений, на форме создала таблицу ПредварительныеДанные, где путь указала на созданный реквезит. В процессе выполнения различных операций получила Таблицу значений с данными ТЗнач, теперь данные из этой таблицы мне надо загрузить в ПредварительныеДанные, которые почему-то вместо типа Таблица Значений имеют теперь тип ДанныеФормыКоллекция. На сервере выполняю такое действие: ПредварительныеДанные.Загрузить(ТЗнач); Но на форме в итоге в таблице отображается только первая колонка из ТЗнач. Как мне вывести все колонки из ТЗнач? |
|||
1
GROOVY
11.01.12
✎
21:09
|
(0) На клиенте ТЗ конвертируется в данныеформы. Это нормально
Колонки система за тебя создавать не будет. Колонки на форме созданы? |
|||
2
Конфигуратор1с
11.01.12
✎
21:09
|
(0) используйте выгрузить из реквизита формы и загрузить из реквизита формы
|
|||
3
DrShad
11.01.12
✎
21:10
|
вот что творит фото животворящее :)
|
|||
4
GROOVY
11.01.12
✎
21:10
|
(2) Зачем? Это полнейший бред.
|
|||
5
GROOVY
11.01.12
✎
21:11
|
||||
6
andrewks
11.01.12
✎
21:15
|
(0) если колонки у тебя заданы жёстко, и не меняются, то сделай структуру колонок у реквизита формы. если нет - то придётся тебе их создавать программно
|
|||
7
GirlProgram
11.01.12
✎
21:15
|
(5) спасибо за ссылку, только я тоже как-то не совсем поняла как мне создать эти самые колонки....
|
|||
8
GirlProgram
11.01.12
✎
21:16
|
мне нужно программно, у меня колонки всегда разные....как было просто в обычном приложении...
|
|||
9
Конфигуратор1с
11.01.12
✎
21:17
|
из ссылки в (5)
&НаСервере Процедура ЗаполнитьТабЧастьНаФорме() // Реквизит формы "ДанныеТаблицы" создан средствами интерфейса конфигуратора(можно и программно), программно создадим колонки // Элемент формы "ДанныеТаблицыНаФорме" создан средствами интерфейса конфигуратора(можно и программно), программно создадим колонки // СодержимоеТаблицы - таблица значений // создаем реквизиты для РЕКВИЗИТА ФОРМЫ "ДанныеТаблицы" (тип Таблица Значений) МассивДобавляемыхРеквизитов = Новый Массив; Для Каждого Колонка Из СодержимоеТаблицы.Колонки Цикл РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ДанныеТаблицы", Колонка.Имя); МассивДобавляемыхРеквизитов.Добавить(РеквизитФормы); КонецЦикла; // пакетное создание и удаление колонок в РЕКВИЗИТЕ ФОРМЫ "ДанныеТаблицы" (тип Таблица Значений) ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); // создаем элементы Для Каждого Колонка Из СодержимоеТаблицы.Колонки Цикл Элемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ДанныеТаблицыНаФорме); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.ПутьКДанным = "ДанныеТаблицы." + Колонка.Имя; КонецЦикла; ЭтаФорма.ДанныеТаблицы.Загрузить(СодержимоеТаблицы); КонецПроцедуры |
|||
10
andrewks
11.01.12
✎
21:18
|
(8) лови мою ветку, у меня там в конце есть решение
|
|||
11
andrewks
11.01.12
✎
21:18
|
+(10) ссылку забыл :)
v8: Результат запроса aka ТЗ на УФ |
|||
12
Конфигуратор1с
11.01.12
✎
21:19
|
ТЗнач в (9) это СодержимоеТаблицы
|
|||
13
GirlProgram
11.01.12
✎
21:24
|
чем больше работаю с управляемыми формами, тем сильнее поражаюсь: Нафига весь этот бред?
|
|||
14
Конфигуратор1с
11.01.12
✎
21:25
|
(13)для веба.
|
|||
15
Конфигуратор1с
11.01.12
✎
21:27
|
(13) я могу заблуждаться, но с упр формами 1с чем то похожа на сайт, где вебстранички это наши упрформы, а сервер это пхпшный код. Хотя я в вебе совсем нулевой, да и в упр формах тоже.
|
|||
16
GirlProgram
11.01.12
✎
21:35
|
по (11) написала:
МассивДобавляемыхРеквизитов = Новый Массив; МассивУдаляемыхРеквизитов = Новый Массив; ИдКоллекции="Коллекция1"; ИдТаблицы="Таблица1"; КоллФормы=РеквизитФормыВЗначение(ИдКоллекции); Для каждого ТекКол из КоллФормы.Колонки Цикл МассивУдаляемыхРеквизитов.Добавить(ИдКоллекции+"."+ТекКол.Имя); КонецЦикла; Для каждого ТекКол из ТЗнач.Колонки Цикл МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ТекКол.Имя,ТекКол.ТипЗначения,ИдКоллекции)); КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,МассивУдаляемыхРеквизитов); ЗначениеВРеквизитФормы(ТЗнач,ИдКоллекции); // теперь динамически обновляем элементы формы ПредварительныеДанные=Элементы.Найти(ИдТаблицы); Если ПредварительныеДанные<>Неопределено Тогда Элементы.Удалить(ПредварительныеДанные); КонецЕсли; ПредварительныеДанные=Элементы.Добавить(ИдТаблицы,Тип("ТаблицаФормы")); ПредварительныеДанные.ПутьКДанным=ИдКоллекции; ПредварительныеДанные.Отображение=ОтображениеТаблицы.Список; Для каждого ТекКол из ТЗнач.Колонки Цикл ЭлКол=Элементы.Добавить(ИдТаблицы+ТекКол.Имя,Тип("ПолеФормы"),ПредварительныеДанные); ЭлКол.Вид=ВидПоляФормы.ПолеВвода; ЭлКол.ПутьКДанным=ИдКоллекции+"."+ТекКол.Имя; КонецЦикла; Ругается на РеквизитФормыВЗначение. Говорит, что ошибка при вызове метода контекста |
|||
17
Конфигуратор1с
11.01.12
✎
21:37
|
(16)это на сервере?
|
|||
18
zak555
11.01.12
✎
21:37
|
УправляемаяФорма (ManagedForm)
РеквизитФормыВЗначение (FormAttributeToValue) Синтаксис: РеквизитФормыВЗначение(<ИмяРеквизита>, <Тип>) Параметры: <ИмяРеквизита> (обязательный) Тип: Строка. Имя реквизита формы, который необходимо преобразовать. Может быть указан реквизит данных формы (см. описание параметра <Объект> метода ДанныеФормыВЗначение). <Тип> (необязательный) Тип: Тип. Тип значения, получаемого из реквизита формы (данных формы). Если данный параметр не указан, то он также получается из реквизита формы. Если реквизит является составным типом и значение параметра не указано, генерируется исключение времени выполнения. Возвращаемое значение: Тип: Произвольный. Описание: Преобразует указанный реквизит формы в объект прикладного типа. Доступность: Сервер. |
|||
19
БибиГон
11.01.12
✎
21:39
|
Доступность:
Сервер. |
|||
20
GirlProgram
11.01.12
✎
21:39
|
(17) да
(18) читала...читала...читала, так и не поняла что в моем случае он должен сделать и почему не делает |
|||
21
zak555
11.01.12
✎
21:40
|
(20) выполнить на сервере ?
|
|||
22
GirlProgram
11.01.12
✎
21:41
|
Коллекция1 и Таблица1, я так понимаю это произвольные наименования
|
|||
23
Конфигуратор1с
11.01.12
✎
21:41
|
КоллФормы=РеквизитФормыВЗначение("ПредварительныеДанные");
|
|||
24
Конфигуратор1с
11.01.12
✎
21:42
|
(22) нет это элемент формы
|
|||
25
GROOVY
11.01.12
✎
21:42
|
(18) нафига?!
|
|||
26
Конфигуратор1с
11.01.12
✎
21:42
|
тьху реквизит формы
|
|||
27
andrewks
11.01.12
✎
21:42
|
(16) у тебя, видимо код выполняется не на сервере
Коллекция1 - это реквизит формы Таблица1 - это элемент формы |
|||
28
GirlProgram
11.01.12
✎
21:43
|
а таблица это значит ТЗнач, таак, значит не туда повыставляла
|
|||
29
Конфигуратор1с
11.01.12
✎
21:44
|
&НаСервере
Процедура ЗаполнитьТабЧастьНаФорме() // Реквизит формы "ДанныеТаблицы" создан средствами интерфейса конфигуратора(можно и программно), программно создадим колонки // Элемент формы "ДанныеТаблицыНаФорме" создан средствами интерфейса конфигуратора(можно и программно), программно создадим колонки // СодержимоеТаблицы - таблица значений // создаем реквизиты для РЕКВИЗИТА ФОРМЫ "ДанныеТаблицы" (тип Таблица Значений) МассивДобавляемыхРеквизитов = Новый Массив; Для Каждого Колонка Из ТЗнач.Колонки Цикл РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ПредварительныеДанные", Колонка.Имя); МассивДобавляемыхРеквизитов.Добавить(РеквизитФормы); КонецЦикла; // пакетное создание и удаление колонок в РЕКВИЗИТЕ ФОРМЫ "ДанныеТаблицы" (тип Таблица Значений) ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); // создаем элементы Для Каждого Колонка Из ТЗнач.Колонки Цикл Элемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ПредварительныеДанные); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.ПутьКДанным = "ПредварительныеДанные." + Колонка.Имя; КонецЦикла; ЭтаФорма.ПредварительныеДанные.Загрузить(ТЗнач); |
|||
30
Конфигуратор1с
11.01.12
✎
21:44
|
(28) попробуй как в 29 если я ничего не пропустил
|
|||
31
GirlProgram
11.01.12
✎
21:52
|
(30) пробовала ругается на
РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ПредварительныеДанные", Колонка.Имя); говорит, что ошибка при вызове контекста |
|||
32
GirlProgram
11.01.12
✎
21:54
|
не контекста, а конструктора
|
|||
33
andrewks
11.01.12
✎
21:54
|
(31) показывай полный код
|
|||
34
andrewks
11.01.12
✎
21:54
|
(32) О_о
|
|||
35
zak555
11.01.12
✎
21:55
|
на сервере нет форм ?
|
|||
36
andrewks
11.01.12
✎
21:57
|
(35) есть. но не в виде окошка, а в виде контекста
|
|||
37
GirlProgram
11.01.12
✎
21:57
|
переписала (16), но тоже ругается на РеквизитФормы
МассивДобавляемыхРеквизитов = Новый Массив; МассивУдаляемыхРеквизитов = Новый Массив; ИдКоллекции="ПредварительныеДанные"; ИдТаблицы="ТЗнач"; КоллФормы=РеквизитФормыВЗначение(ИдКоллекции); Для каждого ТекКол из КоллФормы.Колонки Цикл МассивУдаляемыхРеквизитов.Добавить(ИдКоллекции+"."+ТекКол.Имя); КонецЦикла; Для каждого ТекКол из ТЗнач.Колонки Цикл МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ТекКол.Имя,ТекКол.ТипЗначения,ИдКоллекции)); КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,МассивУдаляемыхРеквизитов); ЗначениеВРеквизитФормы(ТЗнач,ИдКоллекции); // теперь динамически обновляем элементы формы ЭлТаб=Элементы.Найти(ИдТаблицы); Если ЭлТаб<>Неопределено Тогда Элементы.Удалить(ЭлТаб); КонецЕсли; ЭлТаб=Элементы.Добавить(ИдТаблицы,Тип("ТаблицаФормы")); ЭлТаб.ПутьКДанным=ИдКоллекции; ЭлТаб.Отображение=ОтображениеТаблицы.Список; Для каждого ТекКол из ТЗнач.Колонки Цикл ЭлКол=Элементы.Добавить(ИдТаблицы+ТекКол.Имя,Тип("ПолеФормы"),ЭлТаб); ЭлКол.Вид=ВидПоляФормы.ПолеВвода; ЭлКол.ПутьКДанным=ИдКоллекции+"."+ТекКол.Имя; КонецЦикла; |
|||
38
zak555
11.01.12
✎
21:58
|
(36) "эмуляция" ?
|
|||
39
GirlProgram
11.01.12
✎
21:59
|
вот весь код данной процедуры с моими экспериментами
&НаСервере Процедура ЗагрузкаДанныхВТабЗнач(КоличествоСтрок, КоличествоКолонок,КоличествоДанныхПредПросмотра,КоличествоСтрокПредпросмотра,КомМассив) ТЗнач = Новый ТаблицаЗначений; Для х = 1 по КоличествоКолонок Цикл Если ТЗнач.Колонки.Количество()<КоличествоКолонок Тогда ТЗнач.Колонки.Добавить(); КонецЕсли; КонецЦикла; // добавляем строки предпросмотра для х = 1 по КоличествоСтрокПредпросмотра цикл Строка = ТЗнач.Добавить(); Для у = 1 по КоличествоКолонок цикл Строка.Установить( у-1, КомМассив[у-1][х-1]); КонецЦикла; КонецЦикла; //МассивДобавляемыхРеквизитов = Новый Массив; //Для Каждого Колонка Из ТЗнач.Колонки Цикл // РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ПредварительныеДанные1", Колонка.Имя); // МассивДобавляемыхРеквизитов.Добавить(РеквизитФормы); //КонецЦикла; //// пакетное создание и удаление колонок в РЕКВИЗИТЕ ФОРМЫ "ДанныеТаблицы" (тип Таблица Значений) // // // //ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); //// создаем элементы // // // //Для Каждого Колонка Из ТЗнач.Колонки Цикл // Элемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ПредварительныеДанные1); // Элемент.Вид = ВидПоляФормы.ПолеВвода; // Элемент.ПутьКДанным = "ПредварительныеДанные1." + Колонка.Имя; //КонецЦикла; //ЭтаФорма.ПредварительныеДанные1.Загрузить(ТЗнач); МассивДобавляемыхРеквизитов = Новый Массив; МассивУдаляемыхРеквизитов = Новый Массив; ИдКоллекции="ПредварительныеДанные"; ИдТаблицы="ТЗнач"; КоллФормы=РеквизитФормыВЗначение(ИдКоллекции); Для каждого ТекКол из КоллФормы.Колонки Цикл МассивУдаляемыхРеквизитов.Добавить(ИдКоллекции+"."+ТекКол.Имя); КонецЦикла; Для каждого ТекКол из ТЗнач.Колонки Цикл МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ТекКол.Имя,ТекКол.ТипЗначения,ИдКоллекции)); КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,МассивУдаляемыхРеквизитов); ЗначениеВРеквизитФормы(ТЗнач,ИдКоллекции); // теперь динамически обновляем элементы формы ЭлТаб=Элементы.Найти(ИдТаблицы); Если ЭлТаб<>Неопределено Тогда Элементы.Удалить(ЭлТаб); КонецЕсли; ЭлТаб=Элементы.Добавить(ИдТаблицы,Тип("ТаблицаФормы")); ЭлТаб.ПутьКДанным=ИдКоллекции; ЭлТаб.Отображение=ОтображениеТаблицы.Список; Для каждого ТекКол из ТЗнач.Колонки Цикл ЭлКол=Элементы.Добавить(ИдТаблицы+ТекКол.Имя,Тип("ПолеФормы"),ЭлТаб); ЭлКол.Вид=ВидПоляФормы.ПолеВвода; ЭлКол.ПутьКДанным=ИдКоллекции+"."+ТекКол.Имя; КонецЦикла; //ПредварительныеДанные.СоздатьКолонки(); //Колонки = ПредварительныеДанные.Колонки; //для х=0 по Колонки.Количество()-1 цикл // Колонки.Получить(х).Ширина = 10; //КонецЦикла; КонецПроцедуры |
|||
40
GROOVY
11.01.12
✎
22:00
|
(35) Как утверждает 1С как раз наоборот. "Форма конструируется на сервере и ее __проекция__ отображается у клиента".
|
|||
41
Конфигуратор1с
11.01.12
✎
22:03
|
(39)а у тз тип колонки определен?
|
|||
42
GirlProgram
11.01.12
✎
22:06
|
(41) у чего конкретно?
|
|||
43
GirlProgram
11.01.12
✎
22:08
|
Колонка.ТипЗначения - пусто
|
|||
44
Конфигуратор1с
11.01.12
✎
22:12
|
(43) а тип у конструктора обязательно указывать
|
|||
45
andrewks
11.01.12
✎
22:15
|
(39)
&НаСервере Процедура ЗагрузкаДанныхВТабЗнач(КоличествоСтрок, КоличествоКолонок,КоличествоДанныхПредПросмотра,КоличествоСтрокПредпросмотра,КомМассив) ТЗнач = Новый ТаблицаЗначений; Для х = 1 по КоличествоКолонок Цикл ТЗнач.Колонки.Добавить("Колонка"+Формат(х,"ЧГ = 0")); КонецЦикла; // добавляем строки предпросмотра для х = 1 по КоличествоСтрокПредпросмотра цикл Строка = ТЗнач.Добавить(); Для у = 1 по КоличествоКолонок цикл Строка.Установить( у-1, КомМассив[у-1][х-1]); КонецЦикла; КонецЦикла; МассивДобавляемыхРеквизитов = Новый Массив; МассивУдаляемыхРеквизитов = Новый Массив; ИдКоллекции="ПредварительныеДанные"; ИдТаблицы="ТабПолеПредвДанных"; КоллФормы=РеквизитФормыВЗначение(ИдКоллекции); Для каждого ТекКол из КоллФормы.Колонки Цикл МассивУдаляемыхРеквизитов.Добавить(ИдКоллекции+"."+ТекКол.Имя); КонецЦикла; Для каждого ТекКол из ТЗнач.Колонки Цикл МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ТекКол.Имя,ТекКол.ТипЗначения,ИдКоллекции)); КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,МассивУдаляемыхРеквизитов); ЗначениеВРеквизитФормы(ТЗнач,ИдКоллекции); // теперь динамически обновляем элементы формы ЭлТаб=Элементы.Найти(ИдТаблицы); Если ЭлТаб<>Неопределено Тогда Элементы.Удалить(ЭлТаб); КонецЕсли; ЭлТаб=Элементы.Добавить(ИдТаблицы,Тип("ТаблицаФормы")); ЭлТаб.ПутьКДанным=ИдКоллекции; ЭлТаб.Отображение=ОтображениеТаблицы.Список; Для каждого ТекКол из ТЗнач.Колонки Цикл ЭлКол=Элементы.Добавить(ИдТаблицы+ТекКол.Имя,Тип("ПолеФормы"),ЭлТаб); ЭлКол.Вид=ВидПоляФормы.ПолеВвода; ЭлКол.ПутьКДанным=ИдКоллекции+"."+ТекКол.Имя; КонецЦикла; КонецПроцедуры |
|||
46
GirlProgram
11.01.12
✎
22:21
|
(45) я влюбилась!!!! Спасибо, спасибо, спасибо!!!!! Блин, теперь это все надо как-то в приходку теперь подгрузить.... :)
|
|||
47
GirlProgram
11.01.12
✎
22:33
|
А как мне обратиться к нужной теперь колонке в созданной таблице?
|
|||
48
andrewks
11.01.12
✎
23:19
|
(47) что хочешь сделать?
|
|||
49
zak555
11.01.12
✎
23:21
|
(48) она уже сделала
смотри в (46) =) |
|||
50
GirlProgram
11.01.12
✎
23:35
|
(48) (47) отпадает пока, хочу сделать так: Объект.ЗаполняемыйДокумент.ПолучитьОбъект().Товары.Очистить();
Только под управляемой не работает... |
|||
51
zak555
11.01.12
✎
23:49
|
(50) так надо на форме очистить ТЧ Товары ?
|
|||
52
GirlProgram
12.01.12
✎
06:22
|
(51)Объект.ЗаполняемыйДокумент это у меня реквезит, в который выбирается документ поступления, теперь хочу обратиться к этому документу, очистить его таб часть и заполнить своими данными.
|
|||
53
GirlProgram
12.01.12
✎
07:08
|
Все, поняла, это возможно на сервере сделать
|
|||
54
GirlProgram
12.01.12
✎
08:38
|
делаю на сервере Объект.ЗаполняемыйДокумент.ПолучитьОбъект().Товары.Очистить();
но таблица почему-то не очищается.... |
|||
55
GirlProgram
12.01.12
✎
08:50
|
сделала так:
ОбъектНов = Объект.ЗаполняемыйДокумент.ПолучитьОбъект(); ОбъектНов.Товары.Очистить(); и все очистилось :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |