8.х Программное добавление элемента управления на форму

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mhl, 11 апр 2011.

  1. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    Добрый день. Пытаюсь программно добавить элемент управления (кнопку) на форму. Вот код:
    Код:
    НоваяКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), РезультатОбъектыИнтерфейса.ИмяОбъекта, ,ЭлементыФормы.ПанельРабочееМесто.Страницы.Справочники);
    
    Но вылетает ошибка:
    {Обработка.РабочееМесто1.Форма.Форма(20)}: Ошибка при вызове метода контекста (Добавить): Несоответствие типов (параметр номер '4')
    НоваяКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), РезультатОбъектыИнтерфейса.ИмяОбъекта, ,ЭлементыФормы.ПанельРабочееМесто.Страницы.Справочники);

    На форме три вкладки. Если убрать этот параметр, то элемент не появляется.
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Вам нужно указывать только панель на которую добавляете элемент. Элемент будет добавлен на активную страницу панели.
    Т.е.:

    Код:
    ЭлементыФормы.ПанельРабочееМесто.ТекущаяСтраница = ЭлементыФормы.ПанельРабочееМесто.Страницы.Справочники;
    НоваяКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), РезультатОбъектыИнтерфейса.ИмяОбъекта, ,ЭлементыФормы.ПанельРабочееМесто);
    
  3. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    Спасибо. Элемент появился. А как теперь отрегулировать его положение? Параметры Вверх и Вних не работают.
    Поле объекта не обнаружено (Вверх)
    НоваяКнопка.Вверх = 60;
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Почему Вверх а не Верх?
  5. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    Упс.. это я не заметил. Спасибо
  6. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    Подскажите как прицепить к созданным элементам обработчики событий?
    Мне надо что то типа:
    Код:
    ИмяОбъекта = РезультатОбъектыИнтерфейса.ИмяОбъекта;
    ТекСправочник = "Справочники." + ИмяОбъекта;
    ДобавитьОбработчик ТекСправочник.СоздатьЭлемент(), ПриНажатииКнСправочники;
    
    
    Где ТекСправочник - название справочника. Но в таком виде ТекСправочник получается строкой и естественно ругается на ТекСправочник.СоздатьЭлемент()
  7. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Не совсем понял задачу. Допустим "МойЭлементФормы" - добавленный програмно элемент, тогда например добавляем событие "НачалоВывода":
    Код:
    МойЭлементФормы.УстановитьДействие("НачалоВыбора",Новый Действие("НазваниеПроцедурыНачалоВыбора"));
    
    
  8. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    По сути, форма на которой программно создаются элементы, это интерфейс. Имена элементов это названия объектов, которые надо открыть, при нажатии на этот элемент.
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Элемент управления какой? Описывайте процедуру и добавляйте обработчик. Допустим если это кнопка:

    Код:
    МойЭлементФормы.УстановитьДействие("Нажатие",Новый Действие("КнопкаОткрытьСправочникНажатие"));
    
    ...
    
    
    Процедура КнопкаОткрытьСправочникНажатие(Элемент)
    ...
    //здесь делаете то что надо сделать при нажатии на кнопку
    ...
    КонецПроцедуры 
    
    
    
  10. afinogen
    Offline

    afinogen Опытный в 1С

    Регистрация:
    28 фев 2011
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    как альтернатива, управление видимостью кнопки :angry:
  11. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    418
    Симпатии:
    0
    Баллы:
    26
    Внутри процедуры пишу:
    Код:
    ТекСправочник = Элемент.Заголовок;
    Справочники.ТекСправочник.СоздатьЭлемент();
    
    Выдает ошибку на вторую строку, что поле объекта не обнаружено (ТекСправочник). А как еще зная только название справочника открыть его?
  12. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Так?
    Код:
    Метаданные.Справочники[<Имя справочника>]
    

Поделиться этой страницей