Уважаемые форумчане, помогите с кодом
нужно из файла XML загрузить данные в регистр сведений,
в таблицу значений выгружает нормально, а вот напрямую в регистр сведений
не получается загрузить
С Уважением Дамир
нужно из файла XML загрузить данные в регистр сведений,
в таблицу значений выгружает нормально, а вот напрямую в регистр сведений
не получается загрузить
Перем ПрефиксБазы;
&НаКлиенте
Процедура Загрузить(Команда)
ПрефиксБазы = Строка(Команда.Имя);
Чтение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");
запись.Производитель = стр.Производитель;
НС.Записать();
КонецЦикла;
КонецПроцедуры
ПоказатьС Уважением Дамир
По теме из базы знаний
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Универсальные обработки документов, справочников, регистров, констант для 1С: Предприятие 8.3, управляемые формы
- Загрузка в 1С документов поступления из файла XML (ЭДО формат 820) для БП 3.0, УТ10/11, КА2.5, УПП1.3
- Выгрузка и загрузка данных XML адаптивная с гибкими отборами 2024
Найденные решения
&НаКлиенте
Процедура Загрузить(Команда)
ПрефиксБазы = Строка(Команда.Имя);
ИмяФайла = "D:\"+ПрефиксБазы+".xml"
ЗаполнитьНаСервере(ИмяФайла,ПрефиксБазы);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаСервере(ИмяФайла,ПрефиксБазы)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ПриходыXTDO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Если ТипЗнч(ПриходыXTDO.ТЧ) <> Тип("СписокXDTO") Тогда
СписокXTDOтч = Новый Массив;
СписокXTDOтч.Добавить(ПриходыXTDO.ТЧ);
Иначе
СписокXTDOтч = ПриходыXTDO.ТЧ;
КонецЕсли;
Для Каждого стр ИЗ СписокXTDOтч Цикл
НоваяЗапись = РегистрыСведений.Остатки.СоздатьМенеджерЗаписи();
НоваяЗапись.Префикс = ПрефиксБазы;
НоваяЗапись.Номенклатура = стр.Номенклатура;
НоваяЗапись.ОстатокТовара = Формат(стр.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0");
НоваяЗапись.Производитель = стр.Производитель;
НоваяЗапись.Записать(Истина);
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)НС.Записать(); надо после цикла писать, а не в цикле и все норм будет
&НаСервере
Процедура ЗаполнитьНаСервере(ТЗ)
НС = РегистрыСведений.Остатки.СоздатьНаборЗаписей();
Для Каждого стр из ТЗ цикл
запись = НС.Добавить();
запись.Префикс = ПрефиксБазы;
запись.Номенклатура = стр.Номенклатура;
запись.ОстатокТовара = Формат(стр.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0");
запись.Производитель = стр.Производитель;
КонецЦикла;
НС.Записать();
КонецПроцедуры
Показать
(7)https://its.1c.ru/db/metod8dev/content/2486/hdoc
Вот ссылка на ИТС, Записать после цикла и все норм должно быть. Какая ошибка вываливается?
Вот ссылка на ИТС, Записать после цикла и все норм должно быть. Какая ошибка вываливается?
&НаКлиенте
Процедура Загрузить(Команда)
ПрефиксБазы = Строка(Команда.Имя);
ИмяФайла = "D:\"+ПрефиксБазы+".xml"
ЗаполнитьНаСервере(ИмяФайла,ПрефиксБазы);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаСервере(ИмяФайла,ПрефиксБазы)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ПриходыXTDO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Если ТипЗнч(ПриходыXTDO.ТЧ) <> Тип("СписокXDTO") Тогда
СписокXTDOтч = Новый Массив;
СписокXTDOтч.Добавить(ПриходыXTDO.ТЧ);
Иначе
СписокXTDOтч = ПриходыXTDO.ТЧ;
КонецЕсли;
Для Каждого стр ИЗ СписокXTDOтч Цикл
НоваяЗапись = РегистрыСведений.Остатки.СоздатьМенеджерЗаписи();
НоваяЗапись.Префикс = ПрефиксБазы;
НоваяЗапись.Номенклатура = стр.Номенклатура;
НоваяЗапись.ОстатокТовара = Формат(стр.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0");
НоваяЗапись.Производитель = стр.Производитель;
НоваяЗапись.Записать(Истина);
КонецЦикла;
КонецПроцедуры
Показать
(9)
Спасибо все отработало как надо, только надо было добавить ОбновитьИнтерфейс() на клиенте
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ПриходыXTDO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Если ТипЗнч(ПриходыXTDO.ТЧ) <> Тип("СписокXDTO") Тогда
СписокXTDOтч = Новый Массив;
СписокXTDOтч.Добавить(ПриходыXTDO.ТЧ);
Иначе
СписокXTDOтч = ПриходыXTDO.ТЧ;
КонецЕсли;
Для Каждого стр ИЗ СписокXTDOтч Цикл
НоваяЗапись = РегистрыСведений.Остатки.СоздатьМенеджерЗаписи();
НоваяЗапись.Префикс = ПрефиксБазы;
НоваяЗапись.Номенклатура = стр.Номенклатура;
НоваяЗапись.ОстатокТовара = Формат(стр.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0");
НоваяЗапись.Производитель = стр.Производитель;
НоваяЗапись.Записать(Истина);
КонецЦикла;
ПоказатьЧтениеXML.ОткрытьФайл(ИмяФайла);
ПриходыXTDO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Если ТипЗнч(ПриходыXTDO.ТЧ) <> Тип("СписокXDTO") Тогда
СписокXTDOтч = Новый Массив;
СписокXTDOтч.Добавить(ПриходыXTDO.ТЧ);
Иначе
СписокXTDOтч = ПриходыXTDO.ТЧ;
КонецЕсли;
Для Каждого стр ИЗ СписокXTDOтч Цикл
НоваяЗапись = РегистрыСведений.Остатки.СоздатьМенеджерЗаписи();
НоваяЗапись.Префикс = ПрефиксБазы;
НоваяЗапись.Номенклатура = стр.Номенклатура;
НоваяЗапись.ОстатокТовара = Формат(стр.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0");
НоваяЗапись.Производитель = стр.Производитель;
НоваяЗапись.Записать(Истина);
КонецЦикла;
Спасибо все отработало как надо, только надо было добавить ОбновитьИнтерфейс() на клиенте
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот