Версия для печати темы (https://pro1c.org.ua/index.php?s=b44bfc956789b9fff0cd3b6e25cb203e&showtopic=22620)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Установить тип поля ввода на форме

Автор: kosalex 25.03.15, 16:56

Добрый вечер, есть поле "Поиск" с типом строка, при выборе значения из списка, тип этого поля "Поиск" должен менять на Число, и наоборот.

Делаю так, и как еще только не делал не получается:

Если ЭлементыФормы.СписокВидовПоиска.Значение <> "РегНомер" Тогда
            КС = Новый КвалификаторыСтроки(0,ДопустимаяДлина.Переменная);
            
            //МассивТипов = Новый Массив;
            //МассивТипов.Добавить(Тип("Строка"));
            //МассивТипов.Добавить(Тип("Число"));
            
            ТипСтрока = Новый ОписаниеТипов(Тип("Строка"),,КС,,);
            
            ЭлементыФормы.ПолеПоиска.ТипЗначения = ТипСтрока;
            
            //МассивТипов.Очистить();
            
        Иначе
            КЧ = Новый КвалификаторыЧисла(9,0,ДопустимыйЗнак.Неотрицательный);
            
            //МассивТипов = Новый Массив;
            //МассивТипов.Добавить(Тип("Строка"));
            //МассивТипов.Добавить(Тип("Число"));
            
            ТипЧисло = Новый ОписаниеТипов(Тип("Число"),КЧ,,,);
            
            ЭлементыФормы.ПолеПоиска.ТипЗначения = ТипЧисло;
            
            //МассивТипов.Очистить();
        КонецЕсли;


Пробовал и с массивом, как только не пробовал, не могу допетрить как изменить тип...

Автор: Petre 25.03.15, 17:03

А для чего вообще тип "строка" там нужен?

Автор: kosalex 25.03.15, 18:21

Вот так вот работает:

Если ЭлементыФормы.СписокВидовПоиска.Значение <> "РегНомер" Тогда
            КС = Новый КвалификаторыСтроки(0,ДопустимаяДлина.Переменная);
            
            МассивТипов = Новый Массив;
            МассивТипов.Добавить(Тип("Строка"));
                        
            ТипСтрока = Новый ОписаниеТипов(МассивТипов,,КС,,);
            
            ЭлементыФормы.ПолеПоиска.ТипЗначения = ТипСтрока;
            
            МассивТипов.Очистить();
            
        Иначе
            КЧ = Новый КвалификаторыЧисла(9,0,ДопустимыйЗнак.Неотрицательный);
            
            МассивТипов = Новый Массив;
            МассивТипов.Добавить(Тип("Число"));
            
            ТипЧисло = Новый ОписаниеТипов(МассивТипов,КЧ,,,);
            
            ЭлементыФормы.ПолеПоиска.ТипЗначения = ТипЧисло;
            
            МассивТипов.Очистить();
        КонецЕсли;



Цитата(Petre @ 25.03.15, 17:03) *
А для чего вообще тип "строка" там нужен?



чтобы можно было сравнивать строки со строковыми реквизитами а числовые с числовыми smile.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua