Имя: Пароль:
1C
 
Программное обращение к вновь добавленной колонке
0 Likons
 
02.04.20
12:20
Добрый день , ув. Коллеги )
Танцую с бубном , не могу разобраться (
Подскажите пожалуйста , как правильно выйти из ситуации.
Есть обработка , в ней есть табличная часть(ТабличнаяЧастьЗаказа) с набором её реквизитов.
Так же есть структура (СтруктураСоответствияСкладов) с названием колонок , которые необходимо добавить в эту табличную часть.

Выглядит структура таким образом : ("НазваниеСклада (простая строка)" , Элемент справочника склады)

Далее мне нужно каким то образом обратиться к вновь добавленным колонкам , дабы их как то заполнить.
Проблема в том , что вновь добавленные колонки , не являются реквизитами моей табличной части и я не знаю , как правильно к ним обращаться (

Добавляю колонки я таким образом :

    Для каждого Элемент из СтруктураСоответствияСкладов цикл
        ИмяНовойКолонки = Элемент.Ключ;
        НоваяКолонка = ЭлементыФормы.ТабличнаяЧастьЗаказа.Колонки.Добавить(ИмяНовойКолонки);
        НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода"));    
    КонецЦикла;

А вот так я пытаюсь их заполнять :

        Для каждого Колонка из ЭлементыФормы.ТабличнаяЧастьЗаказа.Колонки цикл
            ЗначениеДляПоиска = неопределено;
            СтруктураСоответствияСкладов.Свойство(Колонка.Имя,ЗначениеДляПоиска);
            Если ЗначениеДляПоиска <> неопределено тогда
                СтруктураОтбора = Новый Структура("Склад",ЗначениеДляПоиска);
                МассивСтрок = ТаблицаОстатков.НайтиСтроки(СтруктураОтбора);
                Для каждого Элемент из МассивСтрок цикл
                    СтрокаСНужнойНоменклатурой = ТабличнаяЧастьЗаказа.Найти(Элемент.Номенклатура,"Номенклатура");
                    Если СтрокаСНужнойНоменклатурой <> Неопределено тогда
                        СтрокаСНужнойНоменклатурой[Колонка.Имя] = Элемент.Остаток;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЦикла;

Буду благодарен за любые наводки )
1 Likons
 
02.04.20
12:22
Уточнение : формы - обычные
2 mistеr
 
02.04.20
12:23
(0) >Далее мне нужно каким то образом обратиться к вновь добавленным колонкам , дабы их как то заполнить.

Чтобы обратиться, нужно их где-то запомнить после создания. Например, в массиве или соответствии.
3 Likons
 
02.04.20
12:27
(2) не понял ( они же у меня уже есть добавленные в табличную часть ?
Вам не трудно будет показать какой то произвольный пример ? Ну или структуру нужного соответствия набросать и в какой момент его использовать ?
4 Likons
 
02.04.20
12:34
(2) или может быть можно добавлять колонки не как элементы формы , а как реквизиты табличной части ?
5 acht
 
02.04.20
12:37
(3) Видите ли, Андрей Николаевич, в табличную часть обработки нельзя добавить колонку без изменения метаданных в конфигураторе. То, что вы сделали - называется: "добавили колонку отображения к элементу формы". При этом, эта колонка отображения не может быть связана с данными, потому что в табличной части их нет.

Измените свою хотелку.
6 mistеr
 
02.04.20
12:41
(2) (3) Пардон, не внимательно прочитал.

Ты путаешь реквизиты ТЧ и колонки табличного поля на форме, отображающего данные этой ТЧ. В табчасть нельзя динамически добавлять реквизиты. В табличное поле можно добавить любое количество колонок, но если они не связаны с данными из ТЧ, отображать что-либо в них — полностью твоя задача.

Возможно, тебе подойдет табличное поле, связанное не с ТЧ, а с таблицей значений.
7 Likons
 
02.04.20
12:47
(5) (6) Беда ( Ну , я понимаю , чем колонка на форме отличается от реквизита ТЧ. А что значит "связанное данными" ? Имеется в виду путь к данным во вновь созданной колонке ? Если это так , то насколько я понимаю , все равно надо будет к ней как то обращаться.
8 mistеr
 
02.04.20
13:02
(7) Начни с вопроса "где будут физически храниться значения в этих колонках при работе формы?"
9 Likons
 
02.04.20
13:09
(8) Подозреваю , что логично их хранить в таблице значений
10 Likons
 
02.04.20
13:10
(8) Намек понял , сейчас попробую разобраться ) Спасибо )
11 Likons
 
02.04.20
13:29
(8) Благодарю , очень могли )
Если кому понадобится , решил таким образом :
1. Создал новую и заполнил таблицу значений (ТаблицаРезультат)
2. Добавил на форму обработки элемент управление "ТабличноеПоле" с типом "Таблица Значений" (ТабличноеПолеТЧЗаказа)
3. Сделал так :
                ТабличноеПолеТЧЗаказа = ТаблицаРезультат.Скопировать();
        ЭлементыФормы.ТабличноеПолеТЧЗаказа.СоздатьКолонки();