Как получить текущее значение выпадающего списка??? #7034


#0 by VaS
В общем при любом действии юзера на форме, вызывается функция из глобального модуля. В неё передаётся параметром её контекст и имеется список реквизитов формы, который при вызове функции, обходится циклом и получаются текущие значения реквизитов формы. ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+ТекРеквизит+")]")) Вот блин везде работает, а с выпадающим списком не хочет (может и с др. структурными элементами... не знаю, не пробовал). Получаеся сам список без намёков на текущую строку и т.п. Помогите победить...
#1 by SiMazx
Сам же и ответил... ТекущаяСтрока
#2 by SiMazx
+ПолучитьЗначение
#3 by VaS
А если вопрос повнимательнее прочитать... Попробуй-ка таким образом получить значение ТекущейСтроки
#4 by VaS
Конт.Форма.ПолучитьАтрибут(ТекРеквизит).???? Что дальше? ТекущаяСтрока???
#5 by Diter
Иначе Конт.Форма.ПолучитьАтрибут(ТекРеквизит).
#6 by SiMazx
ТекРеквизит.Вид
#7 by Diter
Ну конечно, просто недописал - руки не успевают за мыслями
#8 by VaS
Сорри, я кажется говорил, что ТекРеквизит берётся из списка реквизитов. Так что ТипЗначенияСтр(ТекРеквизит)="Строка" ...всегда
#9 by OctoberHammer
Если это форма првязанная к объекту метаданных, тогда так: Метаданные.Справочник(Вид).Реквизит(ТекРеквизит).Тип
#10 by Diter
Так занеси его в этот список так : СписокРеквизитов.ДобавитьЗначение(Реквизит.Вид,Реквизит) Потом будешь получать и раскладывать на вид реквизита и наименование реквизита.
#11 by VaS
Ну, для начала, это не справочник, а отчёт. Вид реквизита получить легко... ТипЗначенияСтр(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+ТекРеквизит+")]"))) Мне бы значение его получить, вернее значение из текущей строки списка.
#12 by VaS
Ну или хотя бы её номер...
#13 by Diter
Ты чего. Раз ты можешь получить вид реквизита - ну так получай его значение как в я тебе написал.
#14 by VaS
Я бы с радостью, тока вот не знаю куда "ПолучитьЗначение" и "ТекущаяСтрока" прикрутить
#15 by Diter
ТипЗначения=ТипЗначенияСтр(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+ТекРеквизит+")]"))) или как там ешё короче получаешь ТипЗначения как строку вида "ТаблицаЗначений" или "СписокЗначений" или "Число" и т.д. Иначе Конт.Форма.ПолучитьАтрибут(ТекРеквизит).
#16 by VaS
ТекРеквизит - СТРОКА, а у строки кажется нет метода "ПолучитьЗначение" и т.п.
#17 by Diter
Повторю ещё раз для тех кто на бронепоезде : Когда ты проверяешь ТИПЗНАЧЕНИЯ и оно раво "СПИОКЗНАЧЕНИЙ" то пользуешься Конт.Форма.ПолучитьАтрибут(ТекРеквизит.ПолучитьЗначение(ТекРеквизит.ТекущаяСтрока)). ВО ВСЕХ ОСТАЛЬНЫХ СЛУЧАЯХ Конт.Форма.ПолучитьАтрибут(ТекРеквизит). Если это не понятно - вызывай нормального программиста.
#18 by Diter
А чтобы у тебя ТЕКУЩИЙРЕКВИЗИТ был вида "СПИСОКЗНАЧЕНИЙ" а не "строка" создавай список как я тебе сказал в Да кстати вопрос - а на кой тебе этот самый список реквизитов? Пробежать все реквизиты документа можно и без промежутночного списка реквизитов. Или ты его создаёшь отдельно и вносишьтуда только те реквизиты, которые нужно обрабатывать? Так тем более делай как в
#19 by VaS
С перона, мимо проносящимся, отвечаю... Из списка заначений, содержащего строки с идентификаторами реквизитов формы. В цикле они последовательно выбираются и... Конт.Форма.ПолучитьАтрибут(ТекРеквизит) даёт ссылку на реквизит, как на объект метаданных. Т.е. я могу оперировать только со свойствами этого реквизита, но не с его значением. Либо могу получить весь список (из реквизита), без намёка на то, какая строка является текукщей... Все эти действия выполняются в глобальном модуле. И у строки нет метода "ПолучитьЗначение" и ему подобных.
#20 by VaS
Да, мне нужны только некоторые реквизиты. Рекизиты отчета (даже встроенного в конфигу) пробежать нельзя, и как объект метаданных их не сохранишь. Потому и приходится прибегать к помощи промежуточного списка. И вид и наименование реквизита (я думал это и так понятно) у меня уже есть.
#21 by GrayT
Извращенцы :)) Путаете божий дар с яишницей :) Две обработки. У первой на форме "МойСЗ" и кнопка открывающая вторую обработку 1 - модуль //_____________________________________________________________________________ А извращенцы потому что проще передать не идентификаторы реквизитов, а сами реквизиты
#22 by Diter
"Конт.Форма.ПолучитьАтрибут(ТекРеквизит) даёт ссылку на реквизит, как на объект метаданных. Т.е. я могу оперировать только со свойствами этого реквизита, но не с его значением. Либо могу получить весь список (из реквизита), без намёка на то, какая строка является текукщей... Все эти действия выполняются в глобальном модуле. И у строки нет метода "ПолучитьЗначение" и ему подобных" У тебя же есть контекст формы. Ну так и запроси из него текущую строку списка и заодно текущее занчение списка. Ты скажи - вместо того, чтобы здесь по пять раз рассказывать - ты пробовал или нет настучать этот код? Чего пишет в отладчике?
#23 by Diter
А если изначально неизвестно, есть нужный реквизит у документа или нет?
#24 by VaS
Сообщить(ТекРек.ПолучитьЗначение(1,Значение)); {Глобальный модуль(1453)}: Поле агрегатного объекта не обнаружено (ПолучитьЗначение) Спасибо за науку, тока не всё так просто. У клиента желание - минимум изменений в отчётах. Потому на форме лежит текст, вызывающий функцию из глобальника. В ней то всё и должно обработаться. Так что передавать каждый реквизит в отдельности, слишком громоздко. В этом то и проблема. Я сам над этим уже неделю голову ломаю и ничего не выходит. Видимо не судьба мне написать сие извращение. А внешние компоненты юзать не хочется, не доверяю я им. Ну да ладно. Большое спасибо всем, кто откликнулся. Наверное, тему можно закрыть и забыть...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С