Как можно получить значение колонки табличной части?

1. I_train 19.10.21 20:05 Сейчас в теме
Формы обычные, хочу при записи в модуле формы получить значение колонки табличной части, ка это можно сделать, не нахожу и интернете ничего внятного
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Torin 754 19.10.21 20:10 Сейчас в теме
(1) Объект.ИмяТабличнойЧасти.ИмяРеквизита (колонки)
3. I_train 19.10.21 20:14 Сейчас в теме
(2) пытаюсь получить указав имя колонки, но пишет что переменная не определенная
ЗначениеКолонки = ЭлементыФормы.Товары.Колонки.ТекущиеДанные[Номенклатура];
4. Torin 754 19.10.21 20:24 Сейчас в теме
(3)
Для каждого стр из  ЭтотОъбъект.Товары.Номенклатура цикл

Сообщить(стр);

   КонецЦикла
5. farengeit00 19.10.21 21:02 Сейчас в теме
(3)ЗначениеКолонки = ЭлементыФормы.Товары.ТекущиеДанные[ИмяКолонки];
6. I_train 19.10.21 21:32 Сейчас в теме
(5) написал таким образом, указывает на содержание скобки и ошибка что переменная не определенна вылезает
7. FatPanzer 19.10.21 21:35 Сейчас в теме
(6) Попробуйте тогда
ЭлементыФормы.Товары.ТекущиеДанные[КомпьютерПопробуйУгадатьИмяМоейКолонки]
8. I_train 19.10.21 21:57 Сейчас в теме
(7) чушь не несите, ради бога, к чему этот сарказм?
9. spacecraft 19.10.21 21:57 Сейчас в теме
(3)
ЗначениеКолонки = ЭлементыФормы.Товары.Колонки.ТекущиеДанные[Номенклатура];

В данном коде Номенклатура это необъявленная переменная, на которую и ругается. Нужно передавать строку:
ЗначениеКолонки = ЭлементыФормы.Товары.ТекущиеДанные["Номенклатура"];
11. AnryMc 849 20.10.21 09:20 Сейчас в теме
(3)
ЗначениеКолонки = ЭлементыФормы.Товары.Колонки.ТекущиеДанные[Номенклатура];


ТекущиеДанные в таблице - это строка.
Получив строку - можно в ней найти значение в нужной колонке:
ЗначениеКолонки = ЭлементыФормы.Товары.ТекущиеДанные["Номенклатура"]; 

Подразумевается что "Номенклатура" это название (идентификатор) нужной колонки
10. provadyuga 99 20.10.21 05:59 Сейчас в теме
значение колонки табличной части
Это же и будет реквизит табличной части. Зная его имя, например "Контрагент" к нему можно обратиться
ЗначениеКонтрагента = ЭлементыФормы.МояТаблЧасть.ТекущиеДанные["Контрагент"]

Если вы добавили свою произвольную колонку в таблицу, у которой в свойстве "Данные" указано на какую-либо табличную часть, то обратиться к такой колонке и прочитать из нее значение по моему нет возможности. Можно только в событии "ПриВыводеСтроки" что-то выводить в эту свою произвольную колонку.
12. Dem0 20.10.21 09:47 Сейчас в теме
ЗначениеЯчейки = Товары[индексИнтересующейМеняСтроки].ИмяИнтересующейМеняКолонки
13. provadyuga 99 20.10.21 10:54 Сейчас в теме
(12) Для обычных форм, если у табличного поля в свойстве данные указано ТЧ (например "Товары" как в вашем примере), ваш код вывалится с ошибкой "Индекс находится за границами массива" уже при индексе равном 0 т.е. на первой же строке. Получить отдельно взятую строку табличного поля, у которого в свойстве данные указано ТЧ по индексу нет возможности, если не ошибаюсь можно только для выделенного диапазона строк и еще предполагаю может быть в событии ПриВыводеСтроки.
14. Dem0 20.10.21 11:29 Сейчас в теме
(13)
Кажется вас кто-то ввел в заблуждение:
Прикрепленные файлы:
I_train; provadyuga; +2 Ответить
15. provadyuga 99 20.10.21 13:29 Сейчас в теме
(14) Согласен. Находился в заблуждении. Спасибо, продемонстрировали рабочий вариант.
На своем примере у меня ТЧ и ТП имеют разные имена. И я обращался ТП[Индекс]. Это не работало. Выходила ошибка: "Индекс находится за границами массива". И оказывается ТЧ[Индекс].МояПроизвольнаяКолонкаВ_ТП - рабочий вариант.
Dem0; I_train; +2 Ответить
16. provadyuga 99 20.10.21 15:11 Сейчас в теме
(14) Все таки я был прав. Вот такой код
Процедура ПриЗаписи(Отказ)
	Для ИндексСтроки = 0 По СпискиКонтрагентов.Количество()-1 Цикл
		СпискиКонтрагентов[ИндексСтроки].СписокКонтрагентов = 
			Новый ХранилищеЗначения(ЭлементыФормы.СпискиКонтрагентов[ИндексСтроки].СписокКонтрагентовТП);
	КонецЦикла;
у меня вываливается с ошибкой: Получение элемента по индексу для значения не определено
СпискиКонтрагентов[ИндексСтроки].СписокКонтрагентов =
В вашем примере из УТ 10.3 Цена является реквизитом ТЧ. И вы обращаетесь к строке ТЧ через индекс - так можно. Но если у вас произвольная колонка в ТП, у которой данные ТЧ, то ничего не получается. К строке ТП не подобраться никак.
17. FatPanzer 20.10.21 15:18 Сейчас в теме
(16)
К строке ТП не подобраться никак.

1. Получить строку по индексу.
2. Получить оформление строки.
3. У оформления строки есть свойство Ячейки.
Будет примерно так (по памяти):
СтрокаТЧ.ОформлениеСтроки.Ячейки.ИмяКолонки.Значение
18. Dem0 20.10.21 15:27 Сейчас в теме
(16)
Но если у вас произвольная колонка в ТП, у которой данные ТЧ,

Не совсем понял, что тут у вас имелось ввиду. Если колонка не привязана к данным - можно установить ее текст. Получить - хз как..
В типовых такая штука работает в журналах документов и табличных частях.
2 варианта:
либо ПриПолученииДанных() что предпочтительнее для производительности
либо ПриВыводеСтроки()
Но если колонка не привязана к данным - как ее редактировать интерактивно?
Программно - понятно, а вот пользюку - эта колонка чисто информативная вещь.
Вот попробуйте в типовой УТ 10.3 изменить врукопашную колонку "Всего" в документе РТиУ
UPD: Пока писал - FatPanzer уже на все ответил =)
Прикрепленные файлы:
19. provadyuga 99 20.10.21 15:39 Сейчас в теме
1. Получить строку по индексу.
Можно легко получить строку ТЧ по индексу. Но по строке ТЧ не получишь значение в произвольной колонке.
2. Получить оформление строки.
Оформление строки - это для строки ТП в событии ПриВыводеСтроки реализовано. А например перебрать строки ТП и записать значения в произвольной колонке в реквизит типа ХранилищеЗ. - не получается. Не подберешься к строкам ТП никак.
20. FatPanzer 20.10.21 15:41 Сейчас в теме
(19) Так мы вроде как про Чтение говорим. А не про Запись.
21. provadyuga 99 20.10.21 15:43 Сейчас в теме
(20) Я тоже про чтение. Прочитать из произвольную колонку из ТП и записать ее в ТЧ.
22. FatPanzer 20.10.21 15:47 Сейчас в теме
(21) И в чем проблема скрестить две строки? По моему в обычных формах это никогда не было проблемой. Это в УФ их сильно разнесли по сути, и поиск стал возможен через посредник-идентификатор...
А в обычных просто перебиралась таблица. Для чтения/записи реквизитов использовалось Строка.Реквизит. Для чтения/записи допколонки использовалось Строка.Оформление.Ячейки.ДопКолонка...
Че-то вы там мухлюете.
23. provadyuga 99 20.10.21 15:55 Сейчас в теме
(22)
Для чтения/записи допколонки использовалось Строка.Оформление.Ячейки.ДопКолонка...
Строка ТЧ или ТП ?
ЭлементыФормы.СпискиКонтрагентов[ИндексСтроки].ОформлениеСтроки.Ячейки
выдает ошибку: Получение элемента по индексу для значения не определено
24. Release 20.10.21 16:19 Сейчас в теме
(23) Эм, а разве ОформлениеСтроки так работает? Уже не уверен, но вроде как-то так нужно:
Для каждого СтрокаТП Из ЭлементыФормы.СпискиКонтрагентов.Значение Цикл
    Ячейки = ЭлементыФормы.СпискиКонтрагентов.ОформлениеСтроки(СтрокаТП).Ячейки;
КонецЦикла;
provadyuga; +1 Ответить
25. provadyuga 99 20.10.21 18:33 Сейчас в теме
(24) А эту лазейку я и не заметил.
26. Release 20.10.21 18:41 Сейчас в теме
(25) Ну да, но мой вопрос был по ОформлениеСтроки. Разве можно получить значение ОформлениеСтроки просто через точку? Там вроде как только через функцию. Но точно я не помню, с обычными формами уже года 2 не занимался.
Я в СП смотрел, но что-то его в последних версиях урезали, справки по самому табличному полю нет, только по подчинённым элементам (полям, методам). Так что я не уверен.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот