1с как получить текущую строку табличной части
Перейти к содержимому

1с как получить текущую строку табличной части

  • автор:

1с как получить текущую строку табличной части

(1) Что ж она может портить, если она и при открытии формы вызывается?

ТекСтрока — число, вроде ничего сложного.

(2) Попробуй перед позиционированием обновить отображение формы или что нибудь в этом роде
(2) И что же это число означает? Правильный ответ позволит тебе решить твою проблему.

(3) Пробовал так
ЭтаФорма.ТекущийЭлемент = Элементы.СписокЗаказов;

Элемент активируется, но на нужной строке не позиционируется

(4) идентификатор строки, как дальше мыслить?

(6) получить идентификатор

(7) не все так просто.
Выбрать в данных естественный ключ, описывающий текущую строку, после обновления найти по нему новую строку и установить ее идентификатор

(8) понял, решил вопрос вот так:

ВыгрузитьЭННаСервере(Элементы.СписокЗаказов.ТекущиеДанные.Заказ);
ЗагрузитьСписокЗаказов();
ЭтаФорма.ТекущийЭлемент = Элементы.СписокЗаказов;

МассивСтрок = СписокЗаказов.НайтиСтроки(Новый Структура(«Заказ», Заказ));
Если МассивСтрок.Количество() > 0 Тогда
Элементы.СписокЗаказов.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
КонецЕсли;

(9) ЭтаФорма.ТекущийЭлемент = Элементы.СписокЗаказов;

В принципе лишнее — оно просто переводит фокус на список. На текущую строку влияет никак.

1с как получить текущую строку табличной части

Форм=ТекДок.ПолучитьФорму(«ФормаДокумента»);
Форм.Открыть();
Форм.ТекущийЭлемент=Док.ЭлементыФормы.Работы;
Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр;

ТекСтр — найденная строка этой табличной части

такой вариант не катит — все равно позиционируется на первую строку табличной части. Что не так?

(0) Посмотри внимательно свойства формы
Что именно?
Переменная Док — ?

ТабличноеПоле.ТекущаяСтрока (TableBox.CurrentRow)
ТабличноеПоле (TableBox)
ТекущаяСтрока (CurrentRow)
Использование:
Чтение и запись.
Описание:
Содержит текущую строку табличного поля.
Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов.
См. также:
ТабличноеПоле, свойство ТекущаяКолонка

*Форм.ТекущийЭлемент=Форм.ЭлементыФормы.Работы;
Хэлп я читал)
Тип какой ТекСтр?
(0) Значит была найдена первая строка или возможно совсем ничего не найдено

(8) В таком случае должно работатаь. Либо происходит повторная инициализация, либо отбор накладывается. Посмотри в отладчике.

(10) смотрел в отладчике. ТекущаяСтрока — Неопределено как до присвоения так и после присвоения ТекСтр (ДокументТабличнаяЧастьСтрока). Но и не ругается

(11) Сделай поиск по таблице после Форм.Открыть();
(11) Либо не совпадает тип, либо строка не найдена

Перем ТекСтр;
Процедура КоманднаяПанель1запомнить(Кнопка)
ТекСтр = ЭлементыФормы.ДокументыПоВхНДС.ТекущаяСтрока;
// Вставить содержимое обработчика.
КонецПроцедуры

Процедура КоманднаяПанель1Заполнить(Кнопка)
//Заполняем документами с входящим НДС
ЭлементыФормы.ДокументыПоВхНДС.ТекущаяСтрока = ТекСтр;
КонецПроцедуры

В таком варианте перескакивает на ту строку, которую «запомнил»

(12) не сработало (

(14) Все работает с уже существующей формой. Речь идет о «перескакивании» в программно созданной форме.

(16) Вернее, в программно открытой
(17) Это не имеет значения.

Форм=ТекДок.ПолучитьФорму(«ФормаДокумента»);
Форм.Открыть();
Форм.ТекущийЭлемент=Док.ЭлементыФормы.Работы;

ТекСтр = Форм.ЭлементыФормы.Работы.Найти(ТекТовар, «Номенклатура»);

И так и не работает?

(18) Как раз имеет. Тот же самый кусок кода прекрасно встает на нужную строку:
Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр;

Как это может быть программно созданная форма если ты получаешь реальную форму: «Форм=ТекДок.ПолучитьФорму(«ФормаДокумента»);» ?
Нужно чтобы ТекущаяСтрока и ТекСтр имели одинаковый тип.
А у тебя скорее всего ТекСтр это Строка Табличной части. А Текущая строка — это строка табличного поля.

(19) У элемента формы «Табличное поле» вообще нет такого метода как «Найти»

(21) верно. Как, имея строку табличной части, получить строку табличного поля? Может, и глупый вопрос 🙂

(21) Внимательно читаем синтаксис помошник.
(22) Кстати, ты в курсе что у тебя и не будет работать, Т.к. ты тек строку из другого объекта выдергиваешь, не из объекта формы.

(23) Он тебя морочит
+(24) Т.е. ТекДок <> Форма.ДокументОбъект
В табличной части есть Найти.

(24) на сколько внимательно читать надо? А точнее на что обратить внимание?
Может на это: ТекущаяСтрока (CurrentRow)
Описание:
Содержит текущую строку табличного поля.?

(28) Например, на это:
«Расширение табличного поля табличной части
Свойства:
НастройкаОтбораСтрок (RowFilterSettings)
ОтборСтрок (RowFilter)
ПроверкаОтображенияНовойСтроки (NewRowShowCheck)

Описание:
Дополнительные свойства элемента управления ТабличноеПоле, предназначеные для интерактивной работы с табличной частью. Для данного расширения свойства ТекущаяСтрока и ТекущиеДанные имеют значения типа Строка табличной части
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. «

(23) Пока не знаю как это можно сделать. А понял ) перебором (если строк не много) Запускаешь цикл по табличному полю и встречая необходимое значение делаешь эту строку текущей 🙂

+(29) И еще тут:
«Примечание:
Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов. «

(27) Есть, находится нужная строка в табличной части, но как сделать текущей строкой табличного поля эту «найденную» строку табличной части?

(32)
Форм=ТекДок.ПолучитьФорму(«ФормаДокумента»);
Форма.ДокументОбъект = ДокументОбъектВТабличнойЧастиКоторгоПроизводилПоиск;
Форм.Открыть();
Форм.ТекущийЭлемент=Док.ЭлементыФормы.Работы;
Форм.ЭлементыФормы.Работы.ТекущаяСтрока=ТекСтр

Программирование 1С 8.х для начинающих

  • Вы здесь:
  • Главная
  • Статьи
  • Конфигурация
  • Форма
  • Как установить текущую строку в 8.2 Управляемые формы

Поделитесь в соцсетях

Конфигурация

Как установить текущую строку в 8.2 Управляемые формы

Подробности Категория: Форма

    • Как установить текущую строку или найти данные по текущей строке в 8.2
      • Определение строки Таблицы значений по Текущей строке Таблицы
      • Установка текущей строки в Таблице

      Как установить текущую строку или найти данные по текущей строке в 8.2

      Как установить строку в 8.1 (обычные формы) читайте здесь.

      Для начала нужно уяснить, что есть объект который содержит данные, например ДанныеФормыКоллекция и есть объект который отображает данные визуально — Таблица.

      В Таблице есть только текущая строка, с помощью неё нельзя узнать все существующие значения ДанныеФормыКоллекция с которыми она связана. В свою очередь у ДанныеФормыКоллекция нет текущей строки. Чтобы связать эти объекты в 1с используется Идентификатор, ведь строки порядок строк можно изменить как в визуальной части так и в данных, но свзяь при этом не должна нарушиться.

      Рассмотрим это на примере:

      У формы есть реквизит ТЗ типа (ТаблицаЗначений) — в скобках потому, что фактический тип — ДанныеФормыКоллекция

      Реквизит выведен на форму в виде Таблицы.

      Определение строки Таблицы значений по Текущей строке Таблицы

      Чтобы определить какая строка ТЗ сейчас текущая, нужно сначала получить идентификатор строки в Таблице, а затем по нему найти строку в ТЗ

      ИдентификаторСтроки = Элементы.ТЗ.ТекущаяСтрока; // Получаем идентификатор в Таблице СтрокаТЗ = ТЗ.НайтиПоИдентификатору(ИдентификаторСтроки); 

      Установка текущей строки в Таблице

      Чтобы установить текущую строку таблицы нужно сделать наоборот. Сначала получить идентификатор ТЗ, а затем установить на нём текущую строку Таблицы.

       СтрокаТЗ = ДанныеФормыКоллекция[0]; // для примера возьмем строку 1 ИдентификаторСтроки = СтрокаТЗ.ПолучитьИдентификатор(); Элементы.ТЗ.ТекущаяСтрока = ИдентификаторСтроки; 

      Для более удобного понимания можете скачать обработку которая демонстрирует функции определения и установки текущей строки. Обработка работает только в тонком клиенте!

      Недостаточно прав для комментирования

      Как получить текущие данные строки табличной части на форме в 1с 8.3?

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

      Как получить текущие данные строки в табличной части управляемой формы

      Если у Вас возникли какие-то вопросы Вы можете воспользоваться нашими услугами 1с программистов, и они обязательно помогут Вам в решении любых вопросов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *