Имя: Пароль:
1C
1С v8
Дерево значений, 8.3 Отсутствует строка данных
,
0 Zakella86
 
10.08.17
11:21
Добрый день. Нужна помощь. В общем я программно заполняю дерево значений, все выводится норм. Затем считаю итоги по колонкам и по строкам. Но если при создании на сервере развертка происходит норм, то при изменении строки дерево, при попытки развернуть выдается ошибка Отсутствует строка данных . Подскажите пж , как это можно решить? Вот код

&НаКлиенте
Процедура МесяцПриИзменении (Элемент)  Экспорт

    ТекДанные =Элементы.ДеревоБюджет.ТекущиеДанные;
    РасчитатДеревоПоСтроке(ТекДанные.Ссылка);
    Элементы.ДеревоБюджет.Развернуть(0, Истина);   //вот тут ошибка

КонецПроцедуры

&НаСервере
Функция РасчитатДеревоПоСтроке(Ссылка)
    ДеревоБюджетОбъект = РеквизитФормыВЗначение("ДеревоБюджет");
  
    КлючНастроек = "ПериодыМесяц";    
    ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ПериодыМесяц", КлючНастроек);    
    Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
        МесяцыНомер = значениеНастроек.Получить("МесяцыНомер");    
    КонецЕсли;
    
    НайденнаяСтрока = ДеревоБюджетОбъект.Строки[0].Строки.Найти(Ссылка, "Ссылка", Истина);
    ПосчитатьИтогПоСтрокеДерева(НайденнаяСтрока,ДеревоБюджетОбъект);    
    
    ЗначениеВРеквизитФормы(ДеревоБюджетОбъект,"ДеревоБюджет");
КонецФункции // ()
1 igork1966
 
10.08.17
11:26
Элементы.ДеревоБюджет.Развернуть(0, Истина);

первый параметр идентификатор строки, с чего ты решил что он равен 0  ?
2 Zakella86
 
10.08.17
11:27
потому что это верхний уровень. При открытии отрабатывается такой же код, но он работает.
3 igork1966
 
10.08.17
11:31
(2) идентификаторы строк строго говоря "черный ящик"
твое предположение неверно
4 Zakella86
 
10.08.17
11:33
хорошо, но как обратиться к идентификатору если ДеревоБюджет как данные формы дерево, создается программно?
5 igork1966
 
10.08.17
11:33
(4) ДанныеФормыЭлементДерева.ПолучитьИдентификатор (FormDataTreeItem.GetID)
ДанныеФормыЭлементДерева (FormDataTreeItem)
ПолучитьИдентификатор (GetID)
Синтаксис:

ПолучитьИдентификатор()
Возвращаемое значение:

Тип: Число.

Описание:

Получает идентификатор элемента дерева.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
6 igork1966
 
10.08.17
11:36
(5) +
Возвратит идентификатор текущей строки
Элементы.ДеревоБюджет.ТекущиеДанные.ПолучитьИдентификатор()
или
Элементы.ДеревоБюджет.ТекущаяСтрока
7 Zakella86
 
10.08.17
11:37
не катит, я не могу обратиться
ДеревоБюджет.ПолучитьИдентификатор (),его на форме нет. Код выдает мне {Документ.ВводБюджетаПоПроектам.Форма.ФормаДокумента.Форма(215,1)}: Переменная не определена (ДеревоБюджет)
8 igork1966
 
10.08.17
11:38
(7) ты совсем? Это метод ДанныеФормыЭлементДерева
9 Zakella86
 
10.08.17
11:41
Да я перепутал.
ок, подскажи пж как получить ДанныеФормыЭлементДерева?
10 Zakella86
 
10.08.17
11:43
ок все получилось. Спасибо дружище, плюс сто тебе к карме
11 Zakella86
 
10.08.17
11:43
Элементы.ДеревоБюджет.Развернуть(Элементы.ДеревоБюджет.ТекущиеДанные.ПолучитьИдентификатор (), Истина);
Вот так правильно
12 igork1966
 
10.08.17
11:45
(11) если тебе нужно развернуть текущую строку  

можно еще вот так

Элементы.ДеревоБюджет.Развернуть(Элементы.ДеревоБюджет.ТекущаяСтрока, Истина);
13 Zakella86
 
10.08.17
11:45
спасибо большое
14 Zakella86
 
10.08.17
11:57
подкажи пж тогда уже как определить текущую колонку в упр. формах.
в обычных это выглядило вот так
ЭлементыФормы.ДеревоБюджет.ТекущаяКолонка.Имя
15 igork1966
 
10.08.17
12:00
ТаблицаФормы (FormTable)
ТекущийЭлемент (CurrentItem)
Использование:

Чтение и запись.
Описание:

Тип: ПолеФормы.
Текущее поле в таблице.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
16 Zakella86
 
10.08.17
12:02
благодарю