Имя: Пароль:
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) Я не совсем понимаю чем сам занимаюсь.
Опираюсь на собственные мысли только.
Не делать не могу. Как то нужно что бы жить.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn