Универсальное сопоставление двух баз различной структуры

Обработка сопоставляет объекты двух баз по указанным реквизитам.

Удобно использовать для распределенных баз, для баз, обменивающихся по правилам обмена.

Программист должен указать в таблице правила сопоставления и поиска документов обеих баз.

Образец файла сопоставления прилагается.

Обработка создает COM-подключение к сравниваемой базе и сопоставляет объекты.

На данные момент сопоставляются только документы.

Можно задавать ограничения на отбираемые объекты для сравнения – как по периоду так и по произвольному условию, написанному как выражение на языке 1с.

Пример файла правил:

Описание: Описание: \\127.0.0.1\Site\articles\down_compbase\rules.jpg

Пример результата сопоставления:

Описание: Описание: \\127.0.0.1\Site\articles\down_compbase\result.jpg

Розовым цветом отмечены различия в значениях реквизитов. При этом в первой строке ячейки выводится значение реквизита текущей базы, а во второй – значение реквизита сравниваемой базы.

В колонке «Существует» указывается степень сопоставления результата:

-        «!» - обозначает, что объекты сопоставлены, но есть различия в значениях реквизитов

-        «+» - обозначает, что объекты сопоставлены и значения указанных в правилах реквизитов совпадают

-        «Б» - обозначает, что объект есть только в сопоставляемой базе

-        «Т» - обозначает, что объект есть только в текущей базе

Непосредственно из отчета в колонке «Представление» можно открывать объекты текущей базы.

При завершении сопоставления открывается закладка «Результат» и выдается предупреждение пользователю.

Виды сравнения для правил:

-        «» - простое извлечение реквизита объекта, можно указывать сложный путь к реквизиту, например «ДокументОснованиеомер»

-        «Итог» - вычисляется итог по колонке табличной части, нужно указывать путь в виде «ИдентификаторТабличнойЧастимяСуммируемогоРеквизита»

При сопоставлении чисел они округляются до 2х знаков после запятой, т.к. при обмене числами через COM иногда происходит потеря значения, например, значение 1.02 передается как 1.0199999. Это особенность платформы 1С или COM.

На закладке «Поиск» указывается код для поиска элемента. Сначала выполняется код, и если элемент не найден, только тогда он ищется по описанному в правилах ключу.

Для обмена между типовыми конфигурациями удобно использовать поиск по регистру соответствий объектов, например:

ТекУзелОбмена = ПланыОбменабменУправлениеТорговлейБухгалтерия.НайтиПоНаименованию("…Имя обмен …");

ТекСсылкаВДругойИБ = БазаначениеВСтрокуВнутр(Объект);

З = Новый Запрос(

"ВЫБРАТЬ

|      СоответствиеОбъектовДляОбменаобственнаяСсылка

|ИЗ

|      РегистрСведенийоответствиеОбъектовДляОбмена КАК СоответствиеОбъектовДляОбмена

|ГДЕ

|      СоответствиеОбъектовДляОбменазелОбмена = &УзелОбмена

|      И СоответствиеОбъектовДляОбменасылкаВДругойИБ = &СсылкаВДругойИБ");

З.УстановитьПараметр("УзелОбмена", ТекУзелОбмена );

З.УстановитьПараметр("СсылкаВДругойИБ", ТекСсылкаВДругойИб );

ТекВыборка = З.Выполнить().Выбрать();

Если ТекВыборкаледующий() Тогда

  Р = ТекВыборкаобственнаяСсылка;

КонецЕсли;

 

//Сообщить(""+ База.String(Объект) + " " + ТекУзелОбмена + " : " + ТекСсылкаВДругойИБ + " : " + Р);

 

Скачать.