Передачазначения перечисления через список значений в др. форму криво работает #670483


#0 by tlg25
Доброго времени суток. Проблему решила "через одно место", но хотелось бы знать на будущее, как надо сделать(написать) правильно и почему она возникает. Есть 2 формы(управляемые. 8.2), между которыми происходит обмен данными. В первой форме(форма элемента справочника) реквизит типа СписокЗначений, куда я записываю нужные значения из текущей строки табличной части. Во второй форме(произвольная форма этого справочника) параметр типа СписокЗначений(галочка "ключевой параметр" стоит). Вторая форма открывается модально по кнопке с передачей в качестве параметра реквизита типа СписокЗначений. Среди передаваемых значений есть ссылки на перечисления(значения перечислений). В процедуре ПриСозданииНаСервере во второй форме, когда я просматриваю значение пришедшего параметра в отладчике, то вижу, что тип у него: ссылка на нужное мне перечисление и значение - переданное мной значение, НО когда я пытаюсь напрямую записать этот параметр в реквизит второй формы, который имеет тип ссылку на именно это перечисление, то значение НЕ ЗАПИСЫВАЕТСЯ. То есть код МойРеквизит11 = ЭтаФорма.Параметры.ИмяПараметра[11] НЕ РАБОТАЕТ. Работает только через придуманный мной изврат: Точно такая же проблема возникает, когда отдаю через процедуру "Оповестить" данные в первую форму обратно. Подскажите, отчего такое возникает, ведь реквизит и элемент списка значений одного типа? (Ссылки на нужное мне перечисление) Кстати, цифровые значения тоже не передаются просто так. Приходиться писать МойРеквизит9 = СТРОКА(ЭтаФорма.Параметры.ИмяПараметра[11]), хотя и реквизит и элемент списка значений - числа. P.S. В реальном коде реквизиты и параметры имеют другие имена, но дала "абстрактные", чтобы не запутывать терминами предметной области.
#1 by Поросенок Петр
Элемент списка значений это не элемент массива.
#2 by Поросенок Петр
Если Имя11 <> "<Пустое значение>" Тогда... а вот подобные строки нужно считать за мыслепреступление. Булавкой себя коли, когда вдруг захочется такое писать.
#3 by Asmody
откуда взялось "магическое число" 11?
#4 by samozvanec
элемент списка содержит в себе значение, представление, пометку, картинку. делая вот так МойРеквизит11 = ЭтаФорма.Параметры.ИмяПараметра[11] ты пытаешься поместить в реквизит типа перечисление элемент списка значений в этих целях, кстати, удобно использовать структуру. и вопросов как в не будет)
#5 by samozvanec
а вот такие названия П = Новый Структура("ИмяПараметра", ИмяРеквизита); являются поводом для леща
#6 by tlg25
Во второй строке опечатка. МойРеквизит9 = СТРОКА(ЭтаФорма.Параметры.ИмяПараметра[9]). 11 - порядковый номер элемента моего параметра. Я передаю 10 числовых параметров, 1-й строковый, а вот дальше (так как нумерация с нуля номер одиннадцатый) и начитаются элементы с типами значения перечисления.
#7 by Asmody
а как заполняется ИмяРеквизита?
#8 by tlg25
В реальности имена другие, я ж приписала в постскриптуме. Чтобы было понятнее. Если важно, то в реальности строчка выглядит как: Спасибо за написанное в . Присмотрелась в отладчике, оказывается тип именно моего элемента какое-то абстрактное "ЭлементСпискаЗначений", а уже если отрыть дерево, то ниже строка с названием "Значение" у которой только тип - ссылка на моё перечисление. Как хитро всё устроено.
#9 by hhhh
детский сад.
#10 by tlg25
и далее также все интересующие меня реквизиты табличной части. КонецПроцедуры
#11 by tlg25
Простите, если Вы гуру, то я только недавно начала плотно работать с 1С и не знаю многих его тонкостей, поэтому и спрашиваю на форуме, чтобы в будущем делать грамотно и знать как "устроено изнутри"
#12 by hhhh
но ведь в вам сразу написали, что список значений - это не массив.
#13 by tlg25
Да, спасибо, мне написали ниже, что там тип оказывается "ЭлементСпискаЗначений", а не тот тип, который мне показывает как тип значения лежащего в этом элементе. А строку написала как заглушку, потому что ни "ЗначениеЗаполнено" ни сравнение с пустой ссылкой моего перечисления 1С не принимал. Теперь понятно почему. Если тип элемента абстрактное "ЭлементСпискаЗначений", не конкретно ссылка на моё пекречисление.
#14 by tlg25
Эта фраза не была мне понятна без развёрнутых пояснений данных ниже. Про то, что тип моего элемента, вовсе те такой, как я думаю. Кому-то достаточно полуслова(потому что он уже знает ответ), мне в данном случае было недостаточно.
#15 by tlg25
Спасибо Всем. Всё оказалось очень просто, надо писать не ЭтаФорма.Параметры.ИмяПараметра[9], а ЭтаФорма.Параметры.ИмяПараметра[9].Значение! И тогда нормлаьно передаёт-принимается без извратов.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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