Как выбрать значение из колонки таблицы значений и передать его в реквизит формы в 1С УФ?

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

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

Реализация выбора значения через событие таблицы

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

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

  1. Перейдите в свойства элемента Таблица, добавленного на форму.
  2. В разделе События найдите событие Выбор и создайте обработчик.
  3. В процедуре обработчика нам нужно получить данные строки, на которой сработал выбор.

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


&НаКлиенте
Процедура ИмяТаблицыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    // Получаем текущие данные строки через метод ДанныеСтроки
    ДанныеВыбраннойСтроки = Элемент.ДанныеСтроки(ВыбраннаяСтрока);
    
    // Передаем значение из колонки Модель в реквизит формы
    ЭтотОбъект.РеквизитДляВыбора = ДанныеВыбраннойСтроки.Модель;
КонецПроцедуры

Важно помнить, что ВыбраннаяСтрока в данном контексте — это не сам объект, а идентификатор (индекс) строки в коллекции, поэтому прямое обращение по индексу может привести к ошибке. Метод ДанныеСтроки — это именно то, что нам нужно для получения содержимого ячейки.

Альтернативный подход: Использование списка выбора

Если ваша таблица не содержит сотен записей и вы хотите предоставить пользователю возможность выбора из выпадающего списка, можно реализовать логику заполнения СписокВыбора для реквизита. Это выглядит более «красиво» с точки зрения UX.

Для этого в процедуре ПриСозданииНаСервере мы можем программно наполнить список значений, доступных для выбора в элементе управления:


// Пример заполнения списка выбора
Список = Элементы.РеквизитДляВыбора.СписокВыбора;
Список.Очистить();
Для Каждого СтрокаТЗ Из Объект.ВашаТаблицаЦикл
    Список.Добавить(СтрокаТЗ.Модель);
КонецЦикла;

Вопросы сохранения данных формы

Часто после того, как мы выбрали значение, возникает вопрос: как сделать так, чтобы оно не пропадало после перезапуска обработки? Платформа 1С предлагает встроенный механизм сохранения настроек.

Вы можете воспользоваться стандартной функциональностью Автоматическое сохранение данных формы в настройках. Если же вам необходимо сохранять специфические структуры, которые не являются реквизитами объекта, мы рекомендуем использовать следующий алгоритм при сохранении настроек на сервере:


&НаСервере
Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
    МассивЗначений = Новый Массив;
    Для Каждого Строка Из Объект.ВашаТаблица Цикл
        МассивЗначений.Добавить(Строка.Модель);
    КонецЦикла;
    
    Настройки.Вставить("СписокМоделей", МассивЗначений);
КонецПроцедуры

Этот метод позволяет гибко управлять тем, какие данные пользователя будут доступны при следующем открытии формы. Использование ХранилищеНастроекФорм также является профессиональным стандартом для внутренних обработок, позволяя не захламлять основные реквизиты объекта вспомогательными данными.

Заключение и рекомендации

Подводя итоги, мы выяснили, что:

Использование этих инструментов позволит вам избежать лишнего написания кода и обеспечит стабильную работу вашей обработки в управляемом интерфейсе 1С.

← На главную