Как получить текущие данные строки табличной части на форме в 1с 8.3?
Сейчас мы рассмотрим с Вами как получить текущие данные строки в табличной части на форме в 1с 8.3 (управляемые формы). Для начала нам нужно НаКлиенте обратится к самой форме, после этого выбрать, текущий элемент, а затем текущие данные. В приведенном ниже коде мы высчитываем сумму строки в событии ПриИзмененииКоличества.

Если у Вас возникли какие-то вопросы Вы можете воспользоваться нашими услугами 1с программистов, и они обязательно помогут Вам в решении любых вопросов.
1с как получить текущую строку табличной части
В форме подбора номенлатуры делаю возможность определенного фильтра, фильтр должен устанавливаться, когда ставится галочка, пишу процедуру на событие ПриИзменении флажка. В процедуре мне нужно получить текущую строку табличной части ЭтаФорма.ЭлементыФормы.НоменклатураДляПодбора.ТекущиеДанные выдает Неопределено
так получается, потому что последним выбранным объектом был флажок? а как тогда по-другому можно получить выбранное значение, в форме же видно какая строка активна в табличной части
в форме не видно какая строка активна в табличной части.
в форме видно какая строка активна в табличном поле.
(1) и как обратиться к табличному полю?
для каждого строкатабличногополя из табличноеполе цикл
тарамапарм
или
табличноеполе[число из диапазона от 0 до КоличествоСтрок()-1]
(3) мне то нужно выбранное значение, что толку что я обойду табличное поле в цикле?
Табличное поле НоменклатураДляПодбора точно привязано до табличной части?
в событие Выбор есть параметры:
Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
не оно?
при каких условиях хочешь получить значение строки?
))) не внимательно читал, при флажке)))
(5) табличное поле к табличной части привязано
так не пойдет ЭлементыФормы.ТП.ТекущаяСтрока?
(9) тоже неопределено, есть еще ВыбранныеСтроки и в них тоже пусто
можно так:
тч.Получить(тч.Индекс(ЭлементыФормы.тч.ТекущаяСтрока)).НашаКолонка
ну видимо у тебя просто нет данных в этом объекте к которому стучишься
смотрю в отладчике что содержит ЭлементыФормы.НоменклатураДляПодбора причем просматриваю это в событии Выбор для табличного поля, и у меня там ТекущиеДанные и ТекущаяСтрока пустые. Я вообще не понимаю, почему так?
видимо не то исследуешь. что за конфигурация?
это ты где вызываешь ЭлементыФормы.НоменклатураДляПодбора?
в самом справочнике? или вызов из другого места?
есть TeavViewer? могу подключиться. кидай id и парол на ящик st2009st собака потерялась qip.ru
это обработка типовая ПодборНоменклатуры ут 10.3
(18) и как к ней обращаешься?
жаль нет у меня ут 10.3
на комплексной глянул, есть таб. часть НоменклатураДляПодбора. ну и в обработчике флажка ПриИзменении напиши ЭлементыФормы.НоменклатураДляПодбора.ТекущиеДанные.Цена
что покажет?
(21) я так и делаю, неопределено
сейчас сам посмотрю, не верится
у меня тож так)) сейчас решим задачку
вот так нада ЭлементыФормы.СправочникНоменклатура.ТекущиеДанные
Неопределено дает если вообще нет строк. Должны быть текущие данные.
Или у тебя неправильно связано таб. поле с табличной частью или ты что-то путаешь в описании проблемы.
то к чему она обращается еще нет ничего,
похоже попадает, накоплением, при множественном подборе
(28)Какой бы там не был отбор , через Элементы формы путь однозначный и от отбора не зависящий.
(29) это понятно, просто она не к тому табличному полю обращалась
(25)спасибо! тока я не пойму где это поле на форме
только у меня теперь другая проблема , мне нужно было ограничить выводимый список запросом, я думала данные находятся в табличной части НоменклатураДляПодбора, я по ней сделала запрос и запросом заполнила эту ТЧ.
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТЧ»,НоменклатураДляПодбора);
Запрос.УстановитьПараметр(«Номенклатура»,ЭлементыФормы.СправочникНоменклатура.ТекущиеДанные.Ссылка);
Запрос.Текст ;
Теперь я тогда не понимаю как это сделать
(31)Это ты еще наверное ПриходноКассовыйОрдер не видела с его расшифровкой платежа.
Давно мечтаю посмотреть в глаза тому укурку, который писал исчезновение таб части и заполнение реквизитов формы при одной строке.
(33) она исчезает и появляется другая?
(34)Она исчезает и на ее месте появляются реквизиты формы, заолненные данными строки. И чтобы догадаться об этом, я тебя уверяю ты потратишь не один час:-)
Посмотреть можно Меню-Форма-Список элементов управления, если там нет, тогда в модуле динамически создается.
(36) еще не приходилось разбираться, но по любому исследование конфы это как квест )))
(38)Рекомендую посмотреть. Вот пля я лично так редко когда матерился.
+(38)В качестве гуманитарной помощи:-) В РКО и обих платежках — тоже самое. Может кто скажет имя писателя ,а? А ему свечку перевернутую поставлю и обещаю не сильно проклясть:-)
(32) тогда заполняй другую)) но рекомендую посмотреть сначала типовой механизм и попробовать добавить отсутствующее, какой нибудь галку, реквизит. чем монстра такого добавлять
(40) нада за ценить творчество)))
(41) теперь в запрос хочу сделать по ТП ЭлементыФормы.СправочникНоменклатура
ВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ВТ;
Запрос.УстановитьПараметр(«ТЧ»,ЭлементыФормы.СправочникНоменклатура);
Запрос.УстановитьПараметр(«Номенклатура»,ЭлементыФормы.СправочникНоменклатура.ТекущиеДанные.Ссылка);
Запрос.Текст ;
РезультатЗапроса = Запрос.Выполнить();
по такому коду выдает ошибку — Неверные параметры «ТЧ»
>&ТЧ КАК Таблица
Это связано с тем что СписокНоменклатуры имеет тип СправочникСписок.Номенклатура
Но я же параметром передаю ТП, я поняла, что так можно делать, или нельзя?
что-то битовцы сегодня жгут, один с скд, другая с подбором
попробуй так:
Запрос.УстановитьПараметр(«ТЧ», ЭлементыФормы.СправочникНоменклатура.Значение);
и
ЭлементыФормы.СправочникНоменклатура.Значение = РезультатЗапроса.Выгрузить();
Работа с табличной частью объектов в 1С
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для каждого Строка из ТабличнаяЧасть Цикл
Сообщить ( Строка . РеквизитТабличнойЧасти ) ;
На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.
Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.

Для получения перечня выделенных строк используется следующий код:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для того чтобы обойти выделенные строки используется цикл Для каждого:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для каждого Строка из ВыделенныеСтроки Цикл
Как программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
ЭлементыФормы . ИмяТабличногоПоля . ВыделенныйСтроки . Очистить ( ) ;
Чтобы программно выделить все строки табличного поля:
Для каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки . Добавить ( ТекущаяСтрока ) ;
КонецЦикла ;
Как очистить табличную часть
ТабличнаяЧасть . Очистить ( ) ;
Как получить текущую строку табличной части
Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.
Для обычных форм код будет выглядеть так:
ЭлементыФормы . ИмяТабличногоПоля . ТекущиеДанные ;
Для управляемых форм:
Элементы . ИмяТабличногоПоля . ТекущиеДанные ;
Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
НоваяСтрока = ТабличнаяЧасть . Добавить ( ) ;
НоваяСтрока . Реквизит 1 = «Значение» ;
Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока = ТабличнаяЧасть . Вставить ( Индекс )
//Индекс — номер добавляемой строки. Нумерация строк начинается с нуля.
НоваяСтрока . Реквизит 1 = «Значение» ;
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
Создаваемая обработчиком процедура имеет три параметра:
- Элемент — содержит элемент управления ТабличноеПоле.
- НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
- Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.
Процедура ТабличнаяЧастьПриНачалеРедактирования ( Элемент , НоваяСтрока , Копирование )
//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;
//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедуры
Работа с табличной частью объектов в 1С : 14 комментариев
- Юрий 13.06.2019 Приветствую!
Только начал изучать 1С.
Кое что уже знаю, но мало и опыта практически ноль.
Создал свою конфигурацию, пока только для тестов.
В данной конфигурации есть документ, назовем его «Заявка».
В данной заявке, есть табличная часть, в которой есть реквизит «Стоимость».
Получается, что таких документов много и мне нужно сложить все реквизиты «Стоимость» из всех документов «Заявка».
Вопрос.
Как мне это сделать?
Предполагаю, что нужно использовать функцию с экспортом, в которой будет цикл «Для Каждого ……»
Но как это оформить, пока не могу понять…
- Нестандартные решения в 1С Автор записи 14.06.2019 Добрый день. Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать. Я бы порекомендовал сделать запрос к табличной части документа (именно к табличной части, а не к документу). Выбрать там ваш столбец Стоимость и другие столбцы, если нужно. И применить функцию СУММА к этому столбцу. Подробнее и с примерами смотрите в статье Группировки в запросах 1С http://chel1c.ru/querry_group/
- Юрий 14.06.2019 Спасибо!
Буду пробовать.
- Нестандартные решения в 1С Автор записи 10.09.2019 Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
- Нестандартные решения в 1С Автор записи 10.09.2019 Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.
- Нестандартные решения в 1С Автор записи 18.01.2020 Добрый день. Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.
- Нестандартные решения в 1С Автор записи 11.02.2020 Да, логика такая. Только учтите, что таблица значений не передается с клиента на сервер.
Выделенный строки табличного поля на форме — это массив строк. Надо попробовать, передастся ли он. Если да, хорошо. Если нет — надо думать, как его передать.
- Александр 27.07.2022 Можно представить каждую строку как структуру и потом структуры поместить в массив. Получится массив структур и так передать. НУ если уж совсем извратиться то можно например сериализовать все с JSON …)))
- Автоматизация малого бизнеса Автор записи 15.12.2020 Добрый день.
Попробуйте вот так: https://forum.infostart.ru/forum9/topic84727/
Добавить комментарий Отменить ответ

Теперь мы в соцсетях! Подписывайтесь, чтобы получать информацию о последних обновлениях или задать вопрос.
УТ 11.4 На клиенте получить текущую строку табличной части?

По отладчику как раз текущая строка равна РегистрСведенийКлючЗаписи.РеестрДокументов , это же журнал документов продажи (ВСЕ) и толко на сервере я могу ПолучитьОбъект() и тогда это будет документ.ссылка
программист, архитектор, аналитик
ТекущаяСтрока — равна ссылке только для динамических списков, для которых установлена основная таблица. В других случаях это идентификатор, по которому нужно в табличной части или таблице значений (то, что выводится на форму) находить нужную строку, в которой брать значение из нужного реквизита.
Ответ написан более года назад
SteepNET @SteepNET Автор вопроса
Можно ли найти решение? Сможете подсказать ,может с примером получиться? Начну от этого отталкиваться.

SteepNET, приложите усилия, у вас же есть интернет.
Например

Автоматизации учета на 1С.
К = Элементы.Контрагенты.ТекущиеДанные; Если К <> Неопределено и К.Отчет <> Дата(1, 1, 1) Тогда Диалог = новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); Если Диалог.Выбрать() Тогда ИмяКаталога = Диалог.Каталог; //Полный путь к каталогу помещен в переменную ИмяКаталога КонецЕсли; ИмяФайла = ИмяКаталога+"\ОтчетФНС "+ К.ИНН +" от " + Формат(К.Отчет,"ДФ=dd.MM.yyyy")+".pdf"; //Элементы.Контрагенты.ТекущиеДанные.Отчет; ПолучитьНаСервере(К.Ссылка, ИмяФайла ) КонецЕсли;
где Контрагенты = имя таблицы на форме ДинамическийСписок
К.* вместо звездочки название ревизитов из табличной части.
если этот реквизит не выводите, в нужно включить «Использовать всегда» в реквизите.