Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Несоответствие типов (параметр номер '1')

Несоответствие типов (параметр номер '1')
Я
   Марочка98
 
02.07.18 - 10:29
Здравствуйте, помогите пожалуйста с проблемой.
У меня внешняя обработка, загрузка xml файла в дерево значений, и выдает ошибку {Обработка.Обработка1.Форма.Форма.Форма(37)}: Ошибка при вызове метода контекста (УстановитьСтроку)
   Чтение.УстановитьСтроку(ТекстXML);
по причине:
Несоответствие типов (параметр номер '1')
Что нужно сделать?? Я начинающий программист в 1с, и поэтому не очень сильна  в этом.

Вот полностью мой код модуля.

&НаКлиенте
Процедура Файл(Команда)
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выбор документа";
   Диалог.Фильтр = "Документы XML (*.xml, *.xdr, *.xsd, *.xsl)|*.xml;*.xdr;*.xsd;*.xsl|Все файлы|*.*|";
   Если Диалог.Выбрать() Тогда
      ТекстXML.Прочитать(Диалог.ПолноеИмяФайла);
      Документ  = ТекстXML.ПолучитьТекст();
      Заголовок = "Просмотр XML-документа: " + Диалог.ПолноеИмяФайла;
      

   КонецЕсли;
                  
КонецПроцедуры



&НаКлиенте
Процедура КнИмпорт(Команда)
Если НЕ ПустаяСтрока(ТекстXML) Тогда
            Дерево = Импорт1();
            
            

      Если Объект.Дерево.Строки.Количество() > 0 Тогда
         ЭлементДерево = ТекстXML.Объект.Дерево;
         ЭлементДерево.СоздатьКолонки();
         ЭлементДерево.Колонки.Удалить(ЭлементДерево.Колонки["Атрибуты"]);
         
      КонецЕсли;
   КонецЕсли;
КонецПроцедуры
&НаСервере
Функция Импорт1() Экспорт
   Чтение = Новый ЧтениеXML();
   Чтение.УстановитьСтроку(ТекстXML);
   ДеревоЗначений = Новый ДеревоЗначений();

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

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



&НаКлиенте
Процедура Дерево1ПриАктивизацииСтроки(Элемент)
   Объект.Атрибуты.Очистить();
   Данные = Элемент.ТекущиеДанные;
   Если Данные <> Неопределено Тогда
      АтрибутыДерева = Данные.Атрибуты;
      Если ТипЗнч(АтрибутыДерева) = Тип("Соответствие") Тогда
         Для каждого АтрибутДерева из АтрибутыДерева Цикл
            СтрокаТаблицы                  = Объект.Атрибуты.Добавить();
            СтрокаТаблицы.Атрибут          = АтрибутДерева.Ключ;
            СтрокаТаблицы.ЗначениеАтрибута = АтрибутДерева.Значение;
         КонецЦикла;
      КонецЕсли;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Дерево1Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   ОткрытьЗначение(ВыбраннаяСтрока.Текст);
КонецПроцедуры

&НаКлиенте
Процедура АтрибутыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
      ОткрытьЗначение(ВыбраннаяСтрока.ЗначениеАтрибута);

      
КонецПроцедуры


Процедура ОчиститьТаблицы() Экспорт
   Объект.Дерево.Строки.Очистить();
   Объект.Дерево.Колонки.Очистить();
   Объект.Атрибуты.Очистить();
КонецПроцедуры
 
 
   quest
 
1 - 02.07.18 - 10:35
смотри на значение ТекстXML. Должна быть строка.
   Марочка98
 
2 - 02.07.18 - 11:23
(1) я правильно понимаю что в табло надо смотреть?
   catena
 
4 - 02.07.18 - 11:36
Вот в этом куске ТекстXML для этой функции - вообще не знакомая личность. Их надо познакомить. Например, через параметр функции.

Функция Импорт1() Экспорт
   Чтение = Новый ЧтениеXML();
   Чтение.УстановитьСтроку(ТекстXML);
   Serg_1960
 
5 - 02.07.18 - 11:40
(2) Можно в табло, можно "Вычислить выражение"... или просто наведением курсора мыши на переменную - её значение будет показано.
"Отладка в 1С 8.3 на примерах"
https://www.youtube.com/watch?v=jbJ1B1r_b80
   Марочка98
 
7 - 02.07.18 - 11:42
(4) а можно поподробнее?
   Serg_1960
 
8 - 02.07.18 - 11:53
Поподробнее? :) Я выше ссылку давал - у автора есть видео о глобальных и локальных переменных; о параметрах функций и процедур...
   Serg_1960
 
Модератор
9 - 02.07.18 - 11:57
(офф) Марочка98 , заполните личную карточку (как минимум, поправьте графу "Пол") - с мужским полом как-то неудобно сочетаются "женские" окончания слов :)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует