Имя: Пароль:
1C
1С v8
Командная панель и автозаполнение кнопок на ней...
0 Andry_Boris
 
06.01.15
04:29
Всем привет.

Просьба помочь разобраться...
Создаю программно страницу, на ней размещаю командную панель и табличное поле. Панель создается, таблица тоже, причем в таблице можно редактировать и добавлять строки. Но вот проблема, что кнопки не заполняются(создаются) автоматически на командной панели.
В чем может быть проблема?

Вот код:
    ОписаниеСтраницыЗамены = НСтр("ru = 'Материал - замена'; uk = 'Матеріал - заміна'");

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

    // Добавляю командную панель
    КоманднаяПанель = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"),"ПанельМатериалЗамена",Истина,ЭлементыФормы.ПанельОсновная);
    УстановитьПоложениеЭлемента(КоманднаяПанель,6,29,6,525);
    КоманднаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ЭлементыФормы.ПанельМатериалЗамена,ГраницаЭлементаУправления.Верх);
    КоманднаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.Панель,ГраницаЭлементаУправления.Право);

    КоманднаяПанель.Вспомогательная = Истина;
    КоманднаяПанель.Видимость = Истина;
    КоманднаяПанель.Доступность = Истина;
    // Включаю автозаполнение кнопок по умолчанию
    КоманднаяПанель.АвтоЗаполнение = Истина;
    
    // Добавляю Табличное поле на страницу
    ТабличноеПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"МатериалЗамена",Истина,ЭлементыФормы.ПанельОсновная);
    // Связываю панель с табличным полем
    КоманднаяПанель.ИсточникДействий = ТабличноеПоле;
    УстановитьПоложениеЭлемента(ТабличноеПоле,36,204,6,525);
    ТабличноеПоле.Данные = "МатериалЗамена";
    // Табличное поле связываю с реквизитом данных таблицей
    ТабличноеПоле.Значение = ЭтотОбъект.МатериалЗамена;
    ТабличноеПоле.СоздатьКолонки();
    ТабличноеПоле.ВертикальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.Использоватьавтоматически;
    ТабличноеПоле.Вывод = ИспользованиеВывода.Авто;
    ТабличноеПоле.ВысотаПодвала = 1;
    ТабличноеПоле.ВысотаШапки = 1;
    ТабличноеПоле.ТолькоПросмотр = Ложь;
    ТабличноеПоле.ГоризонтальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.Использоватьавтоматически;
    ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ЭтаФорма.Панель,ГраницаЭлементаУправления.Низ);
    ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.Панель,ГраницаЭлементаУправления.Право);
1 Andry_Boris
 
06.01.15
11:49
Кто нибудь сталкивался с таким или нет???
2 Мимохожий Однако
 
06.01.15
11:54
В свойствах командной панели Автозаполнение включи
3 Andry_Boris
 
06.01.15
12:02
Так ведь по тексту:

// Включаю автозаполнение кнопок по умолчанию
   КоманднаяПанель.АвтоЗаполнение = Истина;

Стоит включение или где то еще надо включить?
4 Мимохожий Однако
 
06.01.15
12:08
(3)На самой форме
5 Andry_Boris
 
06.01.15
12:23
Панель создается программно, автозаполнение включено... не могу понять где ещё надо включить...
Вот скриншоты:
http://joxi.ru/gmveXgdfLVXwra
http://joxi.ru/VrwQxlLtOQxJ2X
6 Мимохожий Однако
 
06.01.15
12:41
КоманднаяПанель = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"),"ПанельМатериалЗамена",Истина,ЭлементыФормы.ПанельОсновная);
Здесь командная панель добавляется не на страницу, а на форму
Вместо ЭлементыФормы попробуй НовыйЭлмент
..
свойство Автозаполнение только для чтения
7 Мимохожий Однако
 
06.01.15
12:56
Есть книжка В.А. Ажеронок, А.В. Островерх, М.Г. Радченко, Е. Ю. Хрусталева "Разработка управляемого интерфейса".
небольшая цитата:
Форма не рождается на клиенте. Форма рождается на сервере, она проходит несколько важных стадий предварительной обработки, прежде чем достичь глаз пользователя. Платформа содержит достаточно сложные механизмы многоуровневого кеширования различных частей формы, как на сервере, так и на клиенте.

По этой причине возможность программного изменения формы является скорее опциональной, дополнительной. Она рассчитана на отдельные конкретные сценарии работы и не предполагает массового использования в большом количестве форм конфигурации или в часто используемых формах. Основным подходом при разработке прикладных решений должно являться визуальное конструирование форм в конфигураторе. А программное изменение форм рекомендуется использовать лишь в отдельных специфических сценариях работы.

Такими сценариями могут быть, например, отображение в форме имеющихся типовых операций или характеристик объектов. То есть той информации, которая содержится в базе данных и структура которой неизвестна на этапе конфигурирования. Ее можно узнать только уже в процессе функционирования прикладного решения, в режиме 1С:Предприятие. Поэтому для ее отображения в форме и требуется ее программное изменение.
...
Полагаю, что ты не сможешь реализовать свою задачку только кодом.
8 Andry_Boris
 
06.01.15
13:05
Я программно изменяю обычную форму... Это не УФ.
9 Мимохожий Однако
 
06.01.15
13:11
Как обходной вариант... Создать общую форму в конфигурации и открывать её. Не всё можно сделать только кодом даже в обычном режиме.
10 Andry_Boris
 
06.01.15
13:14
Не если кнопки описать вручную (создание), то они выводятся, но тогда нужно описать и каждое событие на кнопку! А цель была включить внутрений механизм автозаполнения и чтобы он работал как через конф. созданный. на автомате.
11 Мимохожий Однако
 
06.01.15
13:17
Почему не устраивает форма, в которой в интерактивном режиме создана и страница, и командная панель и остальное?
12 oslokot
 
06.01.15
13:25
(0) Мож наоборот? Сначала ТП создать, потом КП  с источником дейчтвий ТП ?
13 Andry_Boris
 
06.01.15
13:34
(12) Точно!!! Спасибо!!! Все гениальное просто...
Ниже привожу рабочий код...
Вдруг кому пригодиться...

    ОписаниеСтраницыЗамены = НСтр("ru = 'Материал - замена'; uk = 'Матеріал - заміна'");
    // Создание элемента формы "Замена" с типом "Страница панели"
    НовыйЭлемент = ЭлементыФормы.ПанельОсновная.Страницы.Добавить("Замена", ОписаниеСтраницыЗамены);
    НовыйЭлемент.Видимость = Истина;
    НовыйЭлемент.Доступность = Истина;
    НовыйЭлемент.Заголовок = ОписаниеСтраницыЗамены;
    
    ЭлементыФормы.ПанельОсновная.ТекущаяСтраница = ЭлементыФормы.ПанельОсновная.Страницы.Замена;
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ТабличноеПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"МатериалЗамена",Истина,ЭлементыФормы.ПанельОсновная);
    УстановитьПоложениеЭлемента(ТабличноеПоле,36,204,6,525);
    ТабличноеПоле.Данные = "МатериалЗамена";
    ТабличноеПоле.Значение = ЭтотОбъект.МатериалЗамена;
    ТабличноеПоле.СоздатьКолонки();
    ТабличноеПоле.ВертикальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.Использоватьавтоматически;
    ТабличноеПоле.Вывод = ИспользованиеВывода.Авто;
    ТабличноеПоле.ВысотаПодвала = 1;
    ТабличноеПоле.ВысотаШапки = 1;
    ТабличноеПоле.ТолькоПросмотр = Ложь;
    ТабличноеПоле.ГоризонтальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.Использоватьавтоматически;
    ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ЭтаФорма.Панель,ГраницаЭлементаУправления.Низ);
    ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.Панель,ГраницаЭлементаУправления.Право);
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    КоманднаяПанель = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"),"ПанельМатериалЗамена",Истина,ЭлементыФормы.ПанельОсновная);
    УстановитьПоложениеЭлемента(КоманднаяПанель,6,29,6,525);
    КоманднаяПанель.ИсточникДействий = ТабличноеПоле;
    КоманднаяПанель.Вспомогательная = Истина;
    КоманднаяПанель.Видимость = Истина;
    КоманднаяПанель.Доступность = Истина;
    КоманднаяПанель.АвтоЗаполнение = Истина;
    КоманднаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ЭлементыФормы.ПанельМатериалЗамена,ГраницаЭлементаУправления.Верх);
    КоманднаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.Панель,ГраницаЭлементаУправления.Право);
14 Andry_Boris
 
06.01.15
13:35
Процедура УстановитьПоложениеЭлемента(Элемент,Верх,Высота,Лево,Ширина)

    Элемент.Верх = Верх;

    Элемент.Высота = Высота;

    Элемент.Лево = Лево;

    Элемент.Ширина = Ширина;

КонецПроцедуры
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.