Имя: Пароль:
1C
 
Создание дерева значения у документа с обработки
0 LivingStar
 
27.09.19
09:50
Есть документ. У него есть табличная часть.
На форме это дерево значений. Отображение дерево. Как мне создать в нем нужную структуру с обработки?

        НоваяДолжность        = ДокНормыВыдачиСИЗ.ЛичныеНормыВыдачи.Строки.Добавить();

Идет ошибка Поле объекта не обнаружено (Строки)
1 vicof
 
27.09.19
09:51
РеквизитФормыВЗначение
2 ale-sarin
 
27.09.19
10:06
Если ЛичныеНормыВыдачи - это табличная часть документа ДокНормыВыдачиСИЗ, то какие нахрен у нее Строки.
НоваяСтрокаТЧ = ДокНормыВыдачиСИЗ.ЛичныеНормыВыдачи.Добавить();
3 Веселый собака
 
27.09.19
10:13
(2) ну, дерево можно сохранить в хранилище значения, может неофит не знает.
4 ale-sarin
 
27.09.19
10:24
(3) Судя по (0) в документе есть ТЧ. На форме документа она отображается в виде ДереваЗначений. Автору из обработки надо заполнить ТЧ.
Я так понял.
5 Веселый собака
 
27.09.19
10:32
(4) правильно понял.
Но я видел как и в ТЧ сохраняют дерево- добавляют реквизит уровень в ТЧ и с бубном и танцами строят дерево, а потом обратно в тч с бубном..
6 ale-sarin
 
27.09.19
10:39
(5) Да много чего мы в жизни видели.
Но если ЛичныеНормыВыдачи это ТЧ, то у нее нет свойства Строки. О чем и выводится ошибка в (0).
И что бы добавить строку в ТЧ надо использовать ЛичныеНормыВыдачи.Добавить(). И неважно, какие у нее реквизиты-колонки.И неважно, собирается ли кто-то из этой ТЧ потом Дерево строить.
7 LivingStar
 
27.09.19
11:41
Если с загружаемых данных, повторяется значение первой ветки, как это правильно делать?

Я вот создаю первую ветку, Должность. Потом ветку под ней, СредстваИндивидуальнойЗащиты.
А как дальше????? Если некоторые элементы, нужно разместить под первой веткой?

А далее создавать новую первую. И так же элементы под ней?

        //СтрТЗ.Должность       // 4.
        НоваяДолжность        = ДокНормыВыдачиСИЗ.ЛичныеНормыВыдачи.Добавить();
        Если ЗначениеЗаполнено(СтрТЗ.Должность) Тогда
            НайденнаяДолжность = Справочники.Должности.НайтиПоНаименованию(СокрЛП(СтрТЗ.Должность), 1);
            Если Не НайденнаяДолжность = Справочники.Должности.ПустаяСсылка() Тогда
                НоваяДолжность.ДолжностьПрофессия = НайденнаяДолжность;
            Иначе
                СозданнаяДолжность                 = Справочники.Должности.СоздатьЭлемент();
                СозданнаяДолжность.Наименование = СокрЛП(СтрТЗ.Должность);
                СозданнаяДолжность.Записать();
                //
                НоваяДолжность.ДолжностьПрофессия = СозданнаяДолжность.Ссылка;
            КонецЕсли;
        КонецЕсли;
        //СтрТЗ.СредствоЗащиты  // 5.
        НайденноеСредствоЗащиты = Справочники.СредстваИндивидуальнойЗащиты.НайтиПоНаименованию(СокрЛП(СтрТЗ.СредствоЗащиты), 1);
        Если Не НайденноеСредствоЗащиты = Справочники.СредстваИндивидуальнойЗащиты.ПустаяСсылка() Тогда
            НоваяДолжность.СредствоЗащиты = НайденноеСредствоЗащиты;
        Иначе
             СозданноеСредствоЗащиты              = Справочники.СредстваИндивидуальнойЗащиты.СоздатьГруппу();
            СозданноеСредствоЗащиты.Наименование = СокрЛП(СтрТЗ.СредствоЗащиты);
            НайденнаяЕдИзм                       = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(СтрТЗ.ЕдИзм), 1);
            Если Не НайденнаяЕдИзм = Справочники.ЕдиницыИзмерения.ПустаяСсылка() Тогда
                СозданноеСредствоЗащиты.ЕдиницаИзмерения = НайденнаяЕдИзм;
            Иначе
                СозданнаяЕдИзм                    = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();                
                СозданнаяЕдИзм.Наименование       = СокрЛП(СтрТЗ.ЕдИзм);
                СозданнаяЕдИзм.НаименованиеПолное = СокрЛП(СтрТЗ.ЕдИзм);
                СозданнаяЕдИзм.Записать();
                //
                СозданноеСредствоЗащиты.ЕдиницаИзмерения = СозданнаяЕдИзм.Ссылка;
            КонецЕсли;
            СозданноеСредствоЗащиты.Класс = Перечисления.КлассыСИЗ.ОдеждаСпециальнаяЗащитная;
            СозданноеСредствоЗащиты.Записать();
            //
            НоваяДолжность.СредствоЗащиты = СозданноеСредствоЗащиты.Ссылка;
        КонецЕсли;
8 Веселый собака
 
27.09.19
11:52
Убил бы за такое создание новой должности.
Пусть выбирают из штатного, с заполненными окладами, системами оплат и т.п.
А тут кадровик безмозглый взял и создал, ага.
9 LivingStar
 
27.09.19
12:05
Кажется, вот это помогло,

        НоваяДолжность        = ДокНормыВыдачиСИЗ.ЛичныеНормыВыдачи.Добавить();
        Если ЗначениеЗаполнено(СтрТЗ.Должность) Тогда
            НайденнаяДолжность = Справочники.Должности.НайтиПоНаименованию(СокрЛП(СтрТЗ.Должность), 1);
            Если Не НайденнаяДолжность = Справочники.Должности.ПустаяСсылка() Тогда
                НоваяДолжность.ДолжностьПрофессия = НайденнаяДолжность;
            Иначе
                СозданнаяДолжность                 = Справочники.Должности.СоздатьЭлемент();
                СозданнаяДолжность.Наименование = СокрЛП(СтрТЗ.Должность);
                СозданнаяДолжность.Записать();
                //
                НоваяДолжность.ДолжностьПрофессия = СозданнаяДолжность.Ссылка;
            КонецЕсли;
            ТекущаяДолжность = НоваяДолжность.ДолжностьПрофессия;
        Иначе
            НоваяДолжность.ДолжностьПрофессия = ТекущаяДолжность;
        КонецЕсли;
        //
10 LivingStar
 
27.09.19
12:05
(8) Я не совсем понимаю чем сам занимаюсь.
Опираюсь на собственные мысли только.
Не делать не могу. Как то нужно что бы жить.