Имя: Пароль:
1C
1С v8
ЗначениеВРеквизитФормы почему-то не работает
0 napagokc
 
22.11.16
14:56
Подскажите, пожалуйста. Создаю программно реквизит формы. В отладчике вижу, что у "ЭтаФорма" реквизит есть. Хочу изменить значение этого реквизита, используя ЗначениеВРеквизитФормы, но получаю ошибку "Недопустимое значение параметра (параметр номер '2')". Во втором параметре написано имя реквизита, оно имеет тип "Строка" и полностью совпадает с именем добавленного реквизита. Почему может не работать?
ЗЫ: РеквизитФормыВЗначение тоже не работает с аналогичной ошибкой, хотя по отладчику реквизит есть. На форму реквизит добавляется корректно. Вопрос только в том, как у него программно поменять данные? Это динамические данные, которые должны доставаться из отдельного РС и на форме отображаться только текущее значение.
ЗЗЫ: В сами метаданные в конфигурации реквизит не добавлен.
1 polosov
 
22.11.16
14:58
(0) В отладке у ЭтаФорма посмотри как называется реквищит
2 napagokc
 
22.11.16
15:01
(1) правильно называется =) Я же программно реквизит задаю. Название лежит в одной неизменной переменной, которая используется и при программном добавлении реквизита на форму, и при указании второго параметра в ЗначениеВРеквизитФормы. Тут ошибки нет.
3 napagokc
 
22.11.16
15:04
нРеквизиты = Новый Массив;
нРеквизиты.Добавить(Новый РеквизитФормы("Категория", Новый ОписаниеТипов("Булево"), , "Категория", Истина));
ИмяЭлемента = "КатегорияВИП";

НовыйЭлемент = Элементы.Найти(ИмяЭлемента);
Если НовыйЭлемент = Неопределено Тогда
    НовыйЭлемент = Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ГруппаФормы);
    НовыйЭлемент.ПутьКДанным = "Категория";
    НовыйЭлемент.ТолькоПросмотр = Истина;
КонецЕсли;

ЗначениеВРеквизитФормы(Истина, "Категория");


//ОШИБКА:
//Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
//    ЗначениеВРеквизитФормы(Истина, "Категория");
//по причине:
//Недопустимое значение параметра (параметр номер '2')
4 napagokc
 
22.11.16
15:06
а вот отладчик:
http://prntscr.com/dacx3d
5 napagokc
 
22.11.16
15:26
Неужели никто подобное не делал? Я знаю, что можно добавить реквизит в объект конфигурации и программно обращаться просто через "Объект". Но ведь тогда у меня в объекте будут храниться ненужные данные, которые там храниться, по сути, и не должны, т.к. эти данные не статические, а вычисляемые. Как мне получить желаемый результат? Может есть другой способ и я просто пошел не тем путем?
6 napagokc
 
22.11.16
15:46
А знаете что, дамы и господа?
Я не разобрался почему не работает ЗначениеВРеквизитФормы и обратно, но моя проблема решилась элементарным:

ЭтаФорма.Категория = Истина;

Разумеется, тут я явно присваиваю значение, а не динамически получаю результат, но это уже дело десятое. Самое главное я получил: присвоенное значение корректно отображается на форме и не вызывает ошибок при установки значения. ;)