Программное создание элемента "Переключатель" формы справочника.

1. svilsa 13 18.11.14 16:52 Сейчас в теме
Есть УТ 10. В справочник ДоговорыКонтрагентов необходимо добавить реквизит ВидУсловийОплаты с типом "Перечисление". Для отображения этого реквизита необходимо программно разместить на форме переключатель.

Переключатель.Имя = "Переключатель1";
Переключатель.Заголовок = "Переключатель1";
Переключатель.Верх = 92;
Переключатель.Высота = 15;
Переключатель.Ширина = 276;
Переключатель.Лево = 16;
Переключатель.Доступность = Истина;
Переключатель.АвтоКонтекстноеМеню = Истина;
Переключатель.АктивизироватьПоУмолчанию = Ложь;
Переключатель.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
Переключатель.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево;
Переключатель.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
Переключатель.Видимость = Истина;
Переключатель.ВыбираемоеЗначение = 0;
	
Переключатель.ИзменяетДанные = Ложь;
Переключатель.ПервыйВГруппе = Истина;
Переключатель.ПоложениеЗаголовка = ПоложениеЗаголовка.ЗаголовокСправа;
Переключатель.ПорядокОтображения = 4;
Переключатель.ПрозрачныйФон = Ложь;
Переключатель.ПропускатьПриВводе = Ложь;
Показать



При попытке присвоить значение
Переключатель.ВыбираемоеЗначение = 0;

возникает ошибка. Я посмотрела в отладчике атрибут "ВыбираемоеЗначение" после программного создания переключателя имеет тип "Неопределено"

Как все-таки правильно программно определить значение для переключателя?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1536 18.11.14 17:13 Сейчас в теме
(1) svilsa, а вообще переключатель у вас это что?
Если стандартный элемент формы, то выходит результат:
Значение, связанное с элементом формы

Перечисление у вас должно быть по логике.
4. svilsa 13 19.11.14 08:35 Сейчас в теме
(2) Xershi, Перечисление - это реквизит элемента справочника ДоговорыКонтрагентов. Принимает такие значения, как Предоплата, Отсрочка платежа до 14 дней, Отсрочка от 14 до 21 дня. Хочется пользователям видеть именно в виде переключателя. Все изменения на формы должны вноситься программно.

(3) Fox44, не совсем понятно, дело в том, что у меня обычные формы.

Скорее всего, сделаю обычным полем выбора, не будет у пользователей переключателя.
5. 3762515 24.11.14 15:41 Сейчас в теме
(4) svilsa, а чем поле выбора в данном случае будет отличатся от переключателя?
6. svilsa 13 25.11.14 08:34 Сейчас в теме
(5) 3762515, так захотел пользователь, говорит, так нагляднее. Но у меня не получилось программно добавить переключатель с типом "Перечисление". Число - получается, другой тип - нет. Сделала полем выбора.

P.S. При программном создании переключателя на обычной форме оказалась важной последовательность операторов. Вот такой код работает для реквизита "ВидУсловийОплаты" типа "Число";
Переключатель.Данные = "ВидУсловийОплаты";
Переключатель.ПервыйВГруппе = Истина;
Переключатель.ВыбираемоеЗначение = 0;
3. Fox44 18.11.14 18:22 Сейчас в теме
Вот пример:

Родитель = "";       // родитель для сравнения - определения факта смены родителя
    НомерГруппы = 0;
    Для Каждого Строка Из ТаблицаСвойств Цикл
        Если Родитель <> Строка.Родитель Тогда // сменился родитель
            ДобавляемыеРеквизиты = новый Массив;  // создаём массив для добавляемого реквизита
       
            НомерСтроки = 0;
            Родитель = Строка.Родитель;
            НомерГруппы = НомерГруппы + 1;
            НазваниеГруппы = "Переключатель"+НомерГруппы;
            ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(НазваниеГруппы, // имя создаваемого реквизита
            Новый ОписаниеТипов("Число")  // тип реквизита
            ,,Строка.Родитель));      // заголовок
            ИзменитьРеквизиты(ДобавляемыеРеквизиты); // добавляем реквизит
            // добавляем элемент формы
            НазваниеГруппы = "Переключатель"+НомерГруппы;
            НовыйЭлемент = Элементы.Добавить(НазваниеГруппы, Тип("ПолеФормы"), Элементы.ГруппаВариантов);
            // связываем реквизит и элемент формы
            НовыйЭлемент.ПутьКДанным = НазваниеГруппы; // "Пер"+НомерГруппы;
            // установим некоторые свойства
            НовыйЭлемент.Вид = ВидПоляФормы.ПолеПереключателя;
            НовыйЭлемент.КоличествоКолонок=1;
            // установим имя события и процедуру, его обрабатывающую
            НовыйЭлемент.УстановитьДействие("ПриИзменении", "НовыйПриИзменении");
       
            НомерСтроки = НомерСтроки+1;      // добавляем первую строчку         // ЭтаФорма
            НазваниеСтроки =НомерСтроки;
            НовыйЭлемент.СписокВыбора.Добавить(НазваниеСтроки, Строка.Значение); // Объект
        Иначе          // добавляем остальные строки
            НомерСтроки = НомерСтроки+1;
            НазваниеСтроки =НомерСтроки;
            НовыйЭлемент.СписокВыбора.Добавить(НазваниеСтроки, Строка.Значение);
        КонецЕсли;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот