Вход | Регистрация


1С:Предприятие ::

Метки:

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

Я
   VaS
26.07.04 - 11:24
В общем при любом действии юзера на форме, вызывается функция из глобального модуля. В неё передаётся параметром её контекст и имеется список реквизитов формы, который при вызове функции, обходится циклом и получаются текущие значения реквизитов формы.

ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+ТекРеквизит+")]"))
// Взято из FAQ


Вот блин везде работает, а с выпадающим списком не хочет (может и с др. структурными элементами... не знаю, не пробовал). Получаеся сам список без намёков на текущую строку и т.п.
Помогите победить...
 
 
   VaS
4 - 26.07.04 - 12:46
Конт.Форма.ПолучитьАтрибут(ТекРеквизит).????

Что дальше? ТекущаяСтрока()???
   Diter
5 - 26.07.04 - 12:53
Если ТекРеквизит.Вид="СписокЗначений" Тогда
Конт.Форма.ПолучитьАтрибут(ТекРеквизит.ПолучитьЗначение(ТекРеквизит.ТекущаяСтрока())).
Иначе
Конт.Форма.ПолучитьАтрибут(ТекРеквизит).
   SiMazx
 
6 - 26.07.04 - 12:57
ТекРеквизит.Вид()
   VaS
8 - 26.07.04 - 13:00
Сорри, я кажется говорил, что ТекРеквизит берётся из списка реквизитов. Так что
ТипЗначенияСтр(ТекРеквизит)="Строка"
...всегда
   OctoberHammer
 
9 - 26.07.04 - 13:03
Если это форма првязанная к объекту метаданных, тогда так:
Метаданные.Справочник(Вид()).Реквизит(ТекРеквизит).Тип
   Diter
10 - 26.07.04 - 13:04
Так занеси его в этот список так :
СписокРеквизитов.ДобавитьЗначение(Реквизит.Вид(),Реквизит)
Потом будешь получать и раскладывать на вид реквизита и наименование реквизита.
 
 
   VaS
11 - 26.07.04 - 13:12
Ну, для начала, (9) это не справочник, а отчёт. (10) Вид реквизита получить легко...
ТипЗначенияСтр(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+ТекРеквизит+")]")))
Мне бы значение его получить, вернее значение из текущей строки списка.
   Diter
15 - 26.07.04 - 13:29
ТипЗначения=ТипЗначенияСтр(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+ТекРеквизит+")]"))) или как там ешё короче получаешь ТипЗначения как строку вида "ТаблицаЗначений" или "СписокЗначений" или "Число" и т.д.
Если ТипЗначения="СписокЗначений" Тогда
Конт.Форма.ПолучитьАтрибут(ТекРеквизит.ПолучитьЗначение(ТекРеквизит.ТекущаяСтрока())). 
Иначе
Конт.Форма.ПолучитьАтрибут(ТекРеквизит).
   VaS
 
16 - 26.07.04 - 13:35
ТекРеквизит - СТРОКА, а у строки кажется нет метода "ПолучитьЗначение()" и т.п.
   Diter
17 - 26.07.04 - 13:39
Повторю ещё раз для тех кто на бронепоезде :
Когда ты проверяешь ТИПЗНАЧЕНИЯ и оно раво "СПИОКЗНАЧЕНИЙ" то пользуешься
Конт.Форма.ПолучитьАтрибут(ТекРеквизит.ПолучитьЗначение(ТекРеквизит.ТекущаяСтрока())).
ВО ВСЕХ ОСТАЛЬНЫХ СЛУЧАЯХ
Конт.Форма.ПолучитьАтрибут(ТекРеквизит).
Если это не понятно - вызывай нормального программиста.
   Diter
18 - 26.07.04 - 13:43
А чтобы у тебя ТЕКУЩИЙРЕКВИЗИТ был вида "СПИСОКЗНАЧЕНИЙ" а не "строка" создавай список как я тебе сказал в (10)
Да кстати вопрос - а на кой тебе этот самый список реквизитов? Пробежать все реквизиты документа можно и без промежутночного списка реквизитов. Или ты его создаёшь отдельно и вносишьтуда только те реквизиты, которые нужно обрабатывать? Так тем более делай как в (10)
   VaS
 
19 - 26.07.04 - 13:53
С перона, мимо проносящимся, отвечаю...
Из списка заначений, содержащего строки с идентификаторами реквизитов формы. В цикле они последовательно выбираются и...

Если ТипЗначенияСтр(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+ТекРеквизит+")]")))="СписокЗначений" Тогда// Это уже тот, который на форме

//Здесь мне надо получить значение текущей строки или её номер имея контекст формы и строку с идентификатором реквизита

Конт.Форма.ПолучитьАтрибут(ТекРеквизит) даёт ссылку на реквизит, как на объект метаданных. Т.е. я могу оперировать только со свойствами этого реквизита, но не с его значением. Либо могу получить весь список (из реквизита), без намёка на то, какая строка является текукщей...
Все эти действия выполняются в глобальном модуле.
И у строки нет метода "ПолучитьЗначение()" и ему подобных.
   GrayT
 
21 - 26.07.04 - 14:08
Извращенцы :)) Путаете божий дар с яишницей :)
Две обработки. У первой на форме "МойСЗ" и кнопка открывающая вторую обработку
1 - модуль
//_____________________________________________________________________________
Процедура ОткрытьОбработку()
    сз = СоздатьОбъект("СписокЗначений");
    сз.ДобавитьЗначение(Контекст, "Контекст");
    сз.ДобавитьЗначение("МойСЗ", "МойСЗ");
    ОткрытьФорму("Обработка.Новый1", сз);
КонецПроцедуры//ОткрытьОбработку

Для сч = 1 по 10 Цикл
    МойСЗ.ДобавитьЗначение("Строка"+сч)    
КонецЦикла;

2 - модуль
Процедура ПриОткрытии()
    Конт = Форма.Параметр.Получить("Контекст");
    Рекв = Форма.Параметр.Получить("МойСЗ");
    Сообщить(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(Конт."+Рекв+".ТекущаяСтрока())]"))) ;
КонецПроцедуры//ПриОткрытии

А извращенцы потому что проще передать не идентификаторы реквизитов, а сами реквизиты
   Diter
22 - 26.07.04 - 14:10
(19)
"Конт.Форма.ПолучитьАтрибут(ТекРеквизит) даёт ссылку на реквизит, как на объект метаданных. Т.е. я могу оперировать только со свойствами этого реквизита, но не с его значением. Либо могу получить весь список (из реквизита), без намёка на то, какая строка является текукщей...
Все эти действия выполняются в глобальном модуле.
И у строки нет метода "ПолучитьЗначение()" и ему подобных"
У тебя же есть контекст формы. Ну так и запроси из него текущую строку списка и заодно текущее занчение списка.
Ты скажи - вместо того, чтобы здесь по пять раз рассказывать - ты пробовал или нет настучать этот код? Чего пишет в отладчике?



Список тем форума
Рекламное место пустует   Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует