В данной статье речь пойдет об интерфейсных возможностях платформы, связанных с применением объектов типа СписокЗначений.
Приведу несколько кейсов применения (без лишних слов):
1. Функция Вопрос (Как в диалоге использовать свои кнопки?)
Актуален для платформ 1С, начиная с версии 8.2СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить(КодВозвратаДиалога.Да, "Согласовать");
СписокКнопок.Добавить(КодВозвратаДиалога.Нет, "Отклонить");
СписокКнопок.Добавить(КодВозвратаДиалога.Отмена, "Отмена");
Ответ = Вопрос(
"Что необходимо сделать с заявкой?", // текст вопроса
СписокКнопок, // кнопки
0,
КодВозвратаДиалога.Да // кнопка "По умолчанию"
);
Если Ответ = КодВозвратаДиалога.Да Тогда
// заявка согласована
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
// заявка отклонена
КонецЕсли;
2. Функция ВыбратьИзМеню (Как сделать динамическое контекстное меню? Можно ли вызвать контекстное меню по нажатию левой кнопки мыши или повешать на обработку расшифровки?)&НаКлиенте
Процедура ПлатежныйКалендарьОбработкаДополнительнойРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтруктураПараметров = ПолучитьПараметрыРасшифровки(СтандартнаяОбработка, Расшифровка);
КонтекстноеМеню = СформироватьКонтекстноеМеню(СтруктураПараметров);
ОбработкаДействийПользователя(СтруктураПараметров, КонтекстноеМеню);
КонецПроцедуры
&НаКлиенте
Функция СформироватьКонтекстноеМеню(СписокПараметров)
СписокЗначений = Новый СписокЗначений;
Если СписокПараметров.Свойство("Значение")Тогда
СписокЗначений.Добавить(
"ЧастичнаяОплата",
"Частичная оплата",
,
БиблиотекаКартинок.ИТПлатежныйКалендарь_ЧастичнаяОплата
);
// etc...
Иначе
СписокЗначений.Добавить(
"ЗапланироватьОплату",
"Запланировать оплату",
,
БиблиотекаКартинок.ИТПлатежныйКалендарь_ЧастичнаяОплата
);
КонецЕсли;
Возврат СписокЗначений;
КонецФункции
&НаКлиенте
Процедура ОбработкаДействийПользователя(СтруктураПараметров, КонтекстноеМеню);
ПунктМеню = ВыбратьИзМеню(КонтекстноеМеню, ПлатежныйКалендарь.ТекущаяОбласть);
Если ПунктМеню = Неопределено Тогда
Возврат
КонецЕсли;
Действие = ПунктМеню.Значение;
Если Действие = "ЧастичнаяОплата" Тогда
ДиалогЗапланироватьОплату(СтруктураПараметров, Истина);
КонецЕсли;
КонецПроцедуры
3. Функция Выбрать из списка (Как сделать динамический выпадающий список?)Код аналогичен п.2, за исключением строки:
ПунктМеню = ВыбратьИзСписка(КонтекстноеМеню, ПлатежныйКалендарь.ТекущаяОбласть);
4. Метод ОтметитьЭлементы() (Как сделать выбор нескольких элементов из списка?)Если СписокЗначений.ОтметитьЭлементы("Отметить элементы") Тогда
Для каждого Элемент Из СписокЗначений Цикл
Если Элемент.Пометка Тогда
СделатьДоброеДело();
КонецЕсли;
КонецЦикла;
Иначе
// пользователь ничего не отметил
КонецЕсли;
5. Метод ВыбратьЭлемент() (Как сделать интерактивный выбор одного элемента из списка?)ВыбранныйЭлемент = СписокЗначений.ВыбратьЭлемент("Что необходимо сделать?");
Если ВыбранныйЭлемент <> Неопределено Тогда
СделатьДоброеДело();
Иначе
// пользователь ничего не выбрал
КонецЕсли;
Коллеги, давайте не изобретать велосипедов
[необходимо зарегистрироваться для просмотра ссылки]
Сообщение отредактировал Vofka - 06.06.13, 20:43