|
Добавить программно колонки на форму | ☑ | ||
---|---|---|---|---|
0
myr4ik07
08.01.16
✎
14:53
|
Привет (УФ), хочу добавить программно в ТаблицаРабочийТабель - это ТаблицаЗначений, а на форме ДанныеФормыКоллекции те колонки которые будут выгружены в ТЗ
ТЗ = Новый ТаблицаЗначений; Линия = Справочники.прЛинии.Выбрать(); Пока Линия.Следующий()Цикл Попытка ТЗ.Колонки.Добавить("К_"+Строка(Линия.Код)); Исключение КонецПопытки; КонецЦикла; Стр = ТЗ.Добавить(); Стр.К_000000001 = Справочники.прЛинии.НайтиПоКоду("000000001"); ТаблицаРабочийТабель.Загрузить(ТЗ); но на форме ничего не отображается, на форме ТаблицаРабочийТабель есть но без колонок |
|||
1
myr4ik07
08.01.16
✎
14:58
|
в ТаблицаРабочийТабель если добавить колонку с именем К_000000001 то все норм, но имя же динамическое
|
|||
2
Zamestas
08.01.16
✎
15:20
|
Стр["К_000000001"] =
|
|||
3
GreatOne
08.01.16
✎
15:26
|
ОбновитьОтображениеДанных?
|
|||
4
GreatOne
08.01.16
✎
15:27
|
В отладчике для ТаблицаРабочийТабель колонки естЬ?
|
|||
5
myr4ik07
08.01.16
✎
15:33
|
(4) колонок нет, я не создавал их потому как Имя колонки будет разное - динамическое
|
|||
6
колодина
08.01.16
✎
15:39
|
(5) можно имя колонки сделать постоянным - а на форме заголовок сделать меняющимся.
|
|||
7
myr4ik07
08.01.16
✎
18:07
|
(6) так кто же знает сколько будет колонок, сколько элементом добавит пользователь к справочник столько и колонок должно быть, а значит фиксировано не нужно добавлять колонки.
Решил врчуну Линия = Справочники.прЛинии.Выбрать(); НовыеКолонки = Новый Массив; Пока Линия.Следующий()Цикл Список.Добавить(Линия.Ссылка); КонецЦикла; ном = 1; Для Каждого элеме Из Список Цикл элеме.Представление = "К_"+ном; НовыеКолонки.Добавить(Новый РеквизитФормы(элеме.Представление, Новый ОписаниеТипов("СправочникСсылка.прЛинии"),Элементы.ТаблицаРабочийТабель , элеме.Значение)); ном = ном + 1; КонецЦикла; Для Каждого Колонка Из НовыеКолонки Цикл НовыйЭлемент = Элементы.Добавить(Колонка.Имя,Тип("ПолеФормы"),Элементы.ТаблицаРабочийТабель); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = "Элементы.ТаблицаРабочийТабель."+Колонка.Имя; НовыйЭлемент.ТолькоПросмотр = Ложь; КонецЦикла; но не могу побороть, по примеру нашел пишет что при добавлении реквизита нужно знать "Путь к создаваемому реквизиту. Не включает имя реквизита.", я не могу понять, мне нужно так Элементы.ТаблицаРабочийТабель или так ЭтаФорма.ТаблицаРабочийТабель - так получаю ДанныеФормыКоллекция но она пустая если так делаю |
|||
8
hhhh
08.01.16
✎
19:50
|
надо реквизиты формы создать. А не Элементы.
|
|||
9
myr4ik07
08.01.16
✎
19:57
|
(8) с каким типом?
|
|||
10
myr4ik07
08.01.16
✎
19:58
|
(8) кстати ТаблицаРабочийТабель это и есть Реквизит формы он имеет Тип Таблица значений
|
|||
11
hhhh
08.01.16
✎
20:00
|
(11) ну вот в нем и надо создать реквизиты-колонки.
|
|||
12
myr4ik07
08.01.16
✎
20:01
|
(11) так именно это я и хочу, а где моя ошибка?
|
|||
13
hhhh
08.01.16
✎
20:02
|
УправляемаяФорма (ManagedForm)
ИзменитьРеквизиты (ChangeAttributes) Синтаксис: ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>) Параметры: <ДобавляемыеРеквизиты> (необязательный) Тип: Массив. Массив, содержащий объекты типа РеквизитФормы. Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками. К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции ЭтотОбъект.<Имя реквизита>. <УдаляемыеРеквизиты> (необязательный) Тип: Массив. Массив, содержащий строки, описывающие пути к удаляемым реквизитам. Удалять можно только ранее программно добавленные реквизиты. Описание: Изменяет структуру реквизитов формы. Сначала выполняется удаление реквизитов. Таким образом массивы добавляемых и удаляемых реквизитов могут содержать реквизиты с одинаковым путём. Доступность: Сервер, мобильное приложение(сервер). |
|||
14
hhhh
08.01.16
✎
20:04
|
РеквизитФормы (FormAttribute)
Основной Синтаксис: Новый РеквизитФормы(<Имя>, <Тип>, <Путь>, <Заголовок>, <СохраняемыеДанные>) Параметры: <Имя> (обязательный) Тип: Строка. Имя реквизита. <Тип> (обязательный) Тип: ОписаниеТипов. Тип реквизита. <Путь> (необязательный) Тип: Строка. Путь к создаваемому реквизиту. Не включает имя реквизита. Значение по умолчанию: Пустая строка. <Заголовок> (необязательный) Тип: Строка. Содержит отображаемый текст реквизита. Значение по умолчанию: Пустая строка. <СохраняемыеДанные> (необязательный) Тип: Булево. Реквизит содержит сохраняемые данные. Истина - сохраняемый реквизит формы. Значение по умолчанию: Ложь. Описание: Создает описание реквизита управляемой формы на основе переданных параметров. |
|||
15
myr4ik07
09.01.16
✎
00:52
|
МассивДобавляемыхРеквизитов = Новый Массив;
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ТаблицаЗначенийКолонок", Новый ОписаниеТипов("ТаблицаЗначений"))); МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("РобочаяРоль", Новый ОписаниеТипов("СправочникСсылка.РобочаяРоль"),"ТаблицаЗначенийКолонок" ,"Робочая роль")); МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники",Новый КвалификаторыЧисла(10,2)),"ТаблицаЗначенийКолонок" , "Сотрудник")); МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Линия", Новый ОписаниеТипов("СправочникСсылка.прЛинии",Новый КвалификаторыЧисла(10,2)),"ТаблицаЗначенийКолонок" , "Линия")); ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); МассивДобавляемыхРеквизитов.Очистить(); ТаблицаФормы = Элементы.Добавить("ТаблицаЗначенийКолонок", Тип("ТаблицаФормы")); ТаблицаФормы.ПутьКДанным = "ТаблицаЗначенийКолонок"; ДобавитьКолонку("ТаблицаЗначенийКолонок", "РобочаяРоль", "РобочаяРоль"); ДобавитьКолонку("ТаблицаЗначенийКолонок", "Сотрудник", "Сотрудник"); Линия = Справочники.прЛинии.Выбрать(); Пока Линия.Следующий() Цикл Список.Добавить(Линия.Ссылка); КонецЦикла; Для Каждого эл Из Список Цикл эл.Представление = СтрЗаменить(эл," ",""); ДобавитьКолонку("ТаблицаЗначенийКолонок",эл.Представление,эл.Представление); КонецЦикла; КонецПроцедуры &НаСервере Процедура ДобавитьКолонку(ИмяТаблицы, ИмяКолонки, ЗаголовокКолонки) НоваяКолонка = Элементы.Добавить(ИмяТаблицы + ИмяКолонки, Тип("ПолеФормы"), Элементы.ТаблицаЗначенийКолонок); НоваяКолонка.Заголовок = ЗаголовокКолонки; НоваяКолонка.ПутьКДанным = ИмяТаблицы + "." + ИмяКолонки; НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода; НоваяКолонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе; КонецПроцедуры постоянно вот здесь вылетает НоваяКолонка.ПутьКДанным = ИмяТаблицы + "." + ИмяКолонки; когда доходит до перебора из справочника |
|||
16
myr4ik07
09.01.16
✎
00:53
|
вот лучше http://www.1c-cod.ru/p/gtyyx493d0q9a33
|
|||
17
myr4ik07
09.01.16
✎
01:09
|
а ошибка вот какая
{Документ.РобочийТабель.Форма.ФормаДокумента.Форма(106)}: Ошибка при установке значения атрибута контекста (ПутьКДанным) НоваяКолонка.ПутьКДанным = ИмяТаблицы + "." + ИмяКолонки; по причине: Недопустимое значение |
|||
18
hhhh
09.01.16
✎
06:13
|
(17) вы внимательно прочитайте, там же написано: в путь к данным не включается само имя колонки.
|
|||
19
hhhh
09.01.16
✎
07:17
|
<Путь> (необязательный)
Тип: Строка. Путь к создаваемому реквизиту. Не включает имя реквизита. |
|||
20
myr4ik07
09.01.16
✎
09:56
|
(18) будь добр, напиши ту правильную строку которая будет работать
я изменял уже и так НоваяКолонка.ПутьКДанным = ИмяТаблицы; тогда даже при указании ПутиКДанным к статичной Колонке показывает ошибку "Недопустимое значение" |
|||
21
myr4ik07
09.01.16
✎
10:05
|
(18) когда коммментирую то создается Статичные Колонки - http://www.1c-cod.ru/p/xmc0008l7q0anqz
|
|||
22
myr4ik07
09.01.16
✎
22:39
|
Залишу оце тут
&НаСервере Процедура Команда2НаСервере() МассивТипаВыбора = Новый Массив; МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений")); ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора); МассивРеквизитов = Новый Массив; ИмяТЗ = "ТаблицаСегментов"; ЗаголовокТЗ = "Сегменты"; МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяТЗ, ОписаниеТипаВыбора, "", ЗаголовокТЗ)); МассивРеквизитов.Добавить(Новый РеквизитФормы("РабочаяРоль", Новый ОписаниеТипов("СправочникСсылка.РобочаяРоль"),ИмяТЗ,"Рабочая роль",Истина)); МассивРеквизитов.Добавить(Новый РеквизитФормы("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"),ИмяТЗ,"Сотрудник",Истина)); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("РабочаяРоль",Новый ОписаниеТипов("СправочникСсылка.РобочаяРоль"),"Робочая роль"); ТЗ.Колонки.Добавить("Сотрудник",Новый ОписаниеТипов("СправочникСсылка.Сотрудники"),"Сотрудники"); Линия = Справочники.прЛинии.Выбрать(); Пока Линия.Следующий() Цикл Наименование = "К_"+СтрЗаменить(Линия.Наименование," ",""); ТЗ.Колонки.Добавить(Наименование,,Наименование); КонецЦикла; Для Каждого Колонка Из ТЗ.Колонки Цикл Если Колонка.Имя = "Сотрудник" Тогда //МассивРеквизитов.Добавить(Новый РеквизитФормы("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"),"","Сотрудник")); ИначеЕсли Колонка.Имя = "РабочаяРоль" Тогда //МассивРеквизитов.Добавить(Новый РеквизитФормы("РабочаяРоль", Новый ОписаниеТипов("СправочникСсылка.РобочаяРоль"),"","Рабочая роль")); Иначе МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов("СправочникСсылка.прЛинии"), ИмяТЗ,Колонка.Имя,Истина)); КонецЕсли; КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов); эТаблица = Элементы.Добавить(ЗаголовокТЗ, Тип("ТаблицаФормы")); эТаблица.ПутьКДанным = ИмяТЗ; эТаблица.Отображение = ОтображениеТаблицы.Список; эТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; Для Каждого Колонка Из ТЗ.Колонки Цикл НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), эТаблица); НовыйЭлемент.ПутьКДанным = ИмяТЗ + "." + Колонка.Имя; Если Колонка.Имя = "Выб" Тогда НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка; Иначе НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; КонецЕсли; КонецЦикла; //ЭтаФорма.ЗначениеВРеквизитФормы(ТЗ, ИмяТЗ); КонецПроцедуры |
|||
23
impichmenta
10.01.16
✎
00:28
|
а для не большого магазина подойдет?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |