Банк Индексов

Публикация № 944961

Обработки - Обработка справочников

дубли РИБ поиск и замена дублей 2is

0
Система антидублирования элементов справочников и документов в распределённых информационных базах (РИБ)

Банк Индексов - это база данных 1С с опубликованным веб-сервисом, которая хранит у себя GUIDы объектов 1С. Это позволяет перед записью объекта обратиться к этому банку и запросить GUID по ключевому полю создаваемого объекта, после чего - записать объект с этим GUIDом.

В следующем видео показано, как можно проверить, что пример, предоставленный для скачивания, действительно работает. Обратите внимание, что при создании нового пользователя GUID подставился тот-же:

Как было показано в предыдущем видео, система не блокирует создание дублей, если это так надо пользователю. Дубль может создаться и в случае отсутствия доступа базы к Интернет или отсутствия связи с сервером, где размещена база Банка Индексов.

На этот случай время от времени проводится "Поиск и замена дублей" с помощью специальной обработки, которая тоже подключена к Банку Индексов и знает, какой экземпляр элемента сделать правильным.

Зачем?

Предположим имеется центральная база и периферийная. Между этими базами настроен обмен. В план обмена включен справочник “Пользователи”.

Допустим, что пользователь создал пользователя в центральной базе и в периферийной. Затем обменялся. Что случится после обмена? В обеих базах появится по два одинаковых пользователя, что может вызвать массу затруднений в работе.

Если бы периферийная база записала одноимённого пользователя с таким же GUIDом, то после обмена в обеих базах осталось бы по одному пользователю.

Как внедрить?

В любую конфигурацию добавляется Общий модуль “рсВебСервисы” с флажками “Сервер”, “ВызовСервера” и “Привилегированный” и подписка на события "ПередЗаписьюСправочников".

Константа "АдресWebСервисаБанкаИндексов" содержит адрес к серверу веб-сервиса. Если будете публиковать свой веб-сервис - то измените его.

Константа "УникальноеНазваниеРИБ" Требуется, чтобы уникальные ключи одной группы распределённых баз не пересеклись с уникальными ключами других распределённых баз.

Уникальный ключ - это хэш MD5 от строки А + В + С, где
А - УникальноеНазваниеРИБ
В - Наименование объекта метаданных (например, "Справочник.Контрагенты")
С - Ключевое поле объекта метаданных (чаще всего это "Код")

Как использовать? (Пассивная защита от дублей)

В общем модуле "рсВебСервисы" имеется процедура обработки события:

Процедура ПередЗаписьюСправочниковПередЗаписью(Источник, Отказ) Экспорт
	Если Источник.ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
  	//Система антидублирования. Автор: Евгений Трофимов (2017.10.12)
	Если НЕ ЗначениеЗаполнено(Источник.Ссылка) Тогда //Это Новый
    	СтрокаGUID = рсВебСервисы.ПолучитьПравильныйGUID(
			Источник.Метаданные().Синоним,  
			?(Источник.Метаданные().ДлинаКода = 0, Источник.Наименование, Источник.Код)
		);
    	Если СтрокаGUID = Неопределено Тогда
          	Возврат;
    	КонецЕсли;          	
    	Попытка
          	GUID = Новый УникальныйИдентификатор(СтрокаGUID);
          	Спр = Справочники[Источник.Метаданные().Имя].ПолучитьСсылку(GUID);
			//если с указанным GUID уже имеется элемент, то ничего не делаем!!!
			Если Найти(Строка(Спр),"<Объект не найден>")>0 Тогда
				Источник.УстановитьСсылкуНового(Спр);
			КонецЕсли;
    	Исключение
		КонецПопытки;
  	КонецЕсли;
  	//Конец системы антидублирования
КонецПроцедуры

Новые дубли уже не будут создаваться, если такой элемент уже есть в другой базе. И это уже полдела.

Активная защита от дублей

Перед началом работы, когда Банк Индексов ещё “не знает” ни одного Вашего GUIDа предлагаю выполнить поиск и замену существующих дублей на центральной базе с одновременным внесением элемента с максимальным количеством ссылок в Банк Индексов.

Подкорректированная обработка, взятая из типовой конфигурации УТ 10.3, входит в комплект поставки примера конфигурации базы данных "Банк Индексов: Реализованный вариант подключения к Банку индексов", который Вы можете скачать здесь.

При нажатии на кнопку “Автоопределение правильных объектов” GUIDы элементов, имеющих максимальное количество ссылок запишутся в Банк Индексов. Но если в Банке Индексов исследуемый код уникальности уже записан, то в качестве правильного экземпляра будет установлен элемент с уникальным идентификатором, записанного в Банк индексов.

Инициализация

Данный раздел инструкции следует выполнять после того, как выполнили всё вышеописанное.

Для того, чтобы внести в Банк Индексов все ключи вашего справочника - необходимо в функцию "ПолучитьПравильныеGUIDыПоСсылкам" передать таблицу значений с колонкой "Ссылка".
Здесь всё просто:

//Здесь укажите свой объект
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    алкКлассификаторСправокАиБ.Ссылка
    |ИЗ
    |    Справочник.алкКлассификаторСправокАиБ КАК алкКлассификаторСправокАиБ";

Результат = Запрос.Выполнить().Выгрузить();
ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
рсВебСервисы.ПолучитьПравильныеGUIDыПоСсылкам(Результат);
Сообщить("Время обработки "+Результат.Количество()+" элементов "+Строка((ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала)/1000)+" сек.");

Рекомендую это запустить на ночь. Объектов может быть слишком много.
Всё! Про дубли в распределенных базах можете забыть.

Что качать?

Для того, чтобы выполнить интеграцию Вашей базы с Банком Индексов достаточно скачать "Банк Индексов: Реализованный вариант подключения к Банку индексов". В константе "Адрес web сервиса банка индексов" задан наш рабочий веб-сервис.

Если есть желание опубликовать именно свой веб-сервис - качайте "Банк Индексов: серверная часть"

Все представленные ниже обработки тестировались на платформе 1С:Предприятие 8.3.10.2561

Причины купить

Данный механизм успешно был внедрён в базу УТАП крупного дистрибъютора алкогольной продукции с 17 филиалами год назад и успешно продолжает работать по сей день. Необходимость внедрения возникла при появлении ЕГАИС. Каждый филиал загружает в свою базу такие справочники, как 
- Классификатор алкогольной продукции ЕГАИС
- Классификатор справок А и Б
- Классификатор организаций ЕГАИС
и при обмене они не задваиваются

В бизнесе, где вести учёт товара необходимо внутри одной серии, но оформлять эту серию приходится одновременно на разных базах - данный продукт поможет избежать дублирования справочников.

Достоинства

Не дорогое и достаточно быстрое решение в отличии от аналогов.

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

0


Новый вопрос

E-mail*
Тема (вопрос)*

См. также

Специальные предложения