|
Программное добавление командной панели на неуправляемую форму | ☑ | ||
---|---|---|---|---|
0
trustisk
08.12.13
✎
10:52
|
Добрый день, коллеги. Может кто подскажет, где я ошибаюсь. Проблема в следующем: есть документ, в нем добавил таблицу. Нужно программно вывести таблицу и командную панель. Заранее спасибо. Вот код
ТекущаяФорма = ЭтаФорма; ОсновнаяПанель = ТекущаяФорма.ЭлементыФормы.Найти("ОсновнаяПанель"); Если ОсновнаяПанель = Неопределено Тогда Сообщить("В форме не определен элемент ""ОсновнаяПанель"". |Добавление табличной части ""Серийные номера"" остановлено."); Возврат; КонецЕсли; СтраницаСерийныеНомера = ОсновнаяПанель.Страницы.Добавить("СерийныеНомера","Серийные номера"); ШиринаЭлементовУправления = ОсновнаяПанель.Ширина-12-2; Лево = 6; ОсновнаяПанель.ТекущаяСтраница = СтраницаСерийныеНомера; // рамка группы "Серийные номера" РамкаГруппыТЧ = ЭлементыФормы.Добавить(Тип("РамкаГруппы"), "бит_РамкаГруппыСерийныеНомераТЧ", Истина, ОсновнаяПанель); РамкаГруппыТЧ.Лево = Лево; РамкаГруппыТЧ.Верх = 2; РамкаГруппыТЧ.Высота = 16; РамкаГруппыТЧ.Ширина = ШиринаЭлементовУправления; РамкаГруппыТЧ.Видимость = Истина; РамкаГруппыТЧ.Заголовок = "Серийные номера"; РамкаГруппыТЧ.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Подчеркивание); // поле серийных номеров табличной части ПолеТЧ = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "СерийныеНомераТЧ", Истина, ОсновнаяПанель); ПолеТЧ.Данные = "mgf_СерийныеНомера"; НоваяКолонка = ПолеТЧ.Колонки.Добавить("НомерСтроки"); НоваяКолонка.Данные = "НомерСтроки"; НоваяКолонка.ТекстШапки = "№"; НоваяКолонка.Ширина = 4; НоваяКолонка.ИзменениеРазмера = ИзменениеРазмераКолонки.НеИзменять; НоваяКолонка = ПолеТЧ.Колонки.Добавить("Номенклатура"); НоваяКолонка.Данные = "Номенклатура"; НоваяКолонка.ТекстШапки = "Номенклатура"; НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода")); НоваяКолонка.ЭлементУправления.ТолькоПросмотр = Истина; НоваяКолонка.ЭлементУправления.КнопкаОткрытия = Истина; НоваяКолонка = ПолеТЧ.Колонки.Добавить("СерийныйНомер"); НоваяКолонка.Данные = "СерийныйНомер"; НоваяКолонка.ТекстШапки = "Серийный номер"; НоваяКолонка.УстановитьЭлементУправления(Тип("ПолеВвода")); НоваяКолонка.ЭлементУправления.КнопкаОткрытия = Истина; НоваяКолонка.ЭлементУправления.КнопкаОчистки = Истина; НоваяКолонка.ЭлементУправления.КнопкаВыбора = Истина; // создадим командную панель поля серийные номера КоманднаяПанельТЧ = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"),"бит_КоманднаяПанельСерийныеНомераТЧ",Истина,ОсновнаяПанель); КоманднаяПанельТЧ.ИсточникДействий = ЭлементыФормы.СерийныеНомераТЧ; КоманднаяПанельТЧ.Автозаполнение = Истина; ВысотаПанель = 29; КоманднаяПанельТЧ.Верх = РамкаГруппыТЧ.Верх+РамкаГруппыТЧ.Высота; КоманднаяПанельТЧ.Лево = Лево; КоманднаяПанельТЧ.Высота = ВысотаПанель; КоманднаяПанельТЧ.Ширина = ШиринаЭлементовУправления; КоманднаяПанельТЧ.Видимость = Истина; КоманднаяПанельТЧ.Доступность = Истина; ВерхПолеТЧ = КоманднаяПанельТЧ.Верх+КоманднаяПанельТЧ.Высота+2; ЛевоПолеТЧ = 6; ВысотаПолеТЧ = ОсновнаяПанель.Высота - КоманднаяПанельТЧ.Верх-КоманднаяПанельТЧ.Высота - 12 - 20; ПолеТЧ.ТолькоПросмотр = ложь; ПолеТЧ.Верх = ВерхПолеТЧ; ПолеТЧ.Лево = ЛевоПолеТЧ; ПолеТЧ.Высота = ВысотаПолеТЧ; ПолеТЧ.Ширина = ШиринаЭлементовУправления; ПолеТЧ.Видимость = Истина; РамкаГруппыТЧ.УстановитьПривязку(ГраницаЭлементаУправления.Право,ОсновнаяПанель,ГраницаЭлементаУправления.Право); КоманднаяПанельТЧ.УстановитьПривязку(ГраницаЭлементаУправления.Право,ОсновнаяПанель,ГраницаЭлементаУправления.Право); ПолеТЧ.УстановитьПривязку(ГраницаЭлементаУправления.Право,ОсновнаяПанель,ГраницаЭлементаУправления.Право); ПолеТЧ.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ОсновнаяПанель,ГраницаЭлементаУправления.Низ); |
|||
1
trustisk
08.12.13
✎
10:53
|
Важный момент. Рамка и таблица выводиться с правильными привязками. Командная панель - нет.
|
|||
2
wertyu
08.12.13
✎
11:00
|
эСтраницы = Элементы.Найти("ГруппаСтраница" + Строка(НЛ));
Если Не эСтраницы = Неопределено Тогда Элементы.Удалить(эСтраницы); КонецЕсли; эСтраница = Элементы.Добавить("ГруппаСтраница" + Строка(НЛ), Тип("ГруппаФормы"), Элементы.ГруппаСтраниц); эСтраница.Вид = ВидГруппыФормы.Страница; эСтраница.Заголовок = НазваниеЛиста; эТаблица = Элементы.Найти(идТаблицы); Если Не эТаблица = Неопределено Тогда Элементы.Удалить(эТаблица); КонецЕсли; эТаблица = Элементы.Добавить(идТаблицы, Тип("ТаблицаФормы"), эСтраница); эТаблица.ПутьКДанным = идКоллекции; эТаблица.Отображение = ОтображениеТаблицы.Список; НК = 0; Для Каждого ТекущаяКололонка из Лист.Колонки Цикл эКолонка = Элементы.Добавить(идТаблицы + ТекущаяКололонка.Имя, Тип("ПолеФормы"), эТаблица); эКолонка.Вид = ВидПоляФормы.ПолеВвода; эКолонка.ПутьКДанным = идКоллекции + "." + ТекущаяКололонка.Имя; эКолонка.ОграничениеТипа = Новый ОписаниеТипов("Строка"); Если ТекущаяКололонка.Имя = "НомерСтроки" Тогда эКолонка.Заголовок = "№"; эКолонка.Ширина = 7; Иначе НК = НК + 1; эКолонка.Заголовок = ТекущаяКололонка.Имя + " (" + Строка(НК) + ")"; КонецЕсли; КонецЦикла; |
|||
3
wertyu
08.12.13
✎
11:00
|
НЛ - это количество листов
|
|||
4
wertyu
08.12.13
✎
11:03
|
идКоллекции и идТаблицы можешь любые строки присваивать
|
|||
5
wertyu
08.12.13
✎
11:04
|
Лист - это таблица значений
|
|||
6
trustisk
08.12.13
✎
11:15
|
(2) Спасибо, но ... Этот код для более новой версии Элементы и Отображение - это для управляемых форм.
Второе: я не вижу кода добавления командной панели. Она автоматически добавляется? |
|||
7
trustisk
08.12.13
✎
11:22
|
Разобрался. Строка
КоманднаяПанельТЧ.Автозаполнение = Истина; Должна быть после строки ПолеТЧ.ТолькоПросмотр = ложь; Иначе командная панель ничем не заполняется |
|||
8
wertyu
08.12.13
✎
11:24
|
извиняюсь, обычно когда расшифровывают, то для управляемых )
|
|||
9
wertyu
08.12.13
✎
11:26
|
надо зделать элемент формы типа табполе, присвоить данные = ТЗ, и чтобы вывело - ЭлементыФормы.табполе.СоздатьКолонки()
|
|||
10
wertyu
08.12.13
✎
11:27
|
ну а дальше колонкам разные признаки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |