Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Тип Поля Ввода          
Lada Подменю пользователя
сообщение 05.08.10, 15:52
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Здравствуйте!
Подскажите пожалуйста могу ли я программно указывать тип поля ввода?

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

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

Спасибо!

logist Подменю пользователя
сообщение 05.08.10, 17:13
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

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


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

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

World1С Подменю пользователя
сообщение 06.08.10, 6:40
Сообщение #3

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

Да можно, программно управлять типами, Вот ->

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


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

Lada Подменю пользователя
сообщение 06.08.10, 12:19
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Спасибо! Отчитываюсь!
задача у меня была такая:
есть 2 поля ввода, в первом выбираем справочник, а во втором, в зависимости от выбранного справочника, кнопкой выбора выбираем элемент.
Для эксперимента было 2 варианта решения: либо поле уже есть на форме внешней обработки, либо появляется в ходе выполнения обработки.

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


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


кажись всё.


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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 14:54
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!