Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Тип Поля Ввода
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Lada
Здравствуйте!
Подскажите пожалуйста могу ли я программно указывать тип поля ввода?

к примеру у меня уже есть ЭлементыФормы.ПолеВвода1
или я создаю его к примеру так:
Эл=ЭлементыФормы.Добавить(Тип("ПолеВвода"), "НовоеПолеВвода", истина);
Вроде по умолчанию НовоеПолеВвода будет иметь тип Строка, а мне необходимо допустим "СправочникСсылка.Сотрудники"

Как это можно сделать?

Спасибо!
logist
Цитата(Lada @ 05.08.10, 17:52) необходимо зарегистрироваться для просмотра ссылки
Вроде по умолчанию НовоеПолеВвода будет иметь тип Строка, а мне необходимо допустим "СправочникСсылка.Сотрудники"


Не претендую на работоспособность, но можете попробовать, что-то такое, это я исходя из того что в документе есть такой реквизит.

    Эл=ЭлементыФормы.Добавить(Тип("ПолеВвода"),"ПолеВвода99",Истина);
    Эл.Данные = "ДокументОбъект.Контрагент";
World1С
Да можно, программно управлять типами, Вот ->

ОписаниеТипов (TypeDescription)
ПривестиЗначение (AdjustValue)
Синтаксис:
ПривестиЗначение(<Значение>)
Параметры:
<Значение> (необязательный)
Тип: Произвольный. Значение, которое будет приводиться.
Возвращаемое значение:
Тип: Произвольный. Если значение передано, то выполняется проверка на соответствие значения описанию типа. Если значение соответствует, то метод возвращает переданное значение. Если значение не соответствует, то оно приводится к типу, доступному в описании типа.
Если значение не передано, то выдается значение по умолчанию для данного описания типа.
Описание:
Формирует значение на основании описания типа и переданного значения.
Пример:
// В форме расположено табличное поле Товары, в котором для ячейки 
// колонки Номенклатура определено событие НачалоВыбора, процедура
// обработчик которого приведена в примере
Процедура ТоварыНоменклатураНачалоВыбора(Элемент,СтандартнаяОбработка)
    ТипСтр = "СправочникСсылка.Номенклатура";
    Элемент.ОграничениеТипа = Новый ОписаниеТипов(ТипСтр);
    Значение = Элемент.Значение
    Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
    Элемент.ВыбиратьТип = Ложь;
КонецПроцедуры
Lada
Спасибо! Отчитываюсь!
задача у меня была такая:
есть 2 поля ввода, в первом выбираем справочник, а во втором, в зависимости от выбранного справочника, кнопкой выбора выбираем элемент.
Для эксперимента было 2 варианта решения: либо поле уже есть на форме внешней обработки, либо появляется в ходе выполнения обработки.

Если ПолеВвода уже есть на форме, то помогло следующее;
полю ввода понадобилось поставить тип СправочникСсылка и прописать код. Если оставить тип Строка, то ничего не получалось.
Процедура ПолеВводаНаФормеНачалоВыбора(Элемент, СтандартнаяОбработка)
    ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка."+НашСправочник);
    ЭлементыФормы.ПолеВводаНаФормеОграничениеТипа = ОписаниеТипа;
    ЭлементыФормы.ПолеВводаНаФорме.Значение = ОписаниеТипа.ПривестиЗначение();
    ЭлементыФормы.ПолеВводаНаФорме.ВыбиратьТип = Ложь;
КонецПроцедуры


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


кажись всё.


для конкретно моей задачи можно было просто поставить поле ввода на форме, дать ему тип СправочникСсылка, но мне захотелось в разных полях выбирать справочник и элемент)
Либо просто ПолучитьФормуВыбора нужного справочника. Что будет эффективней я пока не знаю.
Всем Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.