[РЕШЕНО] Получение элемента по индексу для значения не определено

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем web.num, 26 мар 2014.

  1. TopicStarter Overlay
    web.num
    Offline

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    918
    Симпатии:
    4
    Баллы:
    29
    МетаДок = Метаданные.Документы;

    ДеревоОбъект = Новый ДеревоЗначений;
    ДеревоОбъект.Колонки.Добавить("Документ", Новый ОписаниеТипов("Строка"));

    Для к1 = 0 По МетаДок.Количество() Цикл
    СтрокаВерхнегоУровня = ДеревоОбъект.Строки.Добавить();
    СтрокаВерхнегоУровня.Документ = МетаДок[к1].Имя;
    Для к2 = 0 По МетаДок[к1].Движения.Количество() Цикл
    СтрокаНижнегоУровня = СтрокаВерхнегоУровня.Строки.Добавить();
    СтрокаНижнегоУровня.Документ = МетаДок[к1].Движения[к2].Имя;
    КонецЦикла;
    КонецЦикла;

    Получение элемента по индексу для значения не определено
    СтрокаНижнегоУровня.Документ = МетаДок[к1].Движения[к2].Имя; Безымянный.JPG

    Почему такой косяк?
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Потому что нельзя по индексу обращаться к движениям, как к свойству объекта метаданных. )
    )) Сам не понял, что написал :)

    Короче, обратиться к коллекции движений по индексу ты можешь только если эту коллекцию ты получил из типа "ДокументОбъект" (ДокументОбъект.Движения), а не из метаданных (МетаданныеДокумента.Движения).
    web.num нравится это.
  3. TopicStarter Overlay
    web.num
    Offline

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    918
    Симпатии:
    4
    Баллы:
    29
    Спасибо Андрей! Вопрос закрыт!
    Код:
       
     ДеревоОбъект = Новый ДеревоЗначений;
        ДеревоОбъект.Колонки.Добавить("Документ", Новый ОписаниеТипов("Строка"));
       
        Для к1 = 0 По МетаДок.Количество()-1 Цикл
            СтрокаВерхнегоУровня = ДеревоОбъект.Строки.Добавить();
            СтрокаВерхнегоУровня.Документ = МетаДок[к1].Синоним + " (" + Строка(МетаДок[к1].Имя) + ")";
           
            Для к2 = 0 По МетаДок[к1].Движения.Количество()-1 Цикл
                СтрокаНижнегоУровня = СтрокаВерхнегоУровня.Строки.Добавить();
                нДок = Документы[МетаДок[к1].Имя].Выбрать();
                Если нДок.Следующий() = Ложь Тогда
                    нДок = Документы[МетаДок[к1].Имя].СоздатьДокумент();
                Иначе
                    нДок = нДок.Ссылка.ПолучитьОбъект();
                КонецЕсли;
                РегистрСтрока = Строка(нДок.Движения[к2]);
                Точка = Найти(РегистрСтрока,".");
                РегистрСтрока = Сред(РегистрСтрока, Точка + 1);
                СтрокаНижнегоУровня.Документ = РегистрСтрока;
            КонецЦикла;
        КонецЦикла;
    

Поделиться этой страницей