Вход | Регистрация



Загрузка запроса в дерево значения на форме для ввода данных

Загрузка запроса в дерево значения на форме для ввода данных
Я
   TolstiyBeremenniy
 
02.10.18 - 13:10
Никак не могу сдвинуться в решении задачи.
Есть документ,в него нужно из регистра сведений загрузить
дерево значений. Для ввода двух текстовых полей в удобочитаемой форме. Ранее не работал с деревом значений. Пробовал делать ввод.
Но сейчас нужно загрузить с регистра сведений.
Мыслей нет никаких.

Загрузить хочу вот такой запрос.

    Запрос       = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Должность КАК Должность,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Критерий КАК Критерий,
                   |    МАКСИМУМ(С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.КБалл) КАК КБалл,
                   |    МАКСИМУМ(С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.КДис) КАК КДис,
                   |    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование + ""\"" + С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Должность.Наименование КАК Сотрудник_Должность
                   |ИЗ
                   |    РегистрСведений.С05_КритерииОценкиКачестваРаботыСотрудников.СрезПоследних(
                   |            &Период,
                   |            Организация = &Организация
                   |                И Подразделение = &Подразделение
                   |                И РуководительЗаполняющийБаллы = &Руководитель) КАК С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
                   |        ПО С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Организация = КадроваяИсторияСотрудниковСрезПоследних.Организация
                   |            И С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Подразделение = КадроваяИсторияСотрудниковСрезПоследних.Подразделение
                   |            И С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Период = КадроваяИсторияСотрудниковСрезПоследних.Период
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Должность,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Критерий,
                   |    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование + ""\"" + С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Должность.Наименование
                   |ИТОГИ
                   |    СУММА(КБалл),
                   |    СУММА(КДис)
                   |ПО
                   |    Сотрудник,
                   |    Должность,
                   |    Критерий,
                   |    Сотрудник_Должность";
    Запрос.УстановитьПараметр("Период",        Объект.Период);
    Запрос.УстановитьПараметр("Организация",   Объект.Организация);
    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
    Запрос.УстановитьПараметр("Руководитель",  Объект.РуководительЗаполняющийБаллы);
    Результат = Запрос.Выполнить(); 
    ДеревоК = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    ЗначениеВРеквизитФормы(ДеревоК, "ДеревоКритериев");



Пока идет ошибка, -

{Документ.С05_СправкаПоПоказателямПремирования.Форма.ФормаДокумента.Форма(398)}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
    ЗначениеВРеквизитФормы(ДеревоК, "ДеревоКритериев");
по причине:
Недопустимое значение параметра (параметр номер '2')
Недопустимое значение параметра (параметр номер '2')
 
 
   Ботаник Гарден Меран
 
1 - 02.10.18 - 13:19
[Для ввода двух текстовых полей.]
Двух, а в запросе четыре поля.
   Ботаник Гарден Меран
 
2 - 02.10.18 - 13:19
Не четыре, шесть полей.
   TolstiyBeremenniy
 
3 - 02.10.18 - 13:26
(1) Точнее не текстовых а числовых.
Но остальные поля для отображения идут.
   TolstiyBeremenniy
 
4 - 02.10.18 - 13:26
Хотелось бы сам принцип узнать. Что бы начать делать.
   НЕА123
 
5 - 02.10.18 - 13:37
   НоваяВолна
 
6 - 02.10.18 - 13:42
(0) У тебя ДеревоКритериев - это что? Какой тип?
   hhhh
 
7 - 02.10.18 - 14:03
(4) так конечно
ДеревоКритериев.Загрузить(Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией));


Эти все ДеревоК и Значения в какие-то реквизиты выкинь нахрен - это каменный век.
   aleks_default
 
8 - 02.10.18 - 14:08
(7)нет такого метода у дерева
   TolstiyBeremenniy
 
9 - 02.10.18 - 14:16
(6) Дерево значений
   hhhh
 
10 - 02.10.18 - 14:34
(9) ну, типы колонок один в один совпадают в обоих деревьях?
 
 Рекламное место пустует
   НЕА123
 
11 - 02.10.18 - 14:36
(10)
неа, не совпадают. факт.
ПС
ТС уже 9 месяцев переходил... не родит никак.
   TolstiyBeremenniy
 
12 - 02.10.18 - 17:11
А подскажите как правильно заполнять дерево значений.
Перебором выборки запроса?
   TolstiyBeremenniy
 
13 - 02.10.18 - 18:18
Почему такая ошибка?
ЗначениеВРеквизитФормы(тДерево, "ДеревоКритериев");    


{Документ.С05_СправкаПоПоказателямПремирования.Форма.ФормаДокументаДЗИзРС.Форма(471)}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
ЗначениеВРеквизитФормы(тДерево, "ДеревоКритериев");    
по причине:
Недопустимое значение параметра (параметр номер '2')
Недопустимое значение параметра (параметр номер '2')



ДеревоКритериев, дерево значений!!!!!!! Все как в примере делаю, по подобию.
   TolstiyBeremenniy
 
14 - 02.10.18 - 18:21
(10) В обоих в каких?
   TolstiyBeremenniy
 
15 - 02.10.18 - 18:23
(10) Есть составные поля. Как сделать составное поле?
   TolstiyBeremenniy
 
16 - 02.10.18 - 18:26
Заполняю вот так. Подскажите пожалуйста!!!! Что поправить?


    Запрос.Текст = "ВЫБРАТЬ
                   |    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Должность КАК Должность,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Критерий КАК Критерий,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.КБалл КАК КБалл,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.КДис КАК КДис,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Организация КАК Организация,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Подразделение КАК Подразделение,
                   |    С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.РуководительЗаполняющийБаллы КАК РуководительЗаполняющийБаллы
                   |ИЗ
                   |    РегистрСведений.С05_КритерииОценкиКачестваРаботыСотрудников.СрезПоследних(
                   |            ,
                   |            Подразделение = &Подразделение
                   |                И Организация = &Организация) КАК С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
                   |        ПО С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Организация = КадроваяИсторияСотрудниковСрезПоследних.Организация
                   |            И С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Подразделение = КадроваяИсторияСотрудниковСрезПоследних.Подразделение
                   |            И С05_КритерииОценкиКачестваРаботыСотрудниковСрезПоследних.Должность = КадроваяИсторияСотрудниковСрезПоследних.Должность
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование";
    //Запрос.УстановитьПараметр("Период",        Объект.Период);

    Запрос.УстановитьПараметр("Организация",   Объект.Организация);
    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
    //Запрос.УстановитьПараметр("Руководитель",  Объект.РуководительЗаполняющийБаллы);

    Рез = Запрос.Выполнить(); 
    //

    ТекСотр = "";
    Если Не Рез.Пустой() Тогда
        тДерево = РеквизитФормыВЗначение("ДеревоКритериев");
        Выборка = Рез.Выбрать();
        ТекСотр = "";
        Пока Выборка.Следующий() Цикл
            Если ТекСотр = "" или ТекСотр <> Выборка.Сотрудник Тогда
                нСтр1                               = тДерево.Строки.Добавить();
                нСтр1.СтрСотрудникДолжностьКритерий = Выборка.Должность.Наименование +"-"+ Выборка.Сотрудник.Наименование;
                нСтр1.КбаллМакс                     = Выборка.КБалл;
                нСтр1.КбаллФакт                     = 0;
                нСтр1.КдисМакс                      = Выборка.КДис;
                нСтр1.КдисФакт                      = 0;
                нСтр1.ЭтоСотрудник                  = Истина;
                нСтр1.Сотрудник                     = Выборка.Сотрудник;
                нСтр1.Должность                     = Выборка.Должность;
                //

                нСтр2                               = нСтр1.Строки.Добавить();
                нСтр2.СтрСотрудникДолжностьКритерий = Выборка.Критерий;
                нСтр2.ЭтоСотрудник                  = Ложь;
                нСтр2.КбаллМакс                     = Выборка.КБалл;
                нСтр2.КбаллФакт                     = 0;
                нСтр2.КдисМакс                      = Выборка.КДис;
                нСтр2.КдисФакт                      = 0;
                //

            ИначеЕсли ТекСотр = Выборка.Сотрудник Тогда
                //

                нСтр2                               = нСтр1.Строки.Добавить();
                нСтр2.СтрСотрудникДолжностьКритерий = Выборка.Критерий;
                нСтр2.ЭтоСотрудник                  = Ложь;
                нСтр2.КбаллМакс                     = Выборка.КБалл;
                нСтр2.КбаллФакт                     = 0;
                нСтр2.КдисМакс                      = Выборка.КДис;
                нСтр2.КдисФакт                      = 0;
                //

                //нСтр1.Колонка1 = "Колонка 1";

                //нСтр1.Колонка2 = "Колонка 2";

                //

                //нСтр2 = нСтр1.Строки.Добавить();

                //нСтр2.Колонка1 = "Колонка 1";

                //нСтр2.Колонка2 = "Колонка 2";

            КонецЕсли;
            ТекСотр = Выборка.Сотрудник;
        КонецЦикла;
    КонецЕсли;
//нСтр3 = нСтр2.Строки.Добавить();

//нСтр3.Колонка1 = "Колонка 1";
//нСтр3.Колонка2 = "Колонка 2";

//
//нСтр4 = нСтр3.Родитель.Родитель.Строки.Добавить();

//нСтр4.Колонка1 = "Колонка 1";
//нСтр4.Колонка2 = "Колонка 2"; 

ЗначениеВРеквизитФормы(тДерево, "ДеревоКритериев");    
//

КонецПроцедуры
   runoff_runoff
 
17 - 02.10.18 - 18:36
ЗначениеВДанныеФормы
   TolstiyBeremenniy
 
18 - 03.10.18 - 02:53
Ошибка эта не уходит. Скажите что посмотреть?
ЗначениеВДанныеФормы(тДерево, "ДеревоКритериев");    



ЗначениеВДанныеФормы(тДерево, "ДеревоКритериев");    
по причине:
Несоответствие типов (параметр номер '1')
   TolstiyBeremenniy
 
19 - 03.10.18 - 02:54
Я же дерево беру. Заполняю и в его же возвращаю?
   TolstiyBeremenniy
 
20 - 03.10.18 - 02:54
тДерево = РеквизитФормыВЗначение("ДеревоКритериев");
        Выборка = Рез.Выбрать();
        ТекСотр = "";
        Пока Выборка.Следующий() Цикл
            Если ТекСотр = "" или ТекСотр <> Выборка.Сотрудник Тогда
                нСтр1                               = тДерево.Строки.Добавить();
                нСтр1.СтрСотрудникДолжностьКритерий = Выборка.Должность.Наименование +"-"+ Выборка.Сотрудник.Наименование;
                нСтр1.КбаллМакс                     = Выборка.КБалл;
                нСтр1.КбаллФакт                     = 0;
                нСтр1.КдисМакс                      = Выборка.КДис;
                нСтр1.КдисФакт                      = 0;
                нСтр1.ЭтоСотрудник                  = Истина;
                нСтр1.Сотрудник                     = Выборка.Сотрудник;
                нСтр1.Должность                     = Выборка.Должность;
                //


                нСтр2                               = нСтр1.Строки.Добавить();
                нСтр2.СтрСотрудникДолжностьКритерий = Выборка.Критерий;
                нСтр2.ЭтоСотрудник                  = Ложь;
                нСтр2.КбаллМакс                     = Выборка.КБалл;
                нСтр2.КбаллФакт                     = 0;
                нСтр2.КдисМакс                      = Выборка.КДис;
                нСтр2.КдисФакт                      = 0;
                //


            ИначеЕсли ТекСотр = Выборка.Сотрудник Тогда
                //


                нСтр2                               = нСтр1.Строки.Добавить();
                нСтр2.СтрСотрудникДолжностьКритерий = Выборка.Критерий;
                нСтр2.ЭтоСотрудник                  = Ложь;
                нСтр2.КбаллМакс                     = Выборка.КБалл;
                нСтр2.КбаллФакт                     = 0;
                нСтр2.КдисМакс                      = Выборка.КДис;
                нСтр2.КдисФакт                      = 0;
                //


                //нСтр1.Колонка1 = "Колонка 1";


                //нСтр1.Колонка2 = "Колонка 2";


                //


                //нСтр2 = нСтр1.Строки.Добавить();


                //нСтр2.Колонка1 = "Колонка 1";


                //нСтр2.Колонка2 = "Колонка 2";


            КонецЕсли;
            ТекСотр = Выборка.Сотрудник;
        КонецЦикла;
    КонецЕсли;
//нСтр3 = нСтр2.Строки.Добавить();


//нСтр3.Колонка1 = "Колонка 1";

//нСтр3.Колонка2 = "Колонка 2";

//

//нСтр4 = нСтр3.Родитель.Родитель.Строки.Добавить();

//нСтр4.Колонка1 = "Колонка 1";

//нСтр4.Колонка2 = "Колонка 2"; 

ЗначениеВРеквизитФормы(тДерево, "ДеревоКритериев");
   TolstiyBeremenniy
 
21 - 03.10.18 - 03:15
На вот этой строке ЗначениеВДанныеФормы(тДерево, "ДеревоКритериев");

У меня в тДерево - Дерево из 5 строк, по 2 подстроки в каждой ветке.

Но выходит ошибка (18).
   TolstiyBeremenniy
 
22 - 03.10.18 - 03:42
Подскажите пожалуйста в чем дело?
Я сверил, типы все те же, поля все те же.

http://joxi.ru/n2YQ5GaTopoXL2


Но продолжается ошибка, - ЗначениеВДанныеФормы(тДерево, "ДеревоКритериев");    
по причине:
Несоответствие типов (параметр номер '2')
   TolstiyBeremenniy
 
23 - 03.10.18 - 03:56
У дерева значений есть поля, типа:

КбаллМакс число 1.0
КбаллФакт число 1.0
КдисМакс число 1.1
КдисФакт число 1.1

Может в них дело? Иначе в чем? Подскажите пожалуйста, я все сверил!!!!!

Что нужно проверить? Что можно поправить?
   TolstiyBeremenniy
 
24 - 03.10.18 - 04:02
Заполнилось! Я Сделал видимыми все поля!!!!!!!
Получается, если у полей видимость ложь, то уже будет идти ошибка что в (22) ?
   TolstiyBeremenniy
 
25 - 03.10.18 - 04:22
Мда!!!! Поддержать разговором некомупо очевидной теме!!!!
   hhhh
 
26 - 03.10.18 - 04:32
(25) на часы-то смотрел? Кто это будет поддерживать разговор в 4ч утра? Все спят давно.
   TolstiyBeremenniy
 
27 - 03.10.18 - 04:57
(26) Но вы можете подсказать как это сделать?
Я в дерево вывожу строку "Должность-Сотрудник"
Но сами ссылки нужны. Но на форме нет. Я их сделал невидимыми, что из за этого ошибка идет (22) ?
   catena
 
28 - 03.10.18 - 06:40
Глобальный контекст (Global context)
ЗначениеВДанныеФормы (ValueToFormData)
Синтаксис:

ЗначениеВДанныеФормы(<Значение>, <Объект>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Значение прикладного типа, для которого определено преобразование в данные формы. 
<Объект> (обязательный)

Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура. 
Данные формы, имеющие совместимую структуру.
Описание:

Преобразует объект прикладного типа в универсальный объект данных.

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

Сервер, толстый клиент, мобильное приложение(сервер).




По-моему, "ДеревоКритериев" не входит в Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура.
   TolstiyBeremenniy
 
29 - 03.10.18 - 08:12
   TolstiyBeremenniy
 
30 - 03.10.18 - 08:13
   Лодырь
 
31 - 03.10.18 - 08:18
Использовать всегда указано у этих колонок?
   catena
 
32 - 03.10.18 - 08:54
(30)И чо? "ДеревоКритериев" - это все равно строка, а не коллекция.
   TolstiyBeremenniy
 
33 - 03.10.18 - 09:07
(31) А где такой флаг или параметр у них?

(32) http://joxi.ru/VrwBl18cOd7dgA
 
 
   hhhh
 
34 - 03.10.18 - 09:31
(33) справа огромная колонка у тебя на рисунке "Использовать всегда". Ты уже ослеп, всё работаешь по ночам.
   TolstiyBeremenniy
 
35 - 03.10.18 - 10:04
(34) Вижу. То есть если там убрать галки то
это не будет влиять на то что колонки эти будут заполняться
но выводить их в тч дерева значений не нужно?

Как с этим будет?
   hhhh
 
36 - 03.10.18 - 10:13
(35) попробуй волшебную строчку в конце вставить.

Элементы.ДеревоКритериевКритерий.Видимость = Ложь;
   TolstiyBeremenniy
 
37 - 03.10.18 - 10:55
(36) Подскажите пожалуйста , а где именно?
   hhhh
 
38 - 03.10.18 - 11:25
(37) в конце
   TolstiyBeremenniy
 
39 - 03.10.18 - 11:48
(38) Я вот ищу но не вижу там полей табличной части вообще.

ЗначениеВРеквизитФормы(тДерево, "ДеревоКритериев");    
//

Элементы.ДеревоКритериев.Д
КонецПроцедуры
//



Куда то ваш пример удалился, от сюда.
   TolstiyBeremenniy
 
40 - 03.10.18 - 11:52
Сейчас задача избавиться от лишних колонок у дерева значений.
Галками использовать всегда, начал пробовать.
Но вот видимостью как?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует