Имя: Пароль:
1C
1С v8
УФ. Создать флажок программно
,
0 live in sky dreams
 
07.06.17
17:24
Как создать флажок программно? Элемент формы..
Вылет в исключение при попытке:

флВведенНаОсновании = Форма.Элементы.Добавить("флВведенНаОсновании", Тип("Флажок"), Контейнер);

Ошибка: Тип не определен (Флажок)

Гугол насчет флажков молчит.. поиск по форуму тоже
1 HEKPOH
 
07.06.17
17:26
тип("ПолеФлажкаФормы")
2 live in sky dreams
 
07.06.17
17:34
Теперь ругается на "Недопустимое значение параметров"
3 live in sky dreams
 
07.06.17
17:35
У "Контейнер" тип "ГруппаФормы". Остальные параметры итак понятны... Что я делаю не так?
4 live in sky dreams
 
07.06.17
17:35
Все это происходит &НаСервере
5 live in sky dreams
 
07.06.17
17:40
Убрал Контейнер из "Добавить(..." ошибка та же...
Значит дело в Типе?
6 IoannVic
 
07.06.17
17:46
Нужно добавлять поле формы. А у него указывать вид Флажок. И не забудь привязать реквизит булевный
7 Неверный Параметр И
 
07.06.17
17:46
Потому что Тип("ПолеФормы")
У полученного элемента поставишь .Вид = ВидПоляФормы.ПолеФлажка

Такое впечателение, что за чтение СП вам отрубают руки, выкалывают глаза и выбрасывают в сточную канаву
8 Ц_У
 
07.06.17
17:50
(7) нажал Ctrl-F1 - и ты больше не программист, только форум, только хардкор! :)
9 aleks_default
 
07.06.17
17:50
(7)Где об этом в СП? Дай выдержку.
10 Ц_У
 
07.06.17
17:51
11 aleks_default
 
07.06.17
17:54
(10)Это не СП. И у меня, например, туда доступа нет. А в СП написано просто параметр "ТипЭлемента" тип: Тип. Понимай как знаешь, или методом сэнсэя Тыка.
12 Ц_У
 
07.06.17
17:56
(11) за "нет доступа" предлагаю казнить, демо доступ на 7 дней не предлагать?
13 Неверный Параметр И
 
07.06.17
17:58
(11) > И у меня, например, туда доступа нет
Беееедненький!

Возвращаемое значение:
Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы.

Ты серьезно думаешь, что можно передать на вход Тип("СправочникСсылка.Контрагенты") и получить в ответ ДекорацияФормы?
14 aleks_default
 
07.06.17
18:00
(13)Вот ненадо притворятся тупым. Почему например (1) нельзя?
15 Неверный Параметр И
 
07.06.17
18:01
(14) Мда... Вдобавок к канаве, похоже еще и мозг через ноздрю...
16 Ц_У
 
07.06.17
18:12
(3) что же у нас по этому поводу говорит СП?
Добавить(<Тип>, <Имя>, <Видимость>, <ПоместитьНа>)
О чем-нибудь говорит, намеки?
17 live in sky dreams
 
07.06.17
18:12
Спасибо за живое обсуждение, на ИТС пробовал искать через механизм поиска "ПолеФлажкаФормы" - результ был 0. В СП не однозначно написано. Методом научного тыка-тыгдыка и отладчика допер до (6), (7)
18 live in sky dreams
 
07.06.17
18:15
(16)точно, тут же ясно сказано, что Тип должен быть "ПолеФормы" (сарказьма)

Я понимаю, возможно, когда уже знаешь это, все кажется очевидным, но когда впервые программно рисуешь на форме - все неочевидно и справка мало помогает в изучении нового. Это фича методических материалов 1С еще с семерки..
19 Ц_У
 
07.06.17
18:17
(18) тогда давай так, третий параметр - что?
20 live in sky dreams
 
07.06.17
18:18
(19)третий параметр в (16)- видимость, булево.
Что из этого следовать должно?
21 live in sky dreams
 
07.06.17
18:20
А при добавлени элемента формы, третий параметр - контейнер, где этот элемент должен быть размещен как подчиненный.
К чему вы клоните?
22 Ц_У
 
07.06.17
18:21
(21) кто сказал?
23 Ц_У
 
07.06.17
18:23
(21) У нас видимо разные СП
ЭлементыФормы (Controls)
Добавить (Add)
Синтаксис:
Добавить(<Тип>, <Имя>, <Видимость>, <ПоместитьНа>)
24 live in sky dreams
 
07.06.17
18:23
(22)Вот тут написано
http://prntscr.com/fh0ufc
25 live in sky dreams
 
07.06.17
18:25
+(24) видимо, разные http://prntscr.com/fh0v2j
26 Ц_У
 
07.06.17
18:27
(25) тогда пойдем другим путем, без 3 параметра работает?
27 Ц_У
 
07.06.17
18:53
Вот не ломало же меня все это проверить?
&НаСервере
Процедура НаСервере()
    МассивТиповБулево = Новый Массив;
    МассивТиповБулево.Добавить(Тип("Булево"));
    //добавим реквизит с типом "Булево"
    РеквизитФлаг = Новый РеквизитФормы("ФлагФормы",Новый ОписаниеТипов(МассивТиповБулево),,"Флажочек");
    //сунем его в массив
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(РеквизитФлаг);
    //сунем массив в форму
    ИзменитьРеквизиты(НовыеРеквизиты);
    //создадим "визуализацию" того копрокода, что сверху
    НовыйЭлемент = Элементы.Добавить("ФлагФормы",Тип("ПолеФормы"));
    НовыйЭлемент.ПутьКДанным = "ФлагФормы";
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
КонецПроцедуры
28 live in sky dreams
 
08.06.17
08:49
(27) Это хорошо, что не ломало. Почет и уважение таким форумчанам. Без иронии.
Только вы не поняли, что я допер до этого еще на стадии (6),(7)
Единственный мой затык был в том, что я не понимал, что по логике 1С флажок, как и многие другие управляющие элементы формы, имеет тип "ПолеФормы" + меня сбивали с толку "ПолеФлажкаФормы" и другие более "узко именованные" типы в автокомплите.

Еще раз спасибо
29 live in sky dreams
 
08.06.17
08:56
(27)Кстати, почему "копрокода"?
Именование переменных человеческое, без "СтрПрМр".. Код разбит на блоки. Да и, на сколько мне известно, реквизиты на форме программно размещаются именно так.

Что не так с кодом? (у меня получается примерно такой копрокод, хочу знать что с ним не так)
30 aleks_default
 
08.06.17
09:03
(29)Все нормально с этим кодом, просто человека у все в порядке с самооценкой.
31 Ц_У
 
08.06.17
10:21
(29) Самый эффективный способ - сделать реквизит на форме и в отладчике посмотреть, нужные тебе, его тип и свойства, а не пытаться угадать.
(30) Да
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший