Версия для печати темы (https://pro1c.org.ua/index.php?s=5b85abb31afb4c215bae37ab0edc8edd&showtopic=45914)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ распознать вид элемента формы в 1с 8

Автор: Gigi 25.05.18, 14:51

Всем привет!
Опять приходиться выходить на форум.. ПРИХОДИТЬСЯ!!!!
Никто не подскажет как распознать вид элемента формы
Вот варианты:

Сообщить(Элементы[ЭлИмя].Вид="Обычная группа");
Сообщить(Элементы[ЭлИмя].Вид="Поле ввода");

В обеих случаях выдает ложь.
Что нужно... нужно что бы тип элемента был "ПолеФормы", но при этом что бы этот элемент был полем ввода, а не переключателем и т.д.
Как распознать первое разобрался, а как второе нет.
Т.е. вопрос в том как указать что элемент "ПолеФормы" это поле ввода, а не поле переключателя, поля надписи и т.д.
Буду признателен!

Gigi @ Сегодня, 15:10 * ,
Еще малый пример:
Сообщить(Элементы[ЭлИмя].Вид);
//Выдает значение: "Поле ввода"
//Но если написать так .. т.е. указать вид :):) то говорит ЛОЖЬ ... дур дом ))))
Сообщить(Элементы[ЭлИмя].Вид="Поле ввода");
Сообщить(Элементы[ЭлИмя].Вид="ПолеВвода");

Короче опять какая то ерунда эта целая головоломка smile.gifsmile.gif
Буду признателен!

Автор: Petre 25.05.18, 14:53

Почему вы игнорируете СП?

Автор: хакерок 25.05.18, 14:58

Gigi @ Сегодня, 15:51 * ,
Небольшая подсказка

Сообщить(Элементы[ЭлИмя].Вид);

В процессе происходит выдача строкового предстваления объекта Элементы[ЭлИмя].Вид в строку.

Сообщить(Строка(Элементы[ЭлИмя].Вид) = "Поле ввода")


может дать тебе Истина

Тоесть Элементы[ЭлИмя].Вид это не строка а объект

Автор: Gigi 25.05.18, 14:58

Petre @ Сегодня, 15:53 * ,

Цитата
ПолеФормы (FormField)
Вид (Type)
Использование:
Чтение и запись.
Описание:
Тип: ВидПоляФормы.
Определяет способ представления данных реквизита в форме.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Изменение свойства на клиенте требует обращения к серверу.

Вот все что написано в СП
Гуууу... а где пример? без лишней никчемной теории... в чем тоже кот наплакал
Один пример и все... это лучше чем тоны теории.

Автор: хакерок 25.05.18, 15:09

Gigi @ Сегодня, 15:58 * ,
Опишите что хочете сделать в форме может и подскажем куда копать

Автор: Gigi 25.05.18, 15:21

Цитата(хакерок @ 25.05.18, 15:58) *
Сообщить(Строка(Элементы[ЭлИмя].Вид) = "Поле ввода")

Да .. точно ... как сам не догнал
Думаю конечно даст истину.
Но вообще мне эти танцы с бубнами ... знаете зачем?
Дело в том, что я просто никак не могу найти способ как запеременить поле элемента формы.
Ну на пример:
//Так сделать не проблема
&НаКлиенте
Процедура Тест()
Значение=ТестФункц(Элементы,Отчет,"Реквизит1");
КонецПроцедуры
&НаКлиенте
Функция ТестФункц(Элементы,ОбъектФормы,ИмяЭлементаИлиРеквизита)
Возврат ОбъектФормы[ИмяЭлементаИлиРеквизита];
КонецФункции

//А как запеременить и возвратить значение не объекта формы а элемента?
//Поэтому уже таким маккром:
Процедура Тест()
Значение=ТестФункц(Элементы,Отчет,"Реквизит2");
КонецПроцедуры
&НаКлиенте
Функция ТестФункц(Элементы,ОбъектФормы,ИмяЭлементаИлиРеквизита)
Возврат Элементы[ИмяЭлементаИлиРеквизита];
КонецФункции
//Уже РУГАЕТЬСЯ...

Т.е. как запеременить элемент формы и так получить.

Gigi @ Сегодня, 16:11 * ,
Цитата(Gigi @ 25.05.18, 16:11) *
//Уже РУГАЕТЬСЯ...

Прадон Вернее не ругается а выдает "ПолеФормы"
А нужно получить ЗНАЧЕНИЕ
И поэтому как реквизит элемента формы запеременить?
С объектом все номрально:
Возврат ОбъектФормы[ИмяЭлементаИлиРеквизита];

А как в случае реквизита элемента?
Вот так что ли? smile.gif
Возврат [ИмяЭлементаИлиРеквизита];

Где уже точно заругается

Автор: хакерок 25.05.18, 15:27

Gigi @ Сегодня, 16:11 * ,
Делаешь реквизит формы например ВводСуммы тип Число перетаскиваете на форму вот у тебя поле вода на форме.

Нажимаешь на этот элемент в форме там есть обработчик ПриИзменени

В нём пишешь

Сообщить(ВводСуммы)




Автор: Gigi 25.05.18, 15:32

Gigi @ Сегодня, 16:21 * ,
Знаю что можно еще так..

Возврат  Элементы[ИмяЭлементаИлиРеквизита].ТекстРедактирования;

Но в таком случае и столкнулся с тем, что в цикле если попадаться Вид "Поле переключателя" то выдаст ошибку.
Вот для чего нужно было распознать вид.
Но я хотел спросить более простой путь.
Нельзя ли простым путем .. без этих танцев с бубном.
Как при
Возврат ОбъектФормы[ИмяЭлементаИлиРеквизита];

Так же просто с реквизитом элемента.
Вот что хотел спросить.

Цитата(хакерок @ 25.05.18, 16:27) *
В нём пишешь

Да это я знаю smile.gif азбуку ...
Просто нужно то что выше написано...
как раз реквизит на пример: "ВводСуммы" запеременить ... сделать переменную на него.
Что бы можно было его значение получить из функции общего модуля.

Автор: хакерок 25.05.18, 16:18

Gigi @ Сегодня, 16:32 * ,
В общем модуле тебе доступен объект Метаданные там вся конфигурация попробуй с ним поработать.

Автор: Magvay_k 25.05.18, 16:22

Для сравнения вида поля, правильнее использовать Элементы.Реквизит1.Вид = ВидПоляФормы.ПолеВвода



Magvay_k @ Сегодня, 18:20 * ,
А так я думаю можно получить значение реквизиты формы ЭтаФорма[Элементы.Реквизит1.ПутьКДанным]

Автор: Gigi 25.05.18, 16:44

Magvay_k @ Сегодня, 17:22 * ,
Огромное спасибо...
Попытаюсь так как сказали.
Но если будут вопросы продолжу тему..
Спасибо!

Автор: Vofka 29.05.18, 8:14

хакерок, за нарушение пункта 1 http://pro1c.org.ua/index.php?act=announce&f=36&id=2: режим только чтение на 2 недели.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua