Ув. коллеги,
у меня есть форма обработки. На ней в цикле создаются закладки. На всех этих закладках одинаковые элементы диалога. Мне нужо в цикле пробежаться по этим закладкам и прочитать или задать значение каждого из аналогичных элементов диалога. Закладок от 20 до 50. Если для каждого элемента писать:
<ИмяЭлементаДиалога1> = ...
<ИмяЭлементаДиалога2> = ...
....
<ИмяЭлементаДиалога50> = ...
ИЛИ
Форма.<ИмяЭлементаДиалога1>.Заголовок(...)
Форма.<ИмяЭлементаДиалога2>.Заголовок(...)
....
Форма.<ИмяЭлементаДиалога50>.Заголовок(...)
то придется писать 50 строк. А если таких элементов на закладке несколько 3-5? А если закладок не 50 а 70-100?
ВОПРОС - как можно обратиться к свойству или методу элемента диалога не указывая имя этого элемента диалога явно, а задавать его имя в виде какой то переменной или как-то еще.
ЗАРАНЕЕ БЛАГОДАРЕН ВСЕМ ЗА СОВЕТЫ ИЛИ ИДЕИ.
ПолучитьАтрибут(<?>);
Синтаксис:
Форма.ПолучитьАтрибут(ИмяРеквизита)
Назначение:
Возвращает ссылку на элемент формы.
Параметры:
ИмяРеквизита - строковое выражение, содержащее идентифика-тор элемента формы, как он задан в Конфигураторе.
Замечание:
Доступ к методу возможен только в контексте Модуля формы через атрибут Форма.
Цитата(Vofka @ 18.10.10, 9:25) необходимо зарегистрироваться для просмотра ссылки
ПолучитьАтрибут(<?>);
Синтаксис:
Форма.ПолучитьАтрибут(ИмяРеквизита)
Назначение:
Возвращает ссылку на элемент формы.
Параметры:
ИмяРеквизита - строковое выражение, содержащее идентифика-тор элемента формы, как он задан в Конфигураторе.
Замечание:
Доступ к методу возможен только в контексте Модуля формы через атрибут Форма.Ув. VOFKA,
похоже что это сработает! Только не пойму как получив ссылку на данный элемент, изменить его параметры - Видимость, Доступность, Значение...
Черкните пару строк примера.
ЗАРАНЕЕ БЛАГОДАРЕН!
Наверное как-то так (не проверял):
Рекв = "Контрагенты";
РеквКонтрагенты = Форма.ПолучитьАтрибут(Рекв);
РеквКонтрагент.Видимость(0);
VOFKA - спасибо! Проверю и отпишусь...
Цитата(Игорь К @ 18.10.10, 11:45) необходимо зарегистрироваться для просмотра ссылки
VOFKA - спасибо! Проверю и отпишусь...
Ув. VOFKA,
попробовал вот такой код
ПолеНомерВарианта = Форма.ПолучитьАтрибут(ИмяПоля);
НомерВарианта = ПолеНомерВарианта.ПорядковыйНомер();
Но к сожаления ссылка на элемент диалога не генерируется - элемент диалога не обнаруживается :-(
Помогите разобраться почему.
Что говорит отладчик по поводу:
Форма.ПолучитьАтрибут("ИмяРеквизита")
?
Цитата(Vofka @ 18.10.10, 18:48) необходимо зарегистрироваться для просмотра ссылки
Что говорит отладчик по поводу:
Форма.ПолучитьАтрибут("ИмяРеквизита")
?
Я написал:
ИмяПоля = "НомерВариантаДляБронирВFS"+Строка(НомерСлоя);
Форма.ПолучитьАтрибут(ИмяПоля);Ответ отладчика
Форма.ПолучитьАтрибут(ИмяПоля) = НеизвестныйОбъект
Ну а если просто напрямую:
Форма.ПолучитьАтрибут("НомерВариантаДляБронирВFS1")
?
И точно есть атрибут с именем "НомерВариантаДляБронирВFS"+Строка(НомерСлоя) ?
Цитата(Vofka @ 18.10.10, 19:29) необходимо зарегистрироваться для просмотра ссылки
Ну а если просто напрямую:
Форма.ПолучитьАтрибут("НомерВариантаДляБронирВFS1")
?
И точно есть атрибут с именем "НомерВариантаДляБронирВFS"+Строка(НомерСлоя) ?
Поменяля имя реквизита.
Форма.ПолучитьАтрибут("ПолеВводаПеречисл");
Результат тот-же
Неизвестный объектМожет со свойствами что-то не так - посмотрите картинки в аттачменте (извинте пока немогу приаттачить их сюда)
Кстати реквизит диалога с которым работаем имеет тип ПЕРЕЧИСЛЕНИЕ. Это что-то меняет?
А так:
Рекв = "Контрагенты";
РеквКонтрагенты = ПолучитьАтрибут(Рекв);
РеквКонтрагент.Видимость(0);
?
Картинку непосредственно сюда приаттачить нельзя. Можно её куда-то залить, а здесь в специальных тегах разместить ссылку
Цитата(Vofka @ 18.10.10, 20:19) необходимо зарегистрироваться для просмотра ссылки
А так:
Рекв = "Контрагенты";
РеквКонтрагенты = ПолучитьАтрибут(Рекв);
РеквКонтрагент.Видимость(0);
?
Картинку непосредственно сюда приаттачить нельзя. Можно её куда-то залить, а здесь в специальных тегах разместить ссылку

В таком варианте ругается не отладчик а синтаксис-контроль - говорит
Функция не обнаружена (ПолучитьАтрибут)
ДокМД = Метаданные.Документ(ТекущийДокумент().Вид());
Для Ин = 2 По ДокМД.РеквизитТабличнойЧасти() Цикл
ИдРекв = ДокМД.РеквизитТабличнойЧасти(Ин).Идентификатор;
Форма.ПолучитьАтрибут(ИдРекв).Видимость(0);
КонецЦикла;
Этот вариант работает точно.
Обращаю внимание Форма.ПолучитьАтрибут(ИдРекв).Видимость(0);
Цитата(alex1c @ 18.10.10, 20:56) необходимо зарегистрироваться для просмотра ссылки
ДокМД = Метаданные.Документ(ТекущийДокумент().Вид());
Для Ин = 2 По ДокМД.РеквизитТабличнойЧасти() Цикл
ИдРекв = ДокМД.РеквизитТабличнойЧасти(Ин).Идентификатор;
Форма.ПолучитьАтрибут(ИдРекв).Видимость(0);
КонецЦикла;
Этот вариант работает точно.
Обращаю внимание Форма.ПолучитьАтрибут(ИдРекв).Видимость(0);
Так я работаю с реквизитаим диалога на форме обоработки. Или я по молодости чего-то не понял?
Пробовал только что:
Форма.ПолучитьАтрибут("Контрагент").Видимость(0);
все ок.
необходимо зарегистрироваться для просмотра ссылки пример
Цитата(Vofka @ 18.10.10, 21:30) необходимо зарегистрироваться для просмотра ссылки
Пробовал только что:
Форма.ПолучитьАтрибут("Контрагент").Видимость(0);
все ок.
Я проверил - у меня тоже работает.
Возможно я некорректно сформулировал вопрос в начале.
Моя задача прочитать выбранное в этом реквизите значение.
Форма.ПолучитьАтрибут("ДатаОплПодпись").Заголовок()
Цитата(Vofka @ 18.10.10, 21:51) необходимо зарегистрироваться для просмотра ссылки
Форма.ПолучитьАтрибут("ДатаОплПодпись").Заголовок()
Я вас уже наверное задолбал :-)
Я работаю с реквизитом диалога, тип которого ПЕРЕЧИСЛЕНИЕ. И мне нужно получить .ПорядковыйНомер()
Строка
НомерВариантаДляБронирВFS1.ПорядковыйНомер(); Дает нормальный результат
На строку
Форма.ПолучитьАтрибут("НомерВариантаДляБронирВFS1").ПорядковыйНомер();выдает ошибку:
Поле агрегатного объекта не обнаружено (ПорядковыйНомер)
подозреваю что нужен какой-нибудь formex.dll
"Методы для последовательного перебора и перебора по условию всех реквизитов формы "
необходимо зарегистрироваться для просмотра ссылки
Цитата(Ardi @ 18.10.10, 23:31) необходимо зарегистрироваться для просмотра ссылки
подозреваю что нужен какой-нибудь formex.dll
"Методы для последовательного перебора и перебора по условию всех реквизитов формы "
необходимо зарегистрироваться для просмотра ссылки
Похоже вы правы. А примерчик какой нибудь можно?
ЗАРАНЕЕ БЛАГОДАРЕН!
ПолучитьАтрибут - используется не для редактирования значения атрибута, а для управление контролом, в котором находится данный реквизит. Если необходимо получить значение по текстовому представлению реквизита, то необходимо использовать какой-либо парсер. Одним из примеров такихпарсеров может быть функция Шаблон, хотя 1С и не советует использовать данную функцию в режиме вычисления значения.
Что-то типа Шаблон("НомерВариантаДляБронирВFS1.ПорядковыйНомер()")
Метод ПорядковыйНомер() используется для: субконто, перечислений и плана счетов. У вас какой тип значения элемента?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.