|
Возможна ли загрузка из XML в регистр сведений? | ☑ | ||
---|---|---|---|---|
0
9451523
27.08.20
✎
15:54
|
Привет всем, можете посоветовать
вот код который выгружает с хмл файла в таблизу значений &НаКлиенте Процедура Загрузить(Команда) ТЗ.Очистить(); ПрефиксБазы = Строка(Команда.Имя); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("D:\"+ПрефиксБазы+".xml"); ПриходыXTDO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); Если ТипЗнч(ПриходыXTDO.ТЧ) <> Тип("СписокXDTO") Тогда СписокXTDOтч = Новый Массив; СписокXTDOтч.Добавить(ПриходыXTDO.ТЧ); Иначе СписокXTDOтч = ПриходыXTDO.ТЧ; КонецЕсли; Для Каждого СтрокаXDTO ИЗ СписокXTDOтч Цикл НС = ТЗ.Добавить(); НС.Префикс = ПрефиксБазы; НС.Номенклатура = СтрокаXDTO.Номенклатура; НС.Производитель = СтрокаXDTO.Производитель; НС.ОстатокТовара = Формат(СтрокаXDTO.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0"); КонецЦикла; КонецПроцедуры все отрабатывает нормально, но можно ли вместо Таблицы значений, так как это ФабрикаXDTO использовать РегистрСведений ? |
|||
1
Волшебник
27.08.20
✎
15:54
|
Согласовано.
|
|||
2
9451523
27.08.20
✎
15:56
|
можете хотя бы примерно подсказать как? я пытался у меня не вышло
|
|||
3
9451523
27.08.20
✎
15:59
|
пытался так, очень долго выгружает , не пойдет
Перем ПрефиксБазы; &НаКлиенте Процедура Загрузить(Команда) ПрефиксБазы = Строка(Команда.Имя); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("D:\"+ПрефиксБазы+".xml"); ПриходыXTDO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); Если ТипЗнч(ПриходыXTDO.ТЧ) <> Тип("СписокXDTO") Тогда СписокXTDOтч = Новый Массив; СписокXTDOтч.Добавить(ПриходыXTDO.ТЧ); Иначе СписокXTDOтч = ПриходыXTDO.ТЧ; КонецЕсли; Для Каждого СтрокаXDTO ИЗ СписокXTDOтч Цикл НС = ТЗ.Добавить(); НС.Префикс = ПрефиксБазы; НС.Номенклатура = СтрокаXDTO.Номенклатура; НС.Производитель = СтрокаXDTO.Производитель; НС.ОстатокТовара = Формат(СтрокаXDTO.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0"); КонецЦикла; ЗаполнитьНаСервере(ТЗ); КонецПроцедуры &НаСервере Процедура ЗаполнитьНаСервере(ТЗ) НС = РегистрыСведений.Остатки.СоздатьНаборЗаписей(); Для Каждого стр из ТЗ цикл запись = нс.Добавить(); запись.Префикс = ПрефиксБазы; запись.Номенклатура = стр.Номенклатура; запись.ОстатокТовара = Формат(стр.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0"); запись.Производитель = стр.Производитель; НС.Записать(); КонецЦикла; КонецПроцедуры |
|||
4
Pahomich
27.08.20
✎
16:01
|
А загрузи из полученной ТЗ в регистр!
|
|||
5
lodger
27.08.20
✎
16:22
|
(3) примерно так, но надо поглядеть что там с СоздатьНаборЗаписей и НС.Записать();
&НаКлиенте Процедура Загрузить(Команда) ПрефиксБазы = Строка(Команда.Имя); ЗаполнитьНаСервере(ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные("D:\"+ПрефиксБазы+".xml"),ЭтаФорма.УникальныйИдентификатор)); конецпроедуры &НаСервере Процедура ЗаполнитьНаСервере(АдресВХ) ДД = ПолучитьИзВременногоХранилища(АдресВХ) НС = РегистрыСведений.Остатки.СоздатьНаборЗаписей(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьПоток(ДД.ОткрытьПотокДляЧтения()); ПриходыXTDO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); Если ТипЗнч(ПриходыXTDO.ТЧ) <> Тип("СписокXDTO") Тогда СписокXTDOтч = Новый Массив; СписокXTDOтч.Добавить(ПриходыXTDO.ТЧ); Иначе СписокXTDOтч = ПриходыXTDO.ТЧ; КонецЕсли; Для Каждого СтрокаXDTO ИЗ СписокXTDOтч Цикл НовС = НС.Добавить(); НовС.Префикс = ПрефиксБазы; НовС.Номенклатура = СтрокаXDTO.Номенклатура; НовС.Производитель = СтрокаXDTO.Производитель; НовС.ОстатокТовара = Формат(СтрокаXDTO.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0"); КонецЦикла; НС.Записать(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |