Имя: Пароль:
1C
 
Загрузка запроса в дерево значения на форме для ввода данных
,
0 Tolstiy Beremenniy
 
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
Не четыре, шесть полей.
3 Tolstiy Beremenniy
 
02.10.18
13:26
(1) Точнее не текстовых а числовых.
Но остальные поля для отображения идут.
4 Tolstiy Beremenniy
 
02.10.18
13:26
Хотелось бы сам принцип узнать. Что бы начать делать.
5 НЕА123
 
02.10.18
13:37
6 НоваяВолна
 
02.10.18
13:42
(0) У тебя ДеревоКритериев - это что? Какой тип?
7 hhhh
 
02.10.18
14:03
(4) так конечно

ДеревоКритериев.Загрузить(Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией));


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

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


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



ДеревоКритериев, дерево значений!!!!!!! Все как в примере делаю, по подобию.
14 Tolstiy Beremenniy
 
02.10.18
18:21
(10) В обоих в каких?
15 Tolstiy Beremenniy
 
02.10.18
18:23
(10) Есть составные поля. Как сделать составное поле?
16 Tolstiy Beremenniy
 
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";
ЗначениеВРеквизитФормы(тДерево, "ДеревоКритериев");    
//
КонецПроцедуры
17 runoff_runoff
 
02.10.18
18:36
ЗначениеВДанныеФормы
18 Tolstiy Beremenniy
 
03.10.18
02:53
Ошибка эта не уходит. Скажите что посмотреть?

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



ЗначениеВДанныеФормы(тДерево, "ДеревоКритериев");    
по причине:
Несоответствие типов (параметр номер '1')
19 Tolstiy Beremenniy
 
03.10.18
02:54
Я же дерево беру. Заполняю и в его же возвращаю?
20 Tolstiy Beremenniy
 
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";

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

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

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

http://joxi.ru/n2YQ5GaTopoXL2


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

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

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

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

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

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

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

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

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

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

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




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

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

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

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

ЗначениеВРеквизитФормы(тДерево, "ДеревоКритериев");    
//
Элементы.ДеревоКритериев.Д
КонецПроцедуры
//


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