Столкнулся с проблемой выбора файлов в определенной папке. Погуглив наткнулся на статью //infostart.ru/public/155226/, но так как я только зарегестрировался, скачать это чудо у меня не вышло. Почитав СП нашел интересную функцию НайтиФайлы(). сел, подумал и написал своеобразный выход из ситуации. Были использованны две табличные части, две кнопки и 10 строчек кода.
Смысл моего алгоритма прост: берем конкретную папку и ищем в ней все файлы с расширением xml и записываем их в табличную часть. Потом указав галочкой нужный, парсим его во вторую табличную часть. все просто, а главное работает 🙂
Вот код:
&НаКлиенте
Процедура СозданиеПапки(Команда)
Объект.ДанныеОПути = «storagesdcard0data»; //»c:ss»;//
Для Каждого Элем из НайтиФайлы(Объект.ДанныеОПути,»*.xml») Цикл
ОбработкаСпискаВыбора(Элем.Имя);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбработкаСпискаВыбора(Имя)
ТЧ = Объект.Табличка.Добавить();
ТЧ.ИмяФайла = Объект.ДанныеОПути + Имя;
КонецПроцедуры
&НаКлиенте
Процедура ДругаяКоманда(Команда)
Для Каждого Стр из Объект.Табличка Цикл
Если Стр.Выбор = Истина Тогда
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(Стр.ИмяФайла);//(ПутьКФайлу);
// чтение осуществляется по одному тегу
Пока Чтение.Прочитать() Цикл
// анализируем тип элемента и его имя
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если Чтение.Имя=»tovar» Тогда
// создаем новый элемент
ТЧ = Объект.Данные.Добавить();
// читаем атрибуты
Пока Чтение.ПрочитатьАтрибут() Цикл
Если Чтение.Имя=»kod_tovar» Тогда
ТЧ.Код = Чтение.Значение;
ИначеЕсли Чтение.Имя = «naim_tovar» Тогда
ТЧ.Наименование = Чтение.Значение;
ИначеЕсли Чтение.Имя = «cena» Тогда
ТЧ.Цена = Чтение.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Надеюсь что это поможет кому-нибудь 🙂
вот эта строчка смущает Объект.ДанныеОПути = «storagesdcard0data»;
для какого устройства сделал?
вот если не поленился бы и универсальную написал бы для самых распространенных устройств вот за это спасибо и $m было бы.
(1) flyer, Писал под свой андроид, и эта строка пути была взята для тестирования.