|
Как импортировать движения документа? | ☑ | ||
---|---|---|---|---|
0
Галахад
гуру
12.06.14
✎
11:22
|
Есть две базы. Одна копия другой. Т.е. объекты идентичны.
Хочу перенести движения по одному регистру одного вида документов из одной базы в другую. Обработку ВыгрузкаЗагрузкаДанныхXML использовать не хочу. Посоветуйте как можно сделать. Если бы мне нужно было перенести объект я сделал так: ЗаписьXML=Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл("c:\doc.xml"); ЗаписьXML.ЗаписатьНачалоЭлемента("Root"); ВыгружаемыйОбъект=Документ.ПолучитьОбъект(); ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.Закрыть(); А как движения переносят? |
|||
1
iHell
12.06.14
✎
11:25
|
(0) хм, провести ?
|
|||
2
Галахад
гуру
12.06.14
✎
11:27
|
(1) Это долго.
|
|||
3
Enders
12.06.14
✎
11:32
|
(0) Регистр накопления всегда подчинен регистратору, так что документы делающие движения по этому регистру надо будет всё равно переносить.
Так что переносишь документы, проводишь, профит. |
|||
4
Галахад
гуру
12.06.14
✎
11:38
|
(3) Объекты (документы) уже есть. Мне нужны движения по одному из регистров.
|
|||
5
shuhard
12.06.14
✎
11:39
|
(4) значит тебе нужно выгрузить в xml набор записей Рг с отбором по регистратору - разве это не очевидно ?
|
|||
6
shuhard
12.06.14
✎
11:40
|
(5) +1
Доступность: Сервер, толстый клиент, внешнее соединение. Данный объект может быть сериализован в/из XML. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/enterprise/current-config}. Имя типа XDTO: AccumulationRegisterRecordSet. |
|||
7
dj_serega
12.06.14
✎
11:41
|
(5) с отбором по регистраторам :)
|
|||
8
shuhard
12.06.14
✎
11:46
|
(7) ну это не важно
переберёт ли ТС все документы или все регистраторы в движухах Рг файлик то будет тот же самый |
|||
9
Stolen Dime
12.06.14
✎
11:54
|
(0)переносил как то движения по вводу остатков чтобы каждый раз документы не тягать.
Может пригодится Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ОперацияБух.Ссылка |ИЗ | Документ.ОперацияБух КАК ОперацияБух |ГДЕ | ОперацияБух.Комментарий ПОДОБНО ""%Сформирован обработкой свертки базы%"" | И ОперацияБух.Дата >= &Нач2014 И &Пар1 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Кор.Ссылка |ИЗ | Документ.КорректировкаЗаписейРегистров КАК Кор |ГДЕ | Кор.Комментарий ПОДОБНО ""%Сформирован обработкой свертки базы%"" | И Кор.Дата >= &Нач2014 И &Пар2"; Запрос.УстановитьПараметр("Нач2014",'20140101000000'); Если НЕ ЗначениеЗаполнено(Фильтр) Тогда Запрос.Текст=СтрЗаменить(Запрос.Текст," И &Пар1",""); Запрос.Текст=СтрЗаменить(Запрос.Текст," И &Пар2",""); Иначе Запрос.Текст=СтрЗаменить(Запрос.Текст," И &Пар1"," И ОперацияБух.Ссылка=&Фильтр"); Запрос.Текст=СтрЗаменить(Запрос.Текст," И &Пар2"," И Кор.Ссылка=&Фильтр"); Запрос.УстановитьПараметр("Фильтр",Фильтр); КонецЕсли; тРез=Запрос.Выполнить().Выгрузить(); тДанные.Колонки.Очистить(); тДанные.Колонки.Добавить("Док"); тДанные.Колонки.Добавить("тНабор"); тШаблон=Новый ТаблицаЗначений; тШаблон.Колонки.Добавить("Имя"); тШаблон.Колонки.Добавить("ПолноеИмя"); тШаблон.Колонки.Добавить("тДвижения"); //Возврат; Для каждого Стр Из тРез Цикл Нов=тДанные.Добавить(); Нов.Док=Стр.Ссылка; Нов.тНабор=тШаблон.Скопировать(); ОБ=Стр.Ссылка.ПолучитьОбъект(); Для каждого Дв Из Об.Движения Цикл Имя=Дв.Метаданные().Имя; ПолноеИмя=дв.Метаданные().ПолноеИмя(); Если Найти(ПолноеИмя,"РегистрНакопления")>0 Тогда Набор=РегистрыНакопления[Имя].СоздатьНаборЗаписей(); ИначеЕсли Найти(ПолноеИмя,"РегистрСведений")>0 Тогда Набор=РегистрыСведений[Имя].СоздатьНаборЗаписей(); ИначеЕсли Найти(ПолноеИмя,"РегистрБухгалтерии")>0 Тогда Набор=РегистрыБухгалтерии[Имя].СоздатьНаборЗаписей(); КонецЕсли; Набор.Отбор.Регистратор.Установить(Стр.Ссылка); Набор.Прочитать(); Если Набор.количество()>0 Тогда НовНабор=Нов.тНабор.Добавить(); НовНабор.ИМя=Имя; НовНабор.ПолноеИмя=ПолноеИмя; НовНабор.тДвижения=Набор.Выгрузить(); Сообщить(""+Стр.Ссылка+".Выгружено("+ПолноеИмя+") "+Набор.количество()); КонецЕсли; КонецЦикла; КонецЦикла; ЭлементыФормы.тДанные.СоздатьКолонки(); ЗначениеВФайл(ПутьКФайлу,тДанные); Сообщить("Записано в "+ПутьКФайлу); |
|||
10
Stolen Dime
12.06.14
✎
11:54
|
+только документы в базе приемнике уже должны быть.А то быитые ссылки вместо регистраторов получишь
|
|||
11
Галахад
гуру
12.06.14
✎
11:55
|
Всем спасибо. Так написал:
ИмяФайла = КаталогВременныхФайлов() + "doc.xml"; ЗаписьXML=Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл(ИмяФайла); ЗаписьXML.ЗаписатьНачалоЭлемента("Root"); Для каждого НаборЗаписей Из СсылкаНаОбъект.ПолучитьОбъект().Движения Цикл Если ТипЗнч(НаборЗаписей) = Тип("РегистрНакопленияНаборЗаписей.ТоварыВРознице") ИЛИ ТипЗнч(НаборЗаписей) = Тип("РегистрНакопленияНаборЗаписей.ТоварыНаСкладах") Тогда НаборЗаписей.Прочитать(); ЗаписатьXML(ЗаписьXML,НаборЗаписей); КонецЕсли; КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.Закрыть(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |