Вход | Регистрация
 

Программное обращение к вновь добавленной колонке

Программное обращение к вновь добавленной колонке
Я
   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. Сделал так :
                ТабличноеПолеТЧЗаказа = ТаблицаРезультат.Скопировать();
        ЭлементыФормы.ТабличноеПолеТЧЗаказа.СоздатьКолонки();

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.