Дерево значений Недопустимый путь к реквизиту. Путь: "РеквизитФормы"
Добрый день ув. специлаисты форума.
Есть проблемка, уже долго мучаюсь не получается решить
В общем программно создаю дерево значений. Все норм заполняется при первом открытии формы. Но если я хочу перезаполнить дерево новыми значениями выскакивает ошибка как на картинке. Уже и пытался и удалять и обновлять дерево ничего не помогает. Кто может подсказать?
Исходный код
Есть проблемка, уже долго мучаюсь не получается решить
В общем программно создаю дерево значений. Все норм заполняется при первом открытии формы. Но если я хочу перезаполнить дерево новыми значениями выскакивает ошибка как на картинке. Уже и пытался и удалять и обновлять дерево ничего не помогает. Кто может подсказать?
Исходный код
&НаСервере
Функция ОбновитьДерево ()
МассивКолонк = Новый Массив;
МесяцыНомер = Новый Соответствие;
//КолонкиСостава = ДеревоБюджетОбъект.Колонки;
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Число"));
КЧ = Новый КвалификаторыЧисла(19,2);
ОписаниеЧисло = Новый ОписаниеТипов(МассивТипов,КЧ);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Субпрограмма", Справочники.Субпрограммы.ПустаяСсылка());
Запрос.Текст =
"ВЫБРАТЬ
| Субпрограммы.Владелец КАК Программа,
| Субпрограммы.Ссылка КАК Субпрограмма
|ИЗ
| Справочник.Субпрограммы КАК Субпрограммы
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Субпрограмма,
| &Субпрограмма
|ГДЕ
| ЛОЖЬ
|ИТОГИ ПО
| Программа";
ПредДеревоЗнач = РеквизитФормыВЗначение("ДеревоБюджет");
ДеревоБюджет.ПолучитьЭлементы().Очистить();
//ЗначениеВДанныеФормы(ДеревоБюджетОбъект, ДеревоБюджет);
ДеревоБюджетОбъект = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Для каждого СтрокаРодитель Из ДеревоБюджетОбъект.Строки Цикл
Для каждого Строка Из СтрокаРодитель.Строки Цикл
Строка.Программа = Строка.Субпрограмма;
КонецЦикла;
КонецЦикла;
//ДеревоБюджетОбъект.Колонки.Удалить(ДеревоБюджетОбъект.Колонки.Субпрограмма);
Для каждого ТекКолонка Из ДеревоБюджетОбъект.Колонки Цикл
Если Лев(ТекКолонка.Имя,5) = "Месяц" ИЛИ ТекКолонка.Имя = "Итого" Тогда
МассивКолонк.Добавить(ТекКолонка);
КонецЕсли;
КонецЦикла;
Для каждого ТекКолонка Из МассивКолонк Цикл
ДеревоБюджетОбъект.Колонки.Удалить(ТекКолонка);
КонецЦикла;
МассивКолонк = Новый Массив;
Для каждого ТекКолонка Из ДеревоБюджетОбъект.Колонки Цикл
Если Лев(ТекКолонка.Имя,5) = "Месяц" ИЛИ ТекКолонка.Имя = "Итого" Тогда
МассивКолонк.Добавить(ТекКолонка);
КонецЕсли;
КонецЦикла;
Для каждого ТекКолонка Из МассивКолонк Цикл
ДеревоБюджетОбъект.Колонки.Удалить(ТекКолонка);
КонецЦикла;
Если ЗначениеЗаполнено(Объект.ДатаНачала) И ЗначениеЗаполнено(Объект.ДатаОкончания) Тогда
Н = 0;
ДатаТек = НачалоМесяца(Объект.ДатаНачала);
Пока ДатаТек <= КонецДня(Объект.ДатаОкончания) Цикл
Н = Н + 1;
ДеревоБюджетОбъект.Колонки.Добавить("Месяц"+Н, ОписаниеЧисло, Формат(ДатаТек, "ДФ='MMMM yyyy'"), 19);
МесяцыНомер.Вставить(ДатаТек, Н);
ДатаТек = ДобавитьМесяц(ДатаТек, 1);
КонецЦикла;
КонецЕсли;
ДеревоБюджетОбъект.Колонки.Добавить("Итого", ОписаниеЧисло, "Итого", 19);
РасчитатьДанныеПоСТрокамДерева(ДеревоБюджетОбъект,МесяцыНомер);
МассивУдаляемыхРеквизитов = Новый Массив;
МассивДобавляемыхРеквизитов = Новый Массив;
Для Каждого Колонка Из ДеревоБюджетОбъект.Колонки Цикл
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ДеревоБюджет"));
КонецЦикла;
Для Каждого Колонка Из ПредДеревоЗнач.Колонки Цикл
Если Колонка.Имя = "Программа" или Колонка.Имя = "Субпрограмма" Тогда
Продолжить;
КонецЕсли;
МассивУдаляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ДеревоБюджет"));
КонецЦикла;
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,МассивУдаляемыхРеквизитов); //вот тут ошибка
Для Каждого Колонка Из ДеревоБюджетОбъект.Колонки Цикл
Если Элементы.ДеревоБюджет.ПодчиненныеЭлементы.Найти(Колонка.Имя)=Неопределено Тогда
НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ДеревоБюджет);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "ДеревоБюджет." + Колонка.Имя;
НовыйЭлемент.Заголовок = Колонка.Заголовок;
Если Колонка.Имя ="Субпрограмма" Тогда
НовыйЭлемент.Видимость = Ложь ;
КонецЕсли;
НовыйЭлемент.УстановитьДействие("ПриИзменении",
"МесяцПриИзменении");
КонецЕсли;
КонецЦикла;
//ЗначениеВРеквизитФормы(ДеревоБюджетОбъект, ДеревоБюджет);
ЗначениеВДанныеФормы(ДеревоБюджетОбъект, ДеревоБюджет);
КлючНастроек = "ПериодыМесяц";
Настройки = Новый Соответствие;
Настройки.Вставить("МесяцыНомер", МесяцыНомер);
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ПериодыМесяц", КлючНастроек, Настройки);
ПоказатьПрограммыБезСубПРограмм();
КонецФункции
ПоказатьПрикрепленные файлы:

Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот