Программным образом формирую список выбора, у поля документа.
Задача исключить из списка некоторые значения. Это получается.
Но выбор не работает, в поле остается пусто.
Почему могут не выбираться значения?
&НаКлиенте
Процедура Закупки_СтатусНачалоВыбораПосле(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекФизЛицо = ПолучитьФизЛицоТекущегоПользователя();
ХХХ_ЗаявкиНаРасходованиеДССогласовательИП = ПолучитьХХХ_ЗаявкиНаРасходованиеДССогласовательИП();
//
Если Объект.ХХХ_Классификация = ПредопределенноеЗначение("Перечисление.ХХХ_КлассификацииЗаявокНаРасходДС.ИП") И НЕ ПолучитьДополнительноеСведение(ТекФизЛицо, ХХХ_ЗаявкиНаРасходованиеДССогласовательИП, Истина) Тогда
СтандартнаяОбработка = Ложь;
Элементы.Статус.СписокВыбора.Очистить();
СписокСтатусов = Новый СписокЗначений;
СписокСтатусов.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована"));
//СписокСтатусов.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована"));
СписокСтатусов.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате"));
СписокСтатусов.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаРасходованиеДенежныхСредств.Отклонена"));
//
ДанныеВыбора = СписокСтатусов;
КонецЕсли;
КонецПроцедуры
Так как не работает (0), мне пришлось это так обрабатывать, -
&НаКлиенте
Процедура Закупки_СтатусОбработкаВыбораПосле(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ТекФизЛицо = ПолучитьФизЛицоТекущегоПользователя();
ХХХ_ЗаявкиНаРасходованиеДССогласовательИП = ПолучитьХХХ_ЗаявкиНаРасходованиеДССогласовательИП();
//
Если Объект.ХХХ_Классификация = ПредопределенноеЗначение("Перечисление.ХХХ_КлассификацииЗаявокНаРасходДС.ИП") И НЕ ПолучитьДополнительноеСведение(ТекФизЛицо, ХХХ_ЗаявкиНаРасходованиеДССогласовательИП, Истина) Тогда
Если ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована") Тогда
ВыбранноеЗначение = Неопределено;
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецЕсли;
//
Если Объект.ХХХ_Классификация = ПредопределенноеЗначение("Перечисление.ХХХ_КлассификацииЗаявокНаРасходДС.ИП") И НЕ ПолучитьДополнительноеСведение(ТекФизЛицо, ХХХ_ЗаявкиНаРасходованиеДССогласовательИП, Истина) Тогда
Если ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате") Тогда
ВыбранноеЗначение = Неопределено;
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
(3) Следующая тема гласит: А как для разных типов поля сделать возможность выбора из сформированного списка?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший