Имя: Пароль:
1C
1С v8
Выпадающих список в условиях модальности
0 Sandemus
 
04.03.15
09:13
Здравствуйте друзья!
Как теперь в условиях модальности создать выпадающий список?
Раньше код был таким:
&НаКлиенте
Процедура Поле1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    список7 =  Новый СписокЗначений;
    список7 = заполнениесписка();
    РеквизитСВыпадающимСписком=ВыбратьИзСписка(список7,
    Элементы.ПолеСВыпадающимСписком);
КонецПроцедуры

функция заполнениесписка()
    Список8 = Новый СписокЗначений;
    выборка=справочники.Сотрудники.Выбрать();
    пока выборка.Следующий() цикл
        Список8.Добавить(Выборка.Фамилия);
    КонецЦикла;
    Список7 =Новый СписокЗначений;
    список7=список8.ВыгрузитьЗначения();
    возврат Список8;
конецфункции

Какого типа должен быть Реквизит. Какой обработчик использовать?
1 1Сергей
 
04.03.15
09:15
избавляйся от модальности
2 Sandemus
 
04.03.15
09:16
ДА, каким образом?
3 Sandemus
 
04.03.15
09:21
Смутно описано про кнопку КнопкаВыпадающегоСписка. И про обработчик ПриСозданииНаСервере для добавления элементов.
4 Sandemus
 
04.03.15
09:22
Я хотел сказать, что хочу чтоб это таки заработало на вэб клиентах. Тобишь избавиться от модальности.
5 ShoGUN
 
04.03.15
09:27
(4) А чего смутно-то? Реквизит.СписокВыбора.ЗагрузитьЗначения(заполнениесписка());
Только правильно это писать не в "НачалоВыбора", а в "НачалоВыбораИзСписка". Ну и кнопку в поле ввода соответствующую включить.
6 ShoGUN
 
04.03.15
09:29
А лучше вообще заполнениесписка() вызывать в ПриСозданииНаСервере(), чтобы не было серверного вызова при выборе(это лишние тормоза).
7 banco
 
04.03.15
09:30
(0) не модальный вариант ВыбратьИзСписка ПоказатьВыборИзСписка
8 Sandemus
 
04.03.15
10:41
А можно какой-нибудь пример? Бьюсь-бьюсь, всё по нулям =(
9 banco
 
04.03.15
10:54
(8) ставишь у элемента галочку РежимВыбораИзСписка, а в событии ПриСозданииНаСервере заполняешь списоквыбора у элемента.
10 Feunoir
 
04.03.15
10:59
(8) А разве твой код стандартный рефакторинг не сможет превратить в немодальный? там вроде никаких подводных камней нет.
11 Sandemus
 
04.03.15
11:24
Простите за глупый вопрос, а куда мне поместить результат заполнениесписка() для вызова его на клиенте?
12 Гёдза
 
04.03.15
11:26
ДанныеВыбора - это и есть список выбора
13 Sandemus
 
04.03.15
11:31
Гёдза, это понятно, от куда ему взять эти данные. Как мне ему их передать из процедуры заполнениесписка() вызванной  ПриСозданииНаСервере()?
14 ShoGUN
 
04.03.15
11:41
(13) Элементы.Поле1.СписокВыбора.ЗагрузитьЗначения(заполнениесписка());

Не? Список заполняется и заполнение сохраняется, пока форма открыта.
15 Sandemus
 
04.03.15
14:25
Всё получилось! Я был невнимателен. Спасибо вам всем большое. Если вдруг кому-нибудь понадобится выпадающиц список без модальности вот код:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
элементы.Реквизит1.СписокВыбора.ЗагрузитьЗначения(заполнениесписка());
КонецПроцедуры

&НаКлиенте
Процедура Реквизит1НачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
КонецПроцедуры

функция заполнениесписка()
    Список8 = Новый СписокЗначений;
    выборка=справочники.Сотрудники.Выбрать();
    пока выборка.Следующий() цикл
        
        Список8.Добавить(Выборка.Фамилия);
    КонецЦикла;
    Список7 =Новый СписокЗначений;
    список7=список8.ВыгрузитьЗначения();
    возврат Список7;
    
конецфункции

//обработка выбора
&НаКлиенте
Процедура Реквизит1ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    /////
КонецПроцедуры
16 banco
 
04.03.15
15:23
(15) еще можешь убрать лишние списки и вместо выборки использовать запрос

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

запрос = Новый Запрос("Выбрать Ссылка, Фамилия из Справочник.Сотрудники");
выборка = запрос.выполнить().Выбрать();
пока выборка.Следующий() цикл
  элементы.Реквизит1.СписокВыбора.Добавить(Выборка.Ссылка, Выборка.Фамилия);
КонецЦикла;

КонецПроцедуры
17 Адский плющ
 
04.03.15
15:41
Наркоманы! Читайте (12)
2 + 2 = 3.9999999999999999999999999999999...