|
Сравнение двух объектов | ☑ | ||
---|---|---|---|---|
0
1CVERYGOOD
17.10.13
✎
13:12
|
Есть две предположительно одинаковые базы. Для достоверности нужно сравнить некоторые документы. Из одной базы выгрузил РТиУ в xml. Теперь в другой базе по читаю этот xml. По идентификатору нахожу соответствующий документ. А как перебрать и сравнить все реквизиты двух полученных объектов ?
|
|||
1
alexei366
17.10.13
✎
13:17
|
Метаданные().Реквизиты , СтандартныеРеквизиты, ТабличныеЧасти
|
|||
2
Maxus43
17.10.13
✎
13:17
|
да выгрузи тоже в файл и сравни 2 файла
|
|||
3
1CVERYGOOD
17.10.13
✎
13:22
|
(2) Так пробовал уже. Почему то некоторые реквизиты местами поменяны. Так то документы идут a файле один к одному. Вот если бы реквизиты не путались временами то можно было бы построчно сравнить.
|
|||
4
1CVERYGOOD
17.10.13
✎
13:24
|
А как получить значения Метаданные().Реквизиты для конкретного объекта ?
|
|||
5
Maxus43
17.10.13
✎
13:24
|
(3) конфигурации значит разные, состав реквизитов всмысле
|
|||
6
lopus
17.10.13
✎
13:26
|
ТвойОбъект.Метаданные().Реквизиты
|
|||
7
1CVERYGOOD
17.10.13
✎
13:31
|
Это список реквизитов. А где взять их значения?
|
|||
8
1CVERYGOOD
17.10.13
✎
13:37
|
Ответ:
НовыйОбъект1[НовыйОбъект1.Метаданные().Реквизиты.Получить(2).Имя] |
|||
9
Defender aka LINN
17.10.13
✎
13:39
|
(0) Через COM не проще? Ну и базы таки одинаковые, или нет?
|
|||
10
1CVERYGOOD
17.10.13
✎
13:43
|
Конфигурации одинаковые, только могут порядком элементов метаданных отличаться.
|
|||
11
Defender aka LINN
17.10.13
✎
13:50
|
(10) Это уже называется "Разные".
|
|||
12
1CVERYGOOD
17.10.13
✎
15:26
|
Через COM. Не получается перебирать реквизиты объектов другой базы. Их значение = COM объект. Только если жестко прописывать коды и тп.
Сервер = "192.168.0.1"; БазаДанных = "***********"; Пользователь = "************"; Пароль = "********"; V82 = Новый COMобъект("V82.ComConnector"); СтрокаПодключения = "srvr='" + СокрЛП(Сервер) + "'; ref='" + СокрЛП(БазаДанных) + "'; usr='" + СокрЛП(Пользователь) + "'; pwd='" + СокрЛП(Пароль) + "';"; БазаИсточник = V82.Connect(СтрокаПодключения); докРабочейБазы = БазаИсточник.Документы.РеализацияТоваровУслуг.Выбрать('20130101','20130331',,"Дата Возр, Номер Возр"); Пока докРабочейБазы.Следующий() Цикл докНовойБазы = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(докРабочейБазы.Number, докРабочейБазы.Date); Если докНовойБазы = Неопределено ИЛИ докНовойБазы = Документы.РеализацияТоваровУслуг.ПустаяСсылка() Тогда Сообщить("В новой базе нет: " + докНовойБазы); Продолжить; КонецЕсли; Для Каждого рекв из докНовойБазы.Метаданные().Реквизиты Цикл Если докРабочейБазы[рекв.имя] <> докНовойБазы[рекв.имя] Тогда Сообщить("!!!Отличие: " + Строка (докРабочейБазы) + " " +Строка ( докНовойБазы) + " " + Строка (рекв)); КонецЕсли; КонецЦикла; КонецЦикла; |
|||
13
Serg_1960
17.10.13
✎
15:32
|
(11) Одинаковые,но не идентичные :)
|
|||
14
Euguln
17.10.13
✎
15:38
|
Создай объект, заполни из xml, сравни со ссылкой существующего объекта.
|
|||
15
1dvd
17.10.13
✎
15:39
|
||||
16
Serg_1960
17.10.13
✎
15:40
|
(я так, только мимо пробегая) В типовом версионирование есть сравнение и выявление отличий версий(объектов).
|
|||
17
1CVERYGOOD
17.10.13
✎
15:47
|
(14) поскольку порядок реквизитов разный, метод ПрочитатьXML() выдает ошибку при чтении документа xml. Пробовал менять порядок в xml файле - работает.
|
|||
18
1CVERYGOOD
17.10.13
✎
15:47
|
(16) можно по подробнее ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |