Прочитал множество форумов, и нигде не увидел доходчивого описания работы с «Переключателем». Вот решил написать сам.
На МОЙ взгляд наиболее часто встречающаяся ошибка - это неправильное представлении об «Переключателе». Когда вы размещаете несколько "Переключателей", например 3, на форме, то многие считают что в логике программы это 3 разных объекта, которые влияют друг на друга. Но, по сути, программа воспринимает все 3 «Переключателя» как один объект. И выбор одного из них меняет состояние этого объекта. Рассмотрим пример.
1. Создадим на форме три переключателя. Для удобства не будем менять названий.
2. Выделите «Переключатель1». В его свойстве в разделе «ОСНОВНЫЕ» поставьте галочку первый в группе. «ТИП ЗНАЧЕНИЯ» выберем число. (Далее рассмотрим почему именно число). Длину можно поставить равной единице, но особой функциональности это не несёт.
3. Выделяем «Переключатель2» в графе «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» поставим 1.
4. Выделяем «Переключатель3» в графе «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» поставим 2.
По сути 3 и 4 – м действиями вы установили флаг, который будет меняться при выборе соответствующего «Переключателя». В «Переключатель1» по дефолту «ВЫБИРАЕМОЕ ЗНАЧЕНИЕ» стоит ноль.
5. Проверьте стоят ли переключатели в «ПОРЯДКЕ ОБХОДА» по порядку. (например: 13,14,15)(Рис.1). необходим неразрывный порядок обхода по переключателем. включен автопорядок обхода (позиции пронумерованы 13, 15, 20)(Рис.2) в этом случае переключатели друг под другом работать не будут.Следует снять с формы использование автопорядка и если необходимо вручную указать порядок следования.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Как установить порядок обхода для реквизитов. Находясь в форме, в меню "Диалог" надо снять галку "Автоматический порядок обхода". После этого можно либо воспользоваться "Диалог"->"Настройка порядка обхода", либо "Диалог"->"Порядок обхода". Наиболее удобным, мне кажется второй способ. При этом способе у каждого реквизита появляется картинка с номером реквизита. Вам остается только щелкать мышкой по цифрам, выбирая реквизиты в том порядке, который нужен Вам.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
6. Выделяем «Переключатель1» и пишем у него нужную нам процедуру.
Например:
ЭФ=ЭлементыФормы;
Если Переключатель1=0 Тогда
ЭФ.СостояниеОплаты.Значение = "Неоплачено";
ИначеЕсли Переключатель1=1 Тогда
ЭФ.СостояниеОплаты.Значение = "Частично оплачено";
ИначеЕсли Переключатель1=2 Тогда
ЭФ.СостояниеОплаты.Значение = "Оплачено";
КонецЕсли;
7. Жмём F7. Жмём F5. Смотрим всё работает мы молодцы. И большой БОСС даёт нам премию.
ПОЯСНЕНИЕ К КОДУ
Почему везде стоит "Переключатель1"? Так как уже было сказано, программа воспринимает все три элемента как один, и так как "Переключатель1" является первым в группе, то Его программа и воспринимает как весь элемент, если вы поставите "Переключатель2" основным в группе то проверку правельности надо будет проводить по "Переключатель2".
Ну а откуда "0","1","2"? Те значения, которые принимает объект при переключениях "Переключателей" их мы задавали в пункте 3 и 4.
ПОСЛЕСЛОВИЕ:
Данный код приведен как пример работы с переключателями. На мой взгляд так более наглядно и понятно. Но стоит упомянуть, что в "ТипЗначения" можно выбирать сразу то, что нужно - предопределенное значение справочника, перечисления, например, или строковое значение. То есть в указанном примере можно было сразу назначить переключателям в качестве значений не 0,1,2, а сразу "Неоплачено", "Частично оплачено", "Оплачено". И тогда код сведется в одну строчку:
ЭлементыФормы.СостояниеОплаты.Значение = Переключатель1;
Результат работы будет таким же.
//////////////////////////////////////////////////////////////////////////////////////////
Переключатели в управляемых формах (УФ) сделали более интуитивными.
При создании Переключателя нужно помнить о двоице Реквизит, Элемент формы.
В первую очередь вам необходима, создать Реквизит формы. Тип у реквизита устанавливаете, такой, какие значения будет принимать ваш переключатель. Я выбрал тип Строка. Тут у вас есть два вариант: если вы создали реквизит Объекта, то принимаемое вашим переключателем значение будет сохраняться в БД, если вы просто добавляете в список реквизитов формы, то результат принимаемое вашим переключателем сохраняться не будет.
Далее перетаскиваем нужный нам Реквизит в ЭлементыФормы. При создании элемента формы, элемент в свойствах "Вид" - будет иметь тип "Поле ввода". Выбираем из списка "Поле переключатель". В результате у вас получится форма примерно следующего вида:
Заполняем заголовок Элемента формы, цвет, шрифт, расположение и прочие красивости на ваш вкус.
В свойствах элемента формы есть пункт. "Список Выбора" - в нем вы заводите Значения, которые будет принимать ваш переключатель при выборе того или иного пункта. В своём примере я добавил строки с значениями "Записать", "ОтменаПроведения", "Проведение".
После этого ваш переключатель готов к работе.
В зависимости от того является ли ваш переключатель реквизитом Объекта или Реквизитом Формы для получение хранящегося в нем значения вы используете следующий код:
ПереключательЭлементФормыЭлементФормы // обращаетесь напрямик, если это реквизит формы
Объект.ПереключательВнутриБД // обращаетесь через элемент Объект. к вашему реквизиту.