8.х Выподающее меню : как сделать?

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

  1. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Есть табличноеПоле на форме. Одна из колонок "Кол" должна заполняться значениями из списка значений СЗЗ.
    Пишу:


    Процедура ТабличноеПолеПередНачаломИзменения(Элемент,Отказ)

    тстр.элементыформы.ТабличноеПоле.текущаястрока;
    т="";
    т=сзз.выбратьЭлемент("----",т);
    Тстр.кол=т;
    Отказ=1;

    Конецпроцедуры


    в v7 при выборе элементв списка значений был параметр, выводить отдельное окно выбора или открывать выподающее меню, а как аналогично сделать выпадающее меню в v8?
  2. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    У поля ввода значения, которое вы хотите выбирать должна быть установлена галочка КнопкаСпискаВыбора. В предопределенной процедуре данного поля ввода мы пишем:

    Код:
    Процедура МоеПолеВводаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    Список = Новый СписокЗначений;
    Список.Добавить(МоеЗначениеВыбора1);
    Список.Добавить(МоеЗначениеВыбора2);
    Список.Добавить(МоеЗначениеВыбора3);
    
    ЭлементыФормы.МоеПолеВвода.СписокВыбора = Список;
    
    КонецПроцедуры
    
    И вуаля - перед тем, как пользователь начнет выбирать значение из списка мы этот список создадим, и предоставим ему выбор. Разумеется, СписокВыбора можно заполнить не только в этой процедуре, но в любой другой, какую сочтет необходимой разработчик...
  3. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Забыл уточнить - для ТабличногоПоля все примерно точно также.
  4. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    У поля ввода значения, которое вы хотите выбирать должна быть установлена галочка КнопкаСпискаВыбора.

    Подскажите пожалуйста, а как это сделать, если структура Соответствующей таблицы значений формируется динамически?
  5. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Вот, сбацал для примера. Комментариев - минимум, но думаю будет понято, если возникнут вопросы - пиши.
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    ДействиеНачалоВыбораИзСписка = Новый Действие("НачалоВыбораИзСписка");
    
    ТЗ = Новый таблицаЗначений;
    ТЗ.Колонки.Добавить("Колонка1",Новый ОписаниеТипов ("СправочникСсылка.Контрагенты"));
    ТЗ.Колонки.Добавить("Колонка2",Новый ОписаниеТипов ("СправочникСсылка.Контрагенты"));
    ТЗ.Колонки.Добавить("Колонка3",Новый ОписаниеТипов ("СправочникСсылка.Контрагенты"));
    
    ЭлементыФормы.ТабличноеПоле1.Значение = ТЗ;
    
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
    
    Для каждого Колонка из ЭлементыФормы.ТабличноеПоле1.Колонки Цикл
    // чтобы появилась кнопка выбора из списка
    Колонка.ЭлементУправления.КнопкаСпискаВыбора = Истина; 
    // чтобы работала функция по заполнению нужного списка выбора
    Колонка.ЭлементУправления.УстановитьДействие("НачалоВыбораИзСписка",ДействиеНачалоВыбораИзСписка); 
    КонецЦикла;
    
    КонецПроцедуры
    
    
    Процедура НачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    Сообщить("Ура, пользователь хочет выбрать значение из списка!");
    КонецПроцедуры
    
    
    
    Где ЭлементыФормы.ТабличноеПоле1 - пустое табличное поле на форме.

    Разумеется - можно добавить условие, и делать КнопкуВыбораИзСписка только у определенных колонок.
  6. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Спасибо,комментарии излишни.
    Но дело в том, что поле "кол", которое заполняется с помощью меню - текстовое и хотелось бы ограничить пользователя в его позывах ввести абракадабру вместо логически связанной с другими колонками информации.
  7. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Сейчас нет 1Ски под рукой, чтобы точно глянуть. Кажется свойство поля ввода называлось РедактированиеТекста запрещало редактировать пользователю текст.
  8. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Спасибо. Теперь все стало вполне приемлемо.

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