Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Программно добавить ТаблицуЗначений на форму

Программно добавить ТаблицуЗначений на форму
Я
   RizONE
 
02.01.21 - 23:08
Доброе!
С Новым Годом!
Подскажите сабж, нагуглить ничего кроме УП не могу
делаю на 8.3 что-то типа

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

дает ошибку
Нужно для ОП
   RizONE
 
1 - 02.01.21 - 23:09
(0) пардон, УП = УФ
   Сергиус
 
2 - 02.01.21 - 23:21
(0)&НаСервере
Процедура ПриОткрытииНаСервере()

    // Описание таблицы значений как реквизита

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

    // Добавление ТаблицыЗначений в массив реквизитов

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

    // Создание ТаблицыЗначений с описанием колонок

    КвалификаторыСтроки = Новый КвалификаторыСтроки(10);
    ОписаниеСтроки_10 = Новый ОписаниеТипов("Строка", ,КвалификаторыСтроки);

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

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


    // Добавление в массив реквизитов колонок ТаблицыЗначений

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

    // Удаление - если таблица существует

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

    // Добавление ТаблицыЗначений на форму

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


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

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

    КонецЦикла;

    // Заполнение ТаблицыЗначений

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

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

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

    // Передача ТаблицыЗначений в реквизит формы

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

КонецПроцедуры
   RizONE
 
3 - 02.01.21 - 23:23
(2)
Поле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "тпПроцедуры", Истина, ЭлементыФормы.ПанельСправочники);
Поле.ТолькоПросмотр = ЛОЖЬ;
Поле.ТипЗначения = Новый ОписаниеТипов("ТаблицаЗначений");

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.