Банк Индексов - это база данных 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-ти дней со дня поступления денег на наш счет.
Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.
Для возврата оплаты просто свяжитесь с нами.