Как получить данные выделенной строки в управляемой форме 1С:Предприятие?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке в среде 1С:Предприятие 8.3 часто возникает задача обработки данных, выбранных пользователем в табличном поле (динамическом списке или табличной части). Давайте разберем, как правильно обращаться к таким данным, чтобы избежать ошибок и сделать код максимально эффективным.

Получение данных одной текущей строки

Если ваша задача заключается в том, чтобы получить данные именно той строки, на которой в данный момент установлен курсор пользователя (фокусная строка), мы воспользуемся свойством ТекущиеДанные элемента формы. Это самый простой и распространенный сценарий.

Рассмотрим по шагам, как это реализовать:

  1. Определите имя вашего табличного элемента на форме. Допустим, это ТЧ (табличная часть).
  2. Обратитесь к элементу через коллекцию Элементы.
  3. Используйте свойство ТекущиеДанные для извлечения информации.

На примере кода это выглядит следующим образом:


// Получаем данные текущей строки
ДанныеСтроки = Элементы.ТЧ.ТекущиеДанные;

Если ДанныеСтроки <> Неопределено Тогда
    // Теперь мы можем обратиться к любому полю строки, например:
    ВыделеннаяДата = ДанныеСтроки.Дата;
    Сообщить("Выбранная дата: " + ВыделеннаяДата);
КонецЕсли;

Важно помнить, что ТекущиеДанные возвращают структуру с данными строки. Если курсор не установлен ни на одну строку, свойство вернет Неопределено, поэтому проверка на заполненность обязательна.

Работа с несколькими выделенными строками

Ситуация усложняется, если пользователь выделил сразу несколько строк с помощью клавиш Ctrl или Shift. В этом случае обычный метод ТекущиеДанные не подойдет, так как он вернет информацию только для одной «фокусной» строки. Чтобы обработать весь список выделенных элементов, воспользуемся методом ВыделенныеСтроки().

Рассмотрим, как правильно организовать перебор таких строк:


// Получаем массив идентификаторов выделенных строк
МассивВыделенныхСтрок = Элементы.ТвойСписокНаФорме.ВыделенныеСтроки();

// Перебираем массив в цикле
Для Каждого Идентификатор Из МассивВыделенныхСтрок Цикл
    // Получаем данные конкретной строки по её идентификатору
    СтрокаДокумента = Элементы.ТвойСписокНаФорме.ДанныеСтроки(Идентификатор);
    
    // Выполняем необходимые действия с объектом, например, копирование
    Сообщить("Обработка строки: " + СтрокаДокумента.Номер);
КонецЦикла;

При использовании данного подхода мы получаем массив ключей, которые соответствуют строкам в таблице. Метод ПолучитьПоИдентификатору() или ДанныеСтроки() (в зависимости от типа элемента) позволяет перейти от идентификатора к конкретным значениям полей.

Важные замечания по контексту выполнения

При работе с элементами формы всегда учитывайте, где именно исполняется ваш код:

Помните, что Переменная в 1С — это именованная область памяти. Для того чтобы сохранить значение, достаточно выполнить простое присваивание, например: МояПеременная = Элементы.ТЧ.ТекущиеДанные.Дата;. Однако залог успеха — правильное использование механизмов платформы для получения ссылок на объекты данных, а не просто копирование значений из интерфейса.

Если вашей целью является создание нового документа на основании выбранного, после получения ссылки (например, через СтрокаДокумента.Ссылка), используйте метод Скопировать(). Это позволит создать новый объект в памяти, который будет содержать все данные оригинала, готовые к дальнейшей модификации.

← На главную