PDA

Просмотр полной версии : Получение элемента по индексу для значения не определено



KRUTO
18.03.2017, 08:09
Ребята, подскажите, на форме есть таблица, присваиваю одной из ее ячеек значение типа "структура". При обращение к этой ячейки получаю сообщение "Получение элемента по индексу для значения не определено".

вот примерный код:

НоваяСтрока = ТекущаяНастройка.Строки.До бавить();
НоваяСтрока.Обработка = ЭлементыФормы.ТекущаяНаст� �ойка.Значение;
ТекущаяНастройка = НоваяСтрока;
ЭтаФорма.ЭлементыФормы.Дос тупныеОбработки.ТекущаяСт� �ока = НоваяСтрока;
ТекущаяНастройка.Настройк� � = НоваяНастройка;

сообщить("1 " + ЭтаФорма.ЭлементыФормы.Дос тупныеОбработки.ТекущаяСт� �ока.Настройка["РеквизитыДляСохранения"]);

Если я обращаюсь напрямую к структуре "НоваяНастройка" ошибки нет, а если присвоить ячейке в таблице - косяк. Что не так? спасибо

avm3110
18.03.2017, 11:51
А через
ЭтаФорма.ЭлементыФормы.Дос тупныеОбработки.ТекущаяСт� �ока = НоваяСтрока;

ты видать думаешь, что обработка сама "на форме" меняет положение строкИ? С чего ты так решил?

KRUTO
18.03.2017, 15:08
А через
ЭтаФорма.ЭлементыФормы.Дос тупныеОбработки.ТекущаяСт? ?ока = НоваяСтрока;
Я же этим задал положение строки, забыл сказать, что 'доступныеобработки' - это таблица на форме с типом 'дерево значений'

avm3110
18.03.2017, 19:38
А через
ЭтаФорма.ЭлементыФормы.Дос тупныеОбработки.ТекущаяСт? ?ока = НоваяСтрока;
Я же этим задал положение строки, забыл сказать, что 'доступныеобработки' - это таблица на форме с типом 'дерево значений'

Вы действительно уверены, что присваивая что-либо ЭтаФорма.ЭлементыФормы. можно менять отображение на экранной форме?

Вы можете менять только реквизиты ЭтотОбъект, а ЭтаФорма управляется иначе

KRUTO
18.03.2017, 21:07
Понял вас, спасибо

KRUTO
18.03.2017, 21:09
Буду курить

KRUTO
20.03.2017, 08:24
Вы действительно уверены, что присваивая что-либо ЭтаФорма.ЭлементыФормы. можно менять отображение на экранной форме?

Вы можете менять только реквизиты ЭтотОбъект, а ЭтаФорма управляется иначе

Ну вот этот код работает:

НоваяСтрока = ТекущаяНастройка.Строки.До бавить();
НоваяСтрока.Обработка = ЭлементыФормы.ТекущаяНаст� �ойка.Значение;
ТекущаяНастройка = НоваяСтрока;
ЭтаФорма.ВладелецФормы.Эле ментыФормы.ДоступныеОбраб� �тки.ТекущаяСтрока = НоваяСтрока;
ТекущаяНастройка.Настройк� � = НоваяНастройка;
сообщить("0 " + ТипЗнч(ТекущаяНастройка.На стройка));
Строка на форму добавляется...
Только типзнч(ТекущаяНастройка.На стройка) строка получается. Форма - обычная, неуправляемая.

avm3110
20.03.2017, 08:40
Давайте сначала. Что хотите?
И еще, ну чтобы не было путаницы.
Есть объект (например элемент справочника), у которого есть реквизиты и табличные части.
Есть Форма в которой отображается Объект и есть элементы формы в которые отображаются реквизиты и табличные части.

когда Вы добавляете строку в табличную часть программно - у вас соответственно это отображается на Форме.
Вы всегда можете узнать, какая строка на форме является "Текущей"... И-и-и-и... что хотите сделать и что хотите получить?

ПыСы.. Чтобы не путаться, давайте своим реквизитам и табличным частям какие-то "не стандартные имена, а то лично у меня происходит путаница, когда вижу типа ТекущаяНастройка.Строки.До бавить()

KRUTO
20.03.2017, 08:56
Ну вот, постараюсь объяснить, с терминологией у меня беда). Есть переменная формы (или реквизит формы) "ДоступныеОбработки" с типом значения "Деревозначений", и ее отображение на форме в виде таблице. Оно тоже называется ""ДоступныеОбработки". "ДоступныеОбработки" - это НЕ реквизит объекта.обработка. Я сделал 3 колонки на форме в этой таблице. Одной из колонок хочу присвоить значение типа "структура". Но этой колонке присваивается значение "строка". Вот вопрос - как присвоить значение типа "структура". В структуре хранится таблица значений.

avm3110
20.03.2017, 14:38
Вообще-то "таблица на форме" - это весьма плохой объект для отображения "Дерева значений".

А вам точно нужно "дерево"?

KRUTO
20.03.2017, 20:10
А какой тогда объект использовать? Можно и не дерево, а просто таблицу, хотя хотелось бы дерево

avm3110
21.03.2017, 08:35
Используй ТаблицуЗначений. ТЗ она "двумерная" и нет проблем с постоянным гимором "родитель-потомок".

KRUTO
21.03.2017, 13:03
Используй ТаблицуЗначений. ТЗ она "двумерная" и нет проблем с постоянным гимором "родитель-потомок".

Ну вот, капец, с таблицей значений всё получается...
А с деревом - ерунда. Просто взял обработку "универсальныйподбориобраб откаобъектов". Переделываю для РегистровНакопления (ради спортивного интереса). Так вот там дерево и оно позволяет сохранять структуру, я точно такую же таблицу делаю, только с деревом, а она сохраняет строку и всё тут... А таблица значений работает...

avm3110
21.03.2017, 14:01
Работа с деревом требует более глубоких знаний 1С :-)

KRUTO
21.03.2017, 14:20
Пришла идея, опробую

KRUTO
24.03.2017, 08:06
капец, не брался пару дней за эту фигню. Открыл, решил сменить название переменной, куда сохраняется дерево (с помощью метода "сохранитьзначение". И всё встало на свои места. Что-то намудрил... Получается: при создании подстроки дерева - она создается с теми же типами значения, что и родительИ?

avm3110
24.03.2017, 10:41
Да, имеено