Имя: Пароль:
1C
1С v8
Перенос документа из базы в базу по COM
0 suvolod
 
05.07.12
21:08
Подскажите, как правильнее это сделать?
Например, у меня есть два документа:
ТекДок = Документы.ПоступлениеТоваровИУслуг.НайтиПоКоду(..);
Док = ВнешнееСоединение.Документы.ПоступлениеТоваровИУслуг.СоздатьДокумент();

Через ЗаполнитьЗначенияСвойств(Док, ТекДок) получилось заполнить значния с простыми типами данных данных КратностьВзаиморасчетов, Суммадокумента и т.д.

Как упростить заполнение остальных реквизитов? Например, табличной части документа? Дело в том, что все справочники (Номенклатура, ЕдиницаИзмерения и проч.) у меня синхронизированы с com-базой (т.е. непосредственно в текущей базе их создать нельзя, и загружаются они исключительно через типовую обработку универсального обмена данными), различаются лишь документы, часть из которых и нужно перекинуть в com-базу.

Самый простой способ (но и самый трудоемкий) - искать в соответствия справочников в com-базе через НайтиПоКоду... но это столько прописывать... может, есть способ проще?
1 Живой Ископаемый
 
05.07.12
21:10
вторая база имеет такую же конфигурацию? данные там такие же? в смысле например справочник номенклатура там тоже справочник номенклатура, и элементы имею такие же уиды?
2 Живой Ископаемый
 
05.07.12
21:11
ага, увидел.. а синхринизированы они по УИДы, или по чертзнает чему?
Если первое, тогда прямой путь - XMLСтрока/XMLЗначение
3 suvolod
 
05.07.12
21:17
По уиду. Писал правила выгрузки в КД2, в качестве источника/приемника там была указана одна и та-же конфа.

А небольшой пример XMLСтрока/XMLЗначение - можно? Не могу сообразить что мне это даст
4 Живой Ископаемый
 
05.07.12
21:22
давай от обратного, покажи тот код, в который ты собрался вставлять код НайтиПоКоду
5 suvolod
 
05.07.12
21:23
сейчас.. минуту :)
6 suvolod
 
05.07.12
21:29
Док.Контрагент = ВнешнееСоединение.Документы.ПоступлениеТоваровИУслуг.НайтиПоКоду(ТекДок.Контрагент);

я попробовал твою наводку.. сделал так:

СтрЗначение = XMLСтрока(ТекДок.Контрагент);
Док.Контрагент=XMLЗначение("СправочникСсылка.Контрагенты", СтрЗначение);

..но этот код выдает ошибку
7 suvolod
 
05.07.12
21:29
.. прошу прощения, в первой строчке ТекДок.Контрагент.Код
8 Мимохожий Однако
 
05.07.12
21:30
Текст ошибки в студию
9 Живой Ископаемый
 
05.07.12
21:31
5 сек
10 suvolod
 
05.07.12
21:31
{Документ.ПоступлениеТоваровУслуг.Форма.XФормаДокумента.Форма(3548)}: Ошибка при вызове метода контекста (XMLЗначение)
   Док.Контрагент=XMLЗначение("СправочникСсылка.Контрагенты", СтрЗначение);
по причине:
Несоответствие типов (параметр номер '1')
11 Живой Ископаемый
 
05.07.12
21:31
2(7) капец, ну здрасьте.. кто ж так делает
12 suvolod
 
05.07.12
21:32
в табло Контрагент - это точно СправочникСсылка.Контрагенты (не объект)
13 suvolod
 
05.07.12
21:32
а как правильно ?
14 suvolod
 
05.07.12
21:36
получилось :)
15 suvolod
 
05.07.12
21:37
пропустил Тип. Правильно надо было так:

Док.Контрагент=XMLЗначение(Тип("СправочникСсылка.Контрагенты"), СтрЗначение);

Большое спасибо за наводку на XMLСтрока !
16 Живой Ископаемый
 
05.07.12
21:38
17 suvolod
 
05.07.12
21:42
ты прав конечно. писал на память, и забыл что при поиске по коду надо указывать дату для попадания в период поиска.

подскажи, я я могу так сериализовать всю табличную часть документа? Или надо перед этим надо сделать нечто вроде Тек.Товары.Выгрузить, сохранить / восстановить в xml, и только затем загружать?
18 Живой Ископаемый
 
05.07.12
21:46
Все сразу одним-двумя операторами - вряд ли, и хотя для ТЗ написано что она сериализуется (поэтому можно было бы выгрузить ТЧ в ТЗ и последнюю сериализовать), у меня не вышло ни разу, как ни пытался. Так что только по строкам...
Но с другой стороны - кто я такой чтобы это заявлять? такой же 1Сник... Попробуй, вдруг у тебя получится.
19 suvolod
 
05.07.12
21:47
спасибо :) буду пытаться.
20 suvolod
 
05.07.12
22:02
видимо ты прав. у меня не получилось даже сохранить выгруженную в ТЗ табличную часть.

ТЗ=ТекДок.Товары.Выгрузить();
СтрЗначение = XMLСтрока(ТЗ);

На второй строке платформа просто выдает ошибку "Ошибка преобразования данных XML"
21 Живой Ископаемый
 
05.07.12
22:13
вот-вот... Я пробовал создать даже тз с одной строкой, одной типизированной колонкой, в которой бы было например число 42, и получил тоже самое...
Но было бы круто, если бы у кого-то все-таки получилось бы
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.