|
Программное обращение к вновь добавленной колонке
|
Я
|
|
Likons 02.04.20 - 12:20 | Добрый день , ув. Коллеги )
Танцую с бубном , не могу разобраться (
Подскажите пожалуйста , как правильно выйти из ситуации.
Есть обработка , в ней есть табличная часть(ТабличнаяЧастьЗаказа) с набором её реквизитов.
Так же есть структура (СтруктураСоответствияСкладов) с названием колонок , которые необходимо добавить в эту табличную часть.
Выглядит структура таким образом : ("НазваниеСклада (простая строка)" , Элемент справочника склады)
Далее мне нужно каким то образом обратиться к вновь добавленным колонкам , дабы их как то заполнить.
Проблема в том , что вновь добавленные колонки , не являются реквизитами моей табличной части и я не знаю , как правильно к ним обращаться (
Добавляю колонки я таким образом :
Для каждого Элемент из СтруктураСоответствияСкладов цикл
ИмяНовойКолонки = Элемент.Ключ;
НоваяКолонка = ЭлементыФормы.ТабличнаяЧастьЗаказа.Колонки.Добавить(ИмяНовойКолонки);
НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода"));
КонецЦикла;
А вот так я пытаюсь их заполнять :
Для каждого Колонка из ЭлементыФормы.ТабличнаяЧастьЗаказа.Колонки цикл
ЗначениеДляПоиска = неопределено;
СтруктураСоответствияСкладов.Свойство(Колонка.Имя,ЗначениеДляПоиска);
Если ЗначениеДляПоиска <> неопределено тогда
СтруктураОтбора = Новый Структура("Склад",ЗначениеДляПоиска);
МассивСтрок = ТаблицаОстатков.НайтиСтроки(СтруктураОтбора);
Для каждого Элемент из МассивСтрок цикл
СтрокаСНужнойНоменклатурой = ТабличнаяЧастьЗаказа.Найти(Элемент.Номенклатура,"Номенклатура");
Если СтрокаСНужнойНоменклатурой <> Неопределено тогда
СтрокаСНужнойНоменклатурой[Колонка.Имя] = Элемент.Остаток;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Буду благодарен за любые наводки ) |
Likons 1 - 02.04.20 - 12:22 | Уточнение : формы - обычные
|
mistеr 2 - 02.04.20 - 12:23 | ( 0) >Далее мне нужно каким то образом обратиться к вновь добавленным колонкам , дабы их как то заполнить.
Чтобы обратиться, нужно их где-то запомнить после создания. Например, в массиве или соответствии. |
Likons 3 - 02.04.20 - 12:27 | ( 2) не понял ( они же у меня уже есть добавленные в табличную часть ?
Вам не трудно будет показать какой то произвольный пример ? Ну или структуру нужного соответствия набросать и в какой момент его использовать ? |
Likons 4 - 02.04.20 - 12:34 | ( 2) или может быть можно добавлять колонки не как элементы формы , а как реквизиты табличной части ? |
acht 5 - 02.04.20 - 12:37 | ( 3) Видите ли, Андрей Николаевич, в табличную часть обработки нельзя добавить колонку без изменения метаданных в конфигураторе. То, что вы сделали - называется: "добавили колонку отображения к элементу формы". При этом, эта колонка отображения не может быть связана с данными, потому что в табличной части их нет.
Измените свою хотелку. |
mistеr 6 - 02.04.20 - 12:41 | ( 2) ( 3) Пардон, не внимательно прочитал.
Ты путаешь реквизиты ТЧ и колонки табличного поля на форме, отображающего данные этой ТЧ. В табчасть нельзя динамически добавлять реквизиты. В табличное поле можно добавить любое количество колонок, но если они не связаны с данными из ТЧ, отображать что-либо в них — полностью твоя задача.
Возможно, тебе подойдет табличное поле, связанное не с ТЧ, а с таблицей значений. |
Likons 7 - 02.04.20 - 12:47 | ( 5) ( 6) Беда ( Ну , я понимаю , чем колонка на форме отличается от реквизита ТЧ. А что значит "связанное данными" ? Имеется в виду путь к данным во вновь созданной колонке ? Если это так , то насколько я понимаю , все равно надо будет к ней как то обращаться. |
mistеr 8 - 02.04.20 - 13:02 | ( 7) Начни с вопроса "где будут физически храниться значения в этих колонках при работе формы?" |
Likons 9 - 02.04.20 - 13:09 | ( 8) Подозреваю , что логично их хранить в таблице значений |
Likons 10 - 02.04.20 - 13:10 | ( 8) Намек понял , сейчас попробую разобраться ) Спасибо ) |
Likons 11 - 02.04.20 - 13:29 | ( 8) Благодарю , очень могли )
Если кому понадобится , решил таким образом :
1. Создал новую и заполнил таблицу значений (ТаблицаРезультат)
2. Добавил на форму обработки элемент управление "ТабличноеПоле" с типом "Таблица Значений" (ТабличноеПолеТЧЗаказа)
3. Сделал так :
ТабличноеПолеТЧЗаказа = ТаблицаРезультат.Скопировать();
ЭлементыФормы.ТабличноеПолеТЧЗаказа.СоздатьКолонки(); |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать
новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более
2000 человек.