Версия для печати темы (https://pro1c.org.ua/index.php?s=61aa49a6dc1df6ffed132b6832942d08&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
,
Еще малый пример:
Сообщить(Элементы[ЭлИмя].Вид);
//Выдает значение: "Поле ввода"
//Но если написать так .. т.е. указать вид :):) то говорит ЛОЖЬ ... дур дом ))))
Сообщить(Элементы[ЭлИмя].Вид="Поле ввода");
Сообщить(Элементы[ЭлИмя].Вид="ПолеВвода");
Короче опять какая то ерунда эта целая головоломка
Буду признателен!
Автор: 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)
//Уже РУГАЕТЬСЯ...
Прадон Вернее не ругается а выдает "ПолеФормы"
А нужно получить ЗНАЧЕНИЕ
И поэтому как реквизит элемента формы запеременить?
С объектом все номрально:
Возврат ОбъектФормы[ИмяЭлементаИлиРеквизита];
А как в случае реквизита элемента?
Вот так что ли?
Возврат [ИмяЭлементаИлиРеквизита];
Где уже точно заругается
Автор: хакерок 25.05.18, 15:27
Gigi @ Сегодня, 16:11
,
Делаешь реквизит формы например ВводСуммы тип Число перетаскиваете на форму вот у тебя поле вода на форме.
Нажимаешь на этот элемент в форме там есть обработчик ПриИзменени
В нём пишешь
Сообщить(ВводСуммы)
Автор: Gigi 25.05.18, 15:32
Gigi @ Сегодня, 16:21
,
Знаю что можно еще так..
Возврат Элементы[ИмяЭлементаИлиРеквизита].ТекстРедактирования;
Но в таком случае и столкнулся с тем, что в цикле если попадаться Вид "Поле переключателя" то выдаст ошибку.
Вот для чего нужно было распознать вид.
Но я хотел спросить более простой путь.
Нельзя ли простым путем .. без этих танцев с бубном.
Как при
Возврат ОбъектФормы[ИмяЭлементаИлиРеквизита];
Так же просто с реквизитом элемента.
Вот что хотел спросить.
Цитата(хакерок @ 25.05.18, 16:27)
В нём пишешь
Да это я знаю
азбуку ...
Просто нужно то что выше написано...
как раз реквизит на пример: "ВводСуммы" запеременить ... сделать переменную на него.
Что бы можно было его значение получить из функции общего модуля.
Автор: хакерок 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