Имя: Пароль:
1C
1С v8
помогите с загрузкой xml файла
,
0 Лелька23
 
28.03.17
08:07
мне нужно выгрузить данные табличной части из 1с платформа 8.3.5
названия выгружаются, а заполненные данные нет. помогите пожалуйста. Вот кусочек кода для выгрузки табличной части
таб = "ВЫБРАТЬ
           | Справ.";
    
     Для каждого ТЧ из Справочник.ТабличныеЧасти Цикл
          Файл.ЗаписатьНачалоЭлемента("ТабличнаяЧасть");
          Файл.ЗаписатьАтрибут("Имя", ТЧ.Имя);
          Файл.ЗаписатьАтрибут("Синоним", ТЧ.Синоним);
          Файл.ЗаписатьКонецЭлемента();
     КонецЦикла;      
        Для каждого Реквизит из ТЧ.Реквизиты Цикл
               Файл.ЗаписатьНачалоЭлемента("Реквизит");
               Файл.ЗаписатьАтрибут("Имя", Реквизит.Имя);
               Файл.ЗаписатьАтрибут("Синоним", Реквизит.Синоним);
               Файл.ЗаписатьКонецЭлемента();
               таб = таб + Реквизит.Имя + ", Справ.";
        КонецЦикла;
                   
      таб = Лев(таб,СтрДлина(таб)-8);
      таб = таб + " ИЗ
                  |    Справочник." +
                  Справочник +
                  " КАК Справ";
                  
      Запрос = Новый Запрос;
      Запрос.Текст = таб;
      РезультатЗапроса = Запрос.Выполнить();
    
      ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
      
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
              Для индекс = 0 по ВыборкаДетальныеЗаписи.Количество()- 1   Цикл

            Попытка
                Элемент =  ВыборкаДетальныеЗаписи.Получить(индекс);
             Исключение
            КонецПопытки;
                Если Элемент <> Неопределено Тогда
                  Знч = ТипЗнч(Элемент);
                     Если Знч = Тип("Строка") Тогда
                          Файл.ЗаписатьНачалоЭлемента("Реквизит");
                        Файл.ЗаписатьАтрибут(Реквизит.Имя, Элемент);
                          Файл.ЗаписатьКонецЭлемента();      
                     КонецЕсли;
                   КонецЕсли;
             КонецЦикла;

          КонецЦикла;
1 Лелька23
 
28.03.17
08:11
А ошибку выдает такую
{Обработка.об1.Форма.ФормаУправляемая.Форма(2031)}: Ошибка при вызове метода контекста (Выполнить)
      РезультатЗапроса = Запрос.Выполнить();
по причине:
{(2, 8)}: Поле не найдено "Справ.Организация"
Справ.<<?>>Организация, Справ.НачалоРаботы, Справ.ОкончаниеРаботы, Справ.Должность ИЗ
2 Lexey_
 
28.03.17
08:17
(1) что в тексте ошибки не понятно?
3 Неверный Параметр И
 
28.03.17
08:18
4 Неверный Параметр И
 
28.03.17
08:19
В профиле должно быть, а не на просторах
5 Лелька23
 
28.03.17
08:20
Мне не понятно, если бы знала как исправить не обращалась бы
6 Lexey_
 
28.03.17
08:21
(5) смотри итоговый текст запроса в отладчике
7 Лелька23
 
28.03.17
08:28
Смотрела уже, не понятно мне, запрос может как-то по другому сделать, но я не знаю(((
8 Lexey_
 
28.03.17
08:30
(7) сделай правильный запрос в конструкторе и сравни с тем, что формируется кодом
9 Лелька23
 
28.03.17
08:31
(8)до этого у меня был похожий запрос для реквизитов справочника, все выгружало нормально, а в табличной части не хочет работать похожий код
10 Лелька23
 
28.03.17
08:32
(4) лучше бы помог
11 Lexey_
 
28.03.17
08:35
(9) если это реквизиты шапки, а не тч, то пиши "Справ.Ссылка.Организация"
12 Йохохо
 
28.03.17
08:40
таб = "ВЫБРАТЬ
           | Справ.";
    
     Для каждого ТЧ из Справочник.ТабличныеЧасти Цикл
          Файл.ЗаписатьНачалоЭлемента("ТабличнаяЧасть");
          Файл.ЗаписатьАтрибут("Имя", ТЧ.Имя);
          Файл.ЗаписатьАтрибут("Синоним", ТЧ.Синоним);
          Файл.ЗаписатьКонецЭлемента(); //++ рано закрывать тч
     //++ КонецЦикла;      
        Для каждого Реквизит из ТЧ.Реквизиты Цикл
               Файл.ЗаписатьНачалоЭлемента("Реквизит");
               Файл.ЗаписатьАтрибут("Имя", Реквизит.Имя);
               Файл.ЗаписатьАтрибут("Синоним", Реквизит.Синоним);
               Файл.ЗаписатьКонецЭлемента();
               таб = таб + Реквизит.Имя + ", Справ.";
        КонецЦикла;
                    
      таб = Лев(таб,СтрДлина(таб)-8);
      таб = таб + " ИЗ
                  |    Справочник." +
                  Справочник + ТЧ.Имя + //++
                  " КАК Справ";
                  
      Запрос = Новый Запрос;
      Запрос.Текст = таб;
      РезультатЗапроса = Запрос.Выполнить();
КонецЦикла; //++
13 Лелька23
 
28.03.17
08:41
(11) Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СотрудникиТрудоваяДеятельность.Ссылка,
        |    СотрудникиТрудоваяДеятельность.НомерСтроки,
        |    СотрудникиТрудоваяДеятельность.Организация,
        |    СотрудникиТрудоваяДеятельность.НачалоРаботы,
        |    СотрудникиТрудоваяДеятельность.ОкончаниеРаботы,
        |    СотрудникиТрудоваяДеятельность.Должность
        |ИЗ
        |    Справочник.Сотрудники.ТрудоваяДеятельность КАК СотрудникиТрудоваяДеятельность";


Вот конструктор запроса, но мне надо чтоб он каждый реквизит табличной части выгружал,  вот не могу додуматься. а как додумалась выше, там с ошибками
14 Рэйв
 
28.03.17
08:43
(13)
|    СотрудникиТрудоваяДеятельность.Ссылка.Организация,
15 Лелька23
 
28.03.17
08:44
(12) {Обработка.об1.Форма.ФормаУправляемая.Форма(2037)}: Ошибка при вызове метода контекста (Выполнить)
      РезультатЗапроса = Запрос.Выполнить();
по причине:
{(3, 5)}: Таблица не найдена "Справочник.СотрудникиТрудоваяДеятельность"
<<?>>Справочник.СотрудникиТрудоваяДеятельность КАК Справ


Вот что выдает((
16 фросия
 
28.03.17
08:44
(13) посмотри отладчиком какой текст запроса получился в строке
запрос.текст = таб;
17 фросия
 
28.03.17
08:45
СотрудникиТрудоваяДеятельность
точки не хватает же!
18 Лелька23
 
28.03.17
08:50
(17) Да, исправила
Справочник + "." + ТЧ.Имя +//++
заработал запрос
19 Лелька23
 
28.03.17
08:50
(12) Да, исправила
Справочник + "." + ТЧ.Имя //++

заработал запрос
Спасибо за подсказку, точки не хватало)