Имя: Пароль:
1C
1С v8
Как создать элемент формы переключатель программно на обычных формах
0 1c_pro_fun
 
19.04.18
23:10
Доброй ночи! Создавал ли кто-нибудь программно переключатель на обычных формах?
При попытке установить ВыбираемоеЗначение для создаваемого программно элемента формы получаю такое сообщение об ошибке:
"Ошибка при установке значения атрибута контекста (ВыбираемоеЗначение)"

Естественно данные, с которыми связываю элемент имеют соответствующий тип (булево в моем случае).

В гугле не забанили - в инете по этому поводу один единственный вопрос на форуме Инфостарт и тот без ответа:
https://forum.infostart.ru/forum9/topic113043/
Одни только предположения что это глюк платформы и советы аля почистите кэш/обновите версию платформы.

Но тому посту 4 года а значит с версией платформы это не связано. Или это у них вообще никогда не работало?

Вот код:
ЭУ = ЭлементыФормы.Добавить(Тип("Переключатель"), "Переключатель1", Истина);
        
    ЭУ.Заголовок            = "Истина";
    ЭУ.Данные                = "БулевыйРеквизит";
    ЭУ.Лево                    = 10;
    ЭУ.Верх                    = 32;
    ЭУ.Ширина                = 50;
    ЭУ.Высота                = 19;
    ЭУ.ПервыйВГруппе        = Истина;
    ЭУ.ВыбираемоеЗначение    = Истина;
    
    ЭУ = ЭлементыФормы.Добавить(Тип("Переключатель"), "Переключатель2", Истина);
        
    ЭУ.Заголовок            = "Ложь";
    ЭУ.Данные                = "БулевыйРеквизит";
    ЭУ.Лево                    = 65;
    ЭУ.Верх                    = 32;
    ЭУ.Ширина                = 50;
    ЭУ.Высота                = 19;
    ЭУ.ВыбираемоеЗначение    = Ложь;

ЧТО МОЖЕТ БЫТЬ ДОБРЫЕ ЛЮДИ?
1 1c_pro_fun
 
19.04.18
23:15
И да безусловно в отладчике смотрел. До присвоения:
ЭУ.Данные                = "БулевыйРеквизит";
ЭУ.ТипЗначения равен ОписаниеТипов с пустым значением.
После выполнения этой строки кода - Описание типов со значением Булево.
2 Connect
 
19.04.18
23:21
Чем Видимость/Доступность не устраивает?
3 1c_pro_fun
 
19.04.18
23:27
(2) А при чем тут Видимость/Доступность? Вопрос заключается в том что при клике в любой из группы переключателей значение переменной, связанной с этим переключателем должно меняться. Оно должно стать равным тому, что указано как Выбираемое значение. Моя проблема заключается в том что я создаю элемент формы программно и при попытке присвоения ВыбираемомуЗначению какого-либо значения (в моем конкретном случае это значения Истина/Ложь) вылетает ошибка:
"Ошибка при установке значения атрибута контекста (ВыбираемоеЗначение)"

Поэтому совершенно не понимаю к чему Вы про Видимость/Доступность. Но спасибо за участие ;)
4 hhhh
 
20.04.18
00:20
(3) "значение переменной, связанной с этим переключателем должно меняться" - значение переменной не должно меняться.Это же описание поля, оно не меняет значение.
5 1c_pro_fun
 
20.04.18
00:28
(4) Или у меня после полуночи мозг не соображает или лыжи не едут. Как значение не должно меняться. РАДИОБАТН - в него для чего мышкой тыкают? Чтобы выбрать одно из значений возможных. Все переключатели связаны с одним из реквизитов формы (в моем посте (3) ошибочно написал переменной имел в виду реквизит формы). При клике ДОЛЖНО изменяться значение реквизита в соответствии с тем что у конкретного Переключателя указано в ВыбираемоеЗначение. Вроде все логично :) Трабл в том что присвоить не могу это самое выбираемое значение если речь идет о реквизите с типом Булево. Выяснилось что если сделать реквизит с типом число то работает. Что не так с Булево?
6 1c_pro_fun
 
20.04.18
00:42
Мне кажется что у ОдноЭса это нифига и не работало никогда по человечески. Бьюсь об заклад. В качестве доказательства могу привести вот что:
УТ 10.3 (под рукой релиз 35.1)

Есть отчет "Отчет по кредитной линии" с реквизитом "ВидКредитныхЛиний" типа число длина 1... понимаете да... логика еще с клюшек видать осталась. И далее если поставить точку останова на отчет "Универсальный отчет" в модуле объекта на строке 6272 то не трудно заметить что виды кредитных линий принимают значение 0 и 1. И обусловлено это похоже тем что они сами не смогли сделать это через Булево. Кстати во всей УТ 10.3 только в двух отчетах используется программное добавление элемента формы типа Переключатель. В описанном мною случае не вижу никакого смысла в использовании числового реквизита (при двух-то значениях). Во втором "Задолженность по контрагентам" действительно была необходимость т.к. переключатель принимал 3 значения и Булево не хватило бы.

P.S. если я все же не прав и программно создать элемент формы с типом Переключатель привязанный к реквизиту форму типа Булево мне не дает не платформа, а мои кривые руки ткните носом как же это можно сделать :)
7 marvak
 
20.04.18
00:54
Переключатель по-моему всегда какое-то целочисленное значение у них принимает, а не булево.
Чисто так, по воспоминаниям.
Первый, второй, третий
попробуй
выбираемое значение = 1
9 1c_pro_fun
 
20.04.18
01:27
(7) В моем посте (5) в конце пишу что с реквизитом типа число работает.
10 1c_pro_fun
 
20.04.18
01:29
Не знаю троит Мисту или что (куда-то ведь делся мой пост под номером 8) но там я писал что кроме числовых типов переключатель поддерживает Строку, Дату, Булево и все ссылочные типы. Но это только если ручками в конфигураторе видимо. Программно никак.
11 marvak
 
20.04.18
02:24
(9)
ну если с числом работает, и задача решена, то в чем трабл то?
12 hhhh
 
20.04.18
05:22
(10) попробуй повнимательнее отладчиком посмотреть при открытии формы какие там поля у переключателя, при обычном создании и при программном. Что=то у тебя слишком мало полей, там гораздо больше вроде.
13 catena
 
20.04.18
06:58
Прикольно, но оказалось, как в отборах, важна последовательность свойств. По крайней мере, у меня заработало:

ЭУ.ПервыйВГруппе        = Истина;
ЭУ.Данные                = "БулевыйРеквизит";
ЭУ.ВыбираемоеЗначение    = Истина;
14 Сияющий в темноте
 
20.04.18
09:09
Ну а если не ставить первый в группе,а на форме есть еще радиобаттоны,то ведь фигня получается