Имя: Пароль:
1C
1С v8
УФ. Построение дерева на форме
0 егаис
 
29.03.16
09:37
Господа, помогите решить проблему. Есть обработка с ТЧ, на форме УФ данная тч выведена как дерево.
Нужно результат запроса выгрузить в дерево

&НаСервере
Процедура ЗаполнитьЗатратыНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ХозрасчетныйОбороты.Субконто1 КАК ОсновноеСредство,
        |    ХозрасчетныйОбороты.Субконто2 КАК СтатьяЗатрат,
        |    ХозрасчетныйОбороты.Подразделение,
        |    ХозрасчетныйОбороты.СуммаОборот КАК СуммаЗатрат
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Период, Счет В ИЕРАРХИИ(&Счет2003), , Организация = &Организация) КАК ХозрасчетныйОбороты
        |ИТОГИ
        |    СУММА(СуммаЗатрат)
        |ПО
        |    ОсновноеСредство";
    
    Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.Период));
    Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Объект.Период));
    Запрос.УстановитьПараметр("Счет2003", ПланыСчетов.Хозрасчетный.НайтиПоКоду("2003"));
    Запрос.УстановитьПараметр("Организация", Объект.Организация);
    Объект.Затраты = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьЗатраты(Команда)
    ЗаполнитьЗатратыНаСервере();
КонецПроцедуры


ошибка
{Форма.Форма.Форма(23)}: Ошибка при установке значения атрибута контекста (Затраты)
    Объект.Затраты = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
по причине:
Нельзя изменять поле, содержащее объект данных формы

Как обойти ее?
1 Timon1405
 
29.03.16
09:40
см. ДанныеФормыВЗначение
2 егаис
 
29.03.16
09:46
брр...
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ХозрасчетныйОбороты.Субконто1 КАК ОсновноеСредство,
        |    ХозрасчетныйОбороты.Субконто2 КАК СтатьяЗатрат,
        |    ХозрасчетныйОбороты.Подразделение,
        |    ХозрасчетныйОбороты.СуммаОборот КАК СуммаЗатрат
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Период, Счет В ИЕРАРХИИ(&Счет2003), , Организация = &Организация) КАК ХозрасчетныйОбороты
        |ИТОГИ
        |    СУММА(СуммаЗатрат)
        |ПО
        |    ОсновноеСредство";
    
    Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.Период));
    Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Объект.Период));
    Запрос.УстановитьПараметр("Счет2003", ПланыСчетов.Хозрасчетный.НайтиПоКоду("2003"));
    Запрос.УстановитьПараметр("Организация", Объект.Организация);
    
    Дерево = РеквизитФормыВЗначение("Затраты");
    Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    ЗначениеВРеквизитФормы(Дерево,"Затраты");    

{Форма.Форма.Форма(24)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
    Дерево = РеквизитФормыВЗначение("Затраты");
по причине:
Недопустимое значение параметра (параметр номер '1')

что не так?
3 Fedor-1971
 
29.03.16
09:49
(0) Пробуй так: Объект.Затраты.Загрузить(Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам));
Ты собрался просто так присвоить ТаблицуЗначений КоллекцииФормы?

(1)скорее наоборот, ЗначениеВДанныеФормы
4 егаис
 
29.03.16
09:53
Загрузить не работает, пробовал
5 Fedor-1971
 
29.03.16
09:54
(4) у тебя на форме расположен элемент "Дерево" или ТЧ с отображением Дерево?
6 егаис
 
29.03.16
09:55
(5) ТЧ с отображением Дерево
7 егаис
 
29.03.16
10:00
&НаСервере
Процедура ЗаполнитьЗатратыНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ХозрасчетныйОбороты.Субконто1 КАК ОсновноеСредство,
        |    ХозрасчетныйОбороты.Субконто2 КАК СтатьяЗатрат,
        |    ХозрасчетныйОбороты.Подразделение,
        |    ХозрасчетныйОбороты.СуммаОборот КАК СуммаЗатрат
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Период, Счет В ИЕРАРХИИ(&Счет2003), , Организация = &Организация) КАК ХозрасчетныйОбороты
        |ИТОГИ
        |    СУММА(СуммаЗатрат)
        |ПО
        |    ОсновноеСредство";
    
    Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.Период));
    Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Объект.Период));
    Запрос.УстановитьПараметр("Счет2003", ПланыСчетов.Хозрасчетный.НайтиПоКоду("26"));
    Запрос.УстановитьПараметр("Организация", Объект.Организация);
    
    Дерево = РеквизитФормыВЗначение("Объект.Затраты");
    Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    ЗначениеВРеквизитФормы(Дерево,"Объект.Затраты");    
    
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьЗатраты(Команда)
    ЗаполнитьЗатратыНаСервере();
КонецПроцедуры

не работает?
8 егаис
 
29.03.16
10:01
{Форма.Форма.Форма(26)}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
    ЗначениеВРеквизитФормы(Дерево,"Объект.Затраты");    
по причине:
Недопустимое значение параметра (параметр номер '2')
9 KulakoffAlex
 
29.03.16
10:07
Так попробуй ЗначениеВРеквизитФормы(Дерево,Затраты);
10 KulakoffAlex
 
29.03.16
10:08
вместо ЗначениеВРеквизитФормы() сделай ЗначениеВДанныеФормы()
11 Fedor-1971
 
29.03.16
10:09
(8) Вроде без Объект, просто Затраты.
Только в запросе нет группировок, как определить где родитель, а где просто запись?
12 егаис
 
29.03.16
10:14
(11) просто "Затраты" не работает
13 KulakoffAlex
 
29.03.16
10:23
ЗначениеВДанныеФормы() пробовал ?
14 егаис
 
29.03.16
10:24
(13) отказался от реквизита объекта.
Просто дерево на форме, работает на ура