|
Несоответствие типов (параметр номер '1') | ☑ | ||
---|---|---|---|---|
0
Марочка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Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ОткрытьЗначение(ВыбраннаяСтрока.Текст); КонецПроцедуры &НаКлиенте Процедура АтрибутыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ОткрытьЗначение(ВыбраннаяСтрока.ЗначениеАтрибута); КонецПроцедуры Процедура ОчиститьТаблицы() Экспорт Объект.Дерево.Строки.Очистить(); Объект.Дерево.Колонки.Очистить(); Объект.Атрибуты.Очистить(); КонецПроцедуры |
|||
1
quest
02.07.18
✎
10:35
|
смотри на значение ТекстXML. Должна быть строка.
|
|||
2
Марочка98
02.07.18
✎
11:23
|
(1) я правильно понимаю что в табло надо смотреть?
|
|||
4
catena
02.07.18
✎
11:36
|
Вот в этом куске ТекстXML для этой функции - вообще не знакомая личность. Их надо познакомить. Например, через параметр функции.
Функция Импорт1() Экспорт Чтение = Новый ЧтениеXML(); Чтение.УстановитьСтроку(ТекстXML); |
|||
5
Serg_1960
02.07.18
✎
11:40
|
(2) Можно в табло, можно "Вычислить выражение"... или просто наведением курсора мыши на переменную - её значение будет показано.
"Отладка в 1С 8.3 на примерах" https://www.youtube.com/watch?v=jbJ1B1r_b80 |
|||
7
Марочка98
02.07.18
✎
11:42
|
(4) а можно поподробнее?
|
|||
8
Serg_1960
02.07.18
✎
11:53
|
Поподробнее? :) Я выше ссылку давал - у автора есть видео о глобальных и локальных переменных; о параметрах функций и процедур...
|
|||
9
Serg_1960
модератор
02.07.18
✎
11:57
|
(офф) Марочка98 , заполните личную карточку (как минимум, поправьте графу "Пол") - с мужским полом как-то неудобно сочетаются "женские" окончания слов :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |