Минимизация проблемы задвоения контрагентов при организации обмена между 2 непустыми информационными базами 1С

Версия для печатиPDF-версия

Конфигурация:

Периодически возникают задачи настроить типовой обмен между 2 информационными базами 1С, в каждой из которых уже ведётся самостоятельный учёт.

Общий подход компании 1С состоит в том, что обмен настраивается в момент создания второй базы. Из первой базы, в которой уже есть данные, первоначально выгружается справочная информация во вторую базу для того, чтобы в дальнейшем синхронизация справочников производилась по уникальным идентификаторам элементов. Типовые правила обмена настроены исключительно на такой вид синхронизации.

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

Для устранения проблемы с задваиванием контрагентов при обмене данными предлагаю следующее решение.

1. Открыть правила обмена в конфигурации Конвертация данных.

2. Перейти к правилу конвертации объектов (ПКО) Контрагенты.

3. Отметить в качестве полей поиска ИНН, КПП, Наименование, ЭтоГруппа. (В типовых правилах данные поля обычно уже помечены, но проверить стоит.)

Отметка полей поиска

4. Открыть ПКО Контрагенты.

5. На вкладке "Настройки" взвести флаг "Продолжить поиск по полям поиска, если по идентификатору объект приемник не найден".

Продолжить поиск по полям поиска, если по идентификатору объект приемник не найден

6. На вкладке "Обработчики событий" перейти на закладку "Поля поиска".

Редактирование обработчика Поля поиска

7. Добавить в обработчик следующий код:

Если СвойстваПоиска["ЭтоГруппа"] = Истина Тогда
	// Если объект - группа, то поиск идёт по Наименованию
	СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
ИначеЕсли ЗначениеЗаполнено(СвойстваПоиска["ИНН"]) Тогда
	// Если объект - элемент и у него заполнен реквизит ИНН
	Если НомерВариантаПоиска = 1 Тогда
		// При первом проходе производим поиск по ИНН, КПП и Наименованию
		СтрокаИменСвойствПоиска = "ИНН, КПП, Наименование, ЭтоГруппа";	
	ИначеЕсли НомерВариантаПоиска = 2 Тогда
		// Если объект не найден, то при втором проходе производим поиск по ИНН и КПП
		СтрокаИменСвойствПоиска = "ИНН, КПП, ЭтоГруппа";	
	ИначеЕсли НомерВариантаПоиска = 3 Тогда
		// Если объект не найден, то при третьем проходе производим поиск по ИНН
		СтрокаИменСвойствПоиска = "ИНН, ЭтоГруппа";
	Иначе
		// Если объект не найден, то при четвёртом проходе производим поиск по Наименованию
		СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
	КонецЕсли;
Иначе
	// Если реквизит ИНН не заполнен, то производим поиск по Наименованию
	СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
КонецЕсли;
Полезность материала: 
5
Ваша оценка: Нет Средняя: 5 (3 оценок)
Оцените полезность материала
© При копировании материалов сайта ссылка на оригинал обязательна.