|
Динамическое добавление колонки в ТЗ | ☑ | ||
---|---|---|---|---|
0
rosveta
03.10.14
✎
15:16
|
Добрый день. У меня есть внешняя обработка. В Этой обработке есть реквизит объекта Табличная часть "Товары". Управляемое приложение. В эту табличную часть я программно пытаюсь добавить колонку.
Для каждого Склад Из МассивСкладов Цикл //Элементы.Добавить("Склад", Тип("ПолеФормы"), Элементы.Товары); ДобавляемыеКолонки.Добавить(Новый РеквизитФормы("Склад", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(50)), "Товары", Склад,Истина) ); ИзменитьРеквизиты(ДобавляемыеКолонки); КонецЦикла; При исполнении кода ИзменитьРеквизиты, возникает ошибка. {Форма.Форма.Форма(215)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты) ИзменитьРеквизиты(ДобавляемыеКолонки); по причине: Недопустимый путь к реквизиту. Путь: "Товары" Вместо "Товары", пробовала Элементы.Товары, Объект.Товары, ТаблицаТовары. В ообщем я не знаю, как еще можно задать путь реквизиту. |
|||
1
Ymryn
03.10.14
✎
15:31
|
(0) а массив переопределяется или он каждый шаг цикла весь набор добавить пытается?
|
|||
2
butterbean
03.10.14
✎
15:36
|
в таб часть нельзя добавить колонки ни в упр ни в обычном приложении
|
|||
3
anatoly
03.10.14
✎
15:41
|
(2) +1
сделай обычный реквизит типа ТЗ и его вручную загружай в табличное поле. не забыть СоздатьКолонки(). |
|||
4
rosveta
03.10.14
✎
15:45
|
В массиве содержится некоторое количество строк с типом строка. Сколько там строк, столько колонок и нужно добавить в табличную часть.
|
|||
5
Адский плющ
03.10.14
✎
15:52
|
(4) Попробуй путь к реквизиту задать "Объект.Товары"
Новый РеквизитФормы("Склад", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(50)), "Объект.Товары", Склад,Истина) Ну и да, ИзменитьРеквизиты вынеси из цикла. p/s коментаторы-вредители, блин |
|||
6
rosveta
03.10.14
✎
15:53
|
Я понимаю, что на данном этапе я пытаюсь создать одинаковые реквизиты. Потом "Склад", нужно заменить на просто Склад.. Просто тогда возникает ошибка, что неверный параметр номер 1.
|
|||
7
Адский плющ
03.10.14
✎
15:54
|
(6) Отладчиком смотри. Скорее всего у тебя посылается строка с пробелами и т.д.
|
|||
8
Ymryn
03.10.14
✎
16:01
|
(5) поддерживаю. Через Объект.Товары все должно успешно добавляться. Скорее всего, причина в том, что ИзменитьРеквизиты в цикле, и ты пытаешься добавить на второй интерации цикла реквизит с именем, которое уже есть. Поэтому он и ругается, что по этому пути его добавлять нельзя.
|
|||
9
Ymryn
03.10.14
✎
16:02
|
(6) как бы создать 2 и более одинаковых реквизитов нельзя.
|
|||
10
rosveta
03.10.14
✎
16:06
|
Если я убираю путь , просто пропускаю этот параметр, то тогда да, у меня ругается на одинаковые реквизиты. с этим я согласна.
//Для каждого Склад Из МассивСкладов Цикл //ИмяРеквизита = СтрЗаменить(Склад," ",""); ДобавляемыеКолонки.Добавить(Новый РеквизитФормы("Колонка1", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(50)),Объект.Товары, МассивСкладов[0],Истина) ); ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеКолонки); //КонецЦикла; тоже ругается на путь |
|||
11
Ymryn
03.10.14
✎
16:08
|
Объект.Товары в кавычки заключи. Там должна быть строка, как у тебя в (0).
|
|||
12
Адский плющ
03.10.14
✎
16:08
|
Объект.Товары в кавычки Пушкин брать будет?
|
|||
13
фобка
03.10.14
✎
16:15
|
Эл=форма.элементы.добавить("колонка1", тип("полеформы"),форма.элементы.имятвоеготабполянаформе);
Эл.вид=видполяформы.полеввода; Эл.путькданным = ... |
|||
14
Ymryn
03.10.14
✎
16:17
|
(13) а это уже создание элемента формы, а не реквизита формы. Не путайте автора, пожалуйста.
|
|||
15
фобка
03.10.14
✎
16:17
|
Это касается только формы. Создать новый реквизит таб части - фиг, это ж изменение объекта метаданных
|
|||
16
фобка
03.10.14
✎
16:18
|
Если это обработка то:
|
|||
17
Ymryn
03.10.14
✎
16:18
|
(15) что значит фиг? Прекрасно добавляются в управляемых формах. Для этого даже такую гадость как реквизит формы придумали.
|
|||
18
rosveta
03.10.14
✎
16:46
|
С кавычками ошибки про путь нет. Правда пока этот реквизит в тч не появляется. Но это видимо уже другой вопрос. Спасибо за помощь.
|
|||
19
Ymryn
03.10.14
✎
17:28
|
(18) чтобы он в ТЧ появился воспользуйтесь уже (13). Ибо пока что только добавлено в реквизиты формы, потом надо создать элементы формы и связать их через путь к данным с реквизитами.
|
|||
20
User_Agronom
03.10.14
✎
17:31
|
(0) Фотка, рецепт? Иначе не взлетит.
|
|||
21
rosveta
06.10.14
✎
10:47
|
Для каждого Склад Из МассивСкладов Цикл
ИмяРеквизита = СтрЗаменить(Склад," ",""); ИмяРеквизита = СтрЗаменить(ИмяРеквизита,"№",""); ИмяРеквизита = СтрЗаменить(ИмяРеквизита,"(",""); ИмяРеквизита = СтрЗаменить(ИмяРеквизита,")",""); ДобавляемыеКолонки.Добавить(Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(50)),"Объект.Товары",Склад,Истина) ); ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеКолонки); КонецЦикла; Для каждого Колонка Из ДобавляемыеКолонки Цикл НовыйЭлемент = Элементы.Добавить(Колонка.Имя,Тип("ПолеФормы"),Элементы.Товары); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = "Объект.Товары."+Колонка.Имя; НовыйЭлемент.ТолькоПросмотр = Истина; КонецЦикла; Рабочий код. Все работает, добавляется и отображается. |
|||
22
Лодырь
06.10.14
✎
10:59
|
(21) Можно было сразу открыть типовую УТ11 скажем и посмотреть на реализацию подобного в документе "установка цен". И даже упереть оттуда пару полезных процедур )
P.S. "ИзменитьРеквизиты" в цикле - это сильно. |
|||
23
rosveta
07.10.14
✎
12:54
|
(21), Спасибо. Вынесу за пределы Цикла.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |