v8: Функция для выбора значения с ограничениями Ключевые слова: функция,форма выбора,выбор
Функция. Позволяет открыть форму выбора с ограничениями, указанными в виде структуры.
Функция ПолучитьМенеджерПоСсылке(Ссылка) Экспорт //С партнерского форума
ПолноеИмя = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).ПолноеИмя();
// или так: ПолноеИмя = Ссылка.Метаданные().ПолноеИмя()
ПолноеИмя = СтрЗаменить(ПолноеИмя, "Справочник.", "Справочники.");
ПолноеИмя = СтрЗаменить(ПолноеИмя, "Документ.", "Документы.");
// и так далее ...
Попытка
МенеджерОбъекта = Вычислить(ПолноеИмя);
Исключение
Возврат Неопределено;
КонецПопытки;
Возврат МенеджерОбъекта;
КонецФункции
//Выбрать значение типа Значение по структуре СтруктураОграничений
//Значение - первоначальное значение или пустая ссылка
Функция ВыбратьЗначениеСОграничениями(Элемент, Значение=Неопределено,
СтруктураОграничений, ОтключатьОграничения=ложь) Экспорт
Если Значение=Неопределено Тогда
Значение=Элемент.Значение;
КонецЕсли;
Если Значение=Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Менеджер=ПолучитьМенеджерПоСсылке(Значение);
Если Менеджер=Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ФормаВыбора=Менеджер.ПолучитьФормуВыбора(,Элемент,);
Для Каждого ЭлОтбор Из СтруктураОграничений Цикл
Если ЭлОтбор.Ключ="Владелец" Тогда
ФормаВыбора.ПараметрОтборПоВладельцу = ЭлОтбор.Значение;
Иначе
Попытка
ФормаВыбора.Отбор[ЭлОтбор.Ключ].Значение=ЭлОтбор.Значение;
Исключение
Продолжить; //Если такого отбора нет...
КонецПопытки;
КонецЕсли;
ФормаВыбора.Отбор[ЭлОтбор.Ключ].Использование=истина;
Если ЭтоСправочник(Значение) Тогда
ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора[ЭлОтбор.Ключ].Доступность = Ложь;
ИначеЕсли ЭтоДокумент(Значение) Тогда
ФормаВыбора.ЭлементыФормы.ДокументСписок.НастройкаОтбора[ЭлОтбор.Ключ].Доступность = Ложь;
КонецЕсли;
КонецЦикла;
Если Значение<>Неопределено Тогда
ФормаВыбора.НачальноеЗначениеВыбора=Значение;
КонецЕсли;
ФормаВыбора.Открыть();
Возврат ФормаВыбора;
КонецФункции
|