1С 8.3 Программное создание таблицы значений на форме в управляемом приложении - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Программное создание таблицы значений на форме в управляемом приложении

Данные > Примеры кода 1С > 1С 8.3 Таблица значений
Перейти в основной раздел:
Выводим на форму заполненную Таблицу значений в 1С 8.3:
&НаСервере
Процедура ПриОткрытииНаСервере()

   
// Описание таблицы значений как реквизита
   
МассивТипа = Новый Массив;
   
МассивТипа.Добавить(Тип("ТаблицаЗначений"));

   
// Добавление ТаблицыЗначений в массив реквизитов
   
ОписаниеТипа = Новый ОписаниеТипов(МассивТипа);
   
МассивРеквизитовФормы = Новый Массив;
   
МассивРеквизитовФормы.Добавить(Новый РеквизитФормы("ТаблицаСотрудников", ОписаниеТипа, "", "ТЗСотр"));

   
// Создание ТаблицыЗначений с описанием колонок
   
КвалификаторыСтроки = Новый КвалификаторыСтроки(10);
   
ОписаниеСтроки_10 = Новый ОписаниеТипов("Строка", ,КвалификаторыСтроки);

   
ОписаниеСотрудника = Новый ОписаниеТипов("СправочникСсылка.Сотрудники");

   
ТЗ = Новый ТаблицаЗначений;
   
ТЗ.Колонки.Добавить("Код", ОписаниеСтроки_10);
   
ТЗ.Колонки.Добавить("Сотрудник", ОписаниеСотрудника);
   
// ТЗ.Колонки.Добавить - можно и в цикле

    // Добавление в массив реквизитов колонок ТаблицыЗначений
   
Для Каждого Колонка Из ТЗ.Колонки Цикл
       
МассивРеквизитовФормы.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТаблицаСотрудников"));
    КонецЦикла;

   
// Удаление - если таблица существует
   
ЭлементТаблица = Элементы.Найти("ТаблицаСотрудников");
    Если
ЭлементТаблица <> Неопределено Тогда
       
Элементы.Удалить(ЭлементТаблица);
    Иначе
       
ИзменитьРеквизиты(МассивРеквизитовФормы);
    КонецЕсли;

   
// Добавление ТаблицыЗначений на форму
   
ТаблицаПолейВыбора = Элементы.Добавить("ТЗСотр", Тип("ТаблицаФормы"));
   
ТаблицаПолейВыбора.ПутьКДанным = "ТаблицаСотрудников";
   
ТаблицаПолейВыбора.Отображение = ОтображениеТаблицы.Список;
   
ТаблицаПолейВыбора.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; // Отключение командной панели

   
Для Каждого Колонка Из ТЗ.Колонки Цикл

       
НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ТаблицаПолейВыбора);
       
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
       
НовыйЭлемент.ПутьКДанным = "ТаблицаСотрудников." + Колонка.Имя;
       
НовыйЭлемент.Ширина = 10;

    КонецЦикла;

   
// Заполнение ТаблицыЗначений
   
Запрос = Новый Запрос;
   
Запрос.Текст =
       
"ВЫБРАТЬ
        |   Сотрудники.Код КАК Код,
        |   Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
        |   Сотрудники.Ссылка КАК Ссылка,
        |   Сотрудники.Наименование КАК Наименование
        |ИЗ
        |   Справочник.Сотрудники КАК Сотрудники
        |
        |УПОРЯДОЧИТЬ ПО
        |   Наименование"
;

   
РезультатЗапроса = Запрос.Выполнить();

   
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока
ВыборкаДетальныеЗаписи.Следующий() Цикл
       
Строка = ТЗ.Добавить();
       
Строка.Код = ВыборкаДетальныеЗаписи.Код;
       
Строка.Сотрудник = ВыборкаДетальныеЗаписи.Ссылка;
    КонецЦикла;

   
// Передача ТаблицыЗначений в реквизит формы
   
ЗначениеВРеквизитФормы(ТЗ, "ТаблицаСотрудников");

КонецПроцедуры
Обработка события Таблицы на форме в 1С 8.3:
//Для добавления обработчика события таблицы "Выбор":
ТаблицаПолейВыбора.УстановитьДействие("Выбор","ТЗВыбор");

//Для обработки данного события в форме процедуры прописывается отдельная процедура (НаКлиенте):
&НаКлиенте
Процедура ТЗВыбор(ТЗ, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
     
//Код для обработки обработчика
КонецПроцедуры

Чтение программно созданной Таблицы на форме в 1С 8.3:
// При обращении к реквизиту получите ошибку: Переменная не определена
// Для чтения реквизита, который создан программно, используется метод РеквизитФормыВЗначение

ТекущаяТаблица=РеквизитФормыВЗначение("ТаблицаСотрудников");
1
комментарий
Елена
29 июн 2022
Спасибо, эта статья мне была очень полезна!
____________________
Copyright©, «Программист 1С в г.Минске», 27.04.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому