Книга знаний

1С:Предприятие / v8 / Приемы программирования / Формы

v8: Функция для выбора значения с ограничениями

Функция. Позволяет открыть форму выбора с ограничениями, указанными в виде структуры.Автор статьи: Гений 1С | Редакторы: Волшебник
Последняя редакция №2 от 04.05.06 | История
URL: http://kb.mista.ru/article.php?id=207

Ключевые слова: функция,форма выбора,выбор


Функция. Позволяет открыть форму выбора с ограничениями, указанными в виде структуры.

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

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

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

КонецФункции

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика