Обработка сопоставляет
объекты двух баз по указанным реквизитам.
Удобно использовать для
распределенных баз, для баз, обменивающихся по правилам обмена.
Программист должен
указать в таблице правила сопоставления и поиска документов обеих баз.
Образец файла
сопоставления прилагается.
Обработка создает COM-подключение к
сравниваемой базе и сопоставляет объекты.
На данные момент
сопоставляются только документы.
Можно задавать ограничения
на отбираемые объекты для сравнения – как по периоду
так и по произвольному условию, написанному как выражение на языке 1с.
Пример файла правил:
Пример результата сопоставления:
Розовым цветом отмечены различия
в значениях реквизитов. При этом в первой строке ячейки выводится значение
реквизита текущей базы, а во второй – значение реквизита сравниваемой базы.
В колонке «Существует» указывается степень
сопоставления результата:
-
«!» -
обозначает, что объекты сопоставлены, но есть различия в значениях реквизитов
-
«+» -
обозначает, что объекты сопоставлены и значения
указанных в правилах реквизитов совпадают
-
«Б» -
обозначает, что объект есть только в сопоставляемой базе
-
«Т» -
обозначает, что объект есть только в текущей базе
Непосредственно из отчета
в колонке «Представление» можно открывать объекты текущей базы.
При завершении
сопоставления открывается закладка «Результат» и выдается предупреждение
пользователю.
Виды сравнения для правил:
-
«» - простое
извлечение реквизита объекта, можно указывать сложный путь к реквизиту,
например «ДокументОснование.Номер»
-
«Итог» -
вычисляется итог по колонке табличной части, нужно указывать путь в виде «ИдентификаторТабличнойЧасти.ИмяСуммируемогоРеквизита»
При сопоставлении чисел
они округляются до 2х знаков после запятой, т.к. при обмене числами через COM иногда происходит
потеря значения, например, значение 1.02 передается как 1.0199999. Это
особенность платформы 1С или COM.
На закладке «Поиск»
указывается код для поиска элемента. Сначала выполняется код, и если элемент не
найден, только тогда он ищется по описанному в правилах ключу.
Для обмена между типовыми
конфигурациями удобно использовать поиск по регистру соответствий объектов,
например:
ТекУзелОбмена = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерия.НайтиПоНаименованию("…Имя обмен …");
ТекСсылкаВДругойИБ = База.ЗначениеВСтрокуВнутр(Объект);
З = Новый Запрос(
"ВЫБРАТЬ
| СоответствиеОбъектовДляОбмена.СобственнаяСсылка
|ИЗ
| РегистрСведений.СоответствиеОбъектовДляОбмена КАК СоответствиеОбъектовДляОбмена
|ГДЕ
| СоответствиеОбъектовДляОбмена.УзелОбмена = &УзелОбмена
| И СоответствиеОбъектовДляОбмена.СсылкаВДругойИБ = &СсылкаВДругойИБ");
З.УстановитьПараметр("УзелОбмена", ТекУзелОбмена );
З.УстановитьПараметр("СсылкаВДругойИБ", ТекСсылкаВДругойИб );
ТекВыборка = З.Выполнить().Выбрать();
Если ТекВыборка.Следующий() Тогда
Р = ТекВыборка.СобственнаяСсылка;
КонецЕсли;
//Сообщить(""+ База.String(Объект) + " " + ТекУзелОбмена + " : " + ТекСсылкаВДругойИБ + " : " + Р);