Показано с 1 по 2 из 2
Древовидный режим
-
02.07.2018, 12:35 #1
- Регистрация
- 02.07.2018
- Сообщений
- 1
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Несоответствие типов (параметр номер '1')
Здравствуйте, помогите пожалуйста с проблемой.
У меня внешняя обработка, загрузка 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Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОткрытьЗначение(Выбранная� �трока.Текст);
КонецПроцедуры
&НаКлиенте
Процедура АтрибутыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОткрытьЗначение(Выбранная� �трока.ЗначениеАтрибута);
КонецПроцедуры
Процедура ОчиститьТаблицы() Экспорт
Объект.Дерево.Строки.Очист� �ть();
Объект.Дерево.Колонки.Очис� �ить();
Объект.Атрибуты.Очистить();
КонецПроцедуры
Похожие темы
-
вставить параметр в заголовок отчета
от Artemcreed в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3Ответов: 4Последнее сообщение: 23.11.2016, 11:46 -
Несоответствие макета и печати
от alexosv в разделе 1С - Предприятие 7.7Ответов: 1Последнее сообщение: 14.01.2014, 10:11 -
Не удается установить параметр на запрос
от pleasure в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3Ответов: 1Последнее сообщение: 05.12.2013, 15:10 -
Как сделать выбор приложений для неизвестных типов файлов в Windows эффективнее
от DEL в разделе Новости Microsoft WindowsОтветов: 0Последнее сообщение: 29.08.2011, 14:00
Социальные закладки