Как избежать дублирования при выгрузке

1. n_spb 28.05.19 13:04 Сейчас в теме
В КД 2.1 сделал правила обмена из одной конфигурации 8.3 в другую конфигурацию 8.3. По этим правилам выгружаются в файл xml с помощью обработки универсальный обмен данными в формате XML физические лица вместе с контактной информацией и данными о документах физических лиц. В приемник физ. лица загружаются через файл xml обработкой универсальный обмен данными в формате XML. Как избежать дублирование физ. лиц и их данных в приемнике при повторной выгрузке одинаковых физ. лиц из источника?
EvgeniyOlxovskiy; +1 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ErshKUS 2 28.05.19 13:16 Сейчас в теме
(1) первый вариант по уникальным идентификаторам. Если нельзя, то физиков, наверно по Наименованию+Датарождения , ну или другое уникальное поле, номер+серия паспорта, ИНН, при условии что эти поля обязательны к заполнению и у всех заполнены
alex-l19041; +1 Ответить
3. tusv 212 28.05.19 13:37 Сейчас в теме
(2)Все верно. Только это надо прописать в обработчике Поля поиска
Что то типа того
Если СсылкаНаОбъект.Пустая() Тогда
	//Не нашли по УИД
	Если ЗначениеЗаполнено(СвойстваПоиска["ИНН"]) Тогда
		СтрокаИменСвойствПоиска("ИНН");
	Иначе
		СтрокаИменСвойствПоиска("Наименование,ДатаРождения");
	КонецЕсли;	
КонецЕсли;
5. alalexmix 25 28.05.19 14:15 Сейчас в теме
(3) Достаточно в обработчике "Поля поиска", предварительно указав поля поиска:

Если НомерВариантаПоиска = 1 Тогда
	СтрокаИменСвойствПоиска = "ЭтоГруппа, Код, ИНН, Наименование, ДатаРождения";
ИначеЕсли НомерВариантаПоиска = 2 Тогда		
	СтрокаИменСвойствПоиска = "ЭтоГруппа, Код, ИНН, Наименование";
ИначеЕсли НомерВариантаПоиска = 3 Тогда
	СтрокаИменСвойствПоиска = "ЭтоГруппа, Код, ИНН";
ИначеЕсли НомерВариантаПоиска = 4 Тогда
	СтрокаИменСвойствПоиска = "ЭтоГруппа, Код";
Иначе // по умолчанию                                 
	СтрокаИменСвойствПоиска = "ЭтоГруппа, Код";  
КонецЕсли;
Показать
6. tusv 212 28.05.19 14:25 Сейчас в теме
(5)Плохой код. КД будет бегать 10 раз И может найти не то что нужно,
Лучше все таки проверять СвойстваПоиска на заполненность
7. alalexmix 25 28.05.19 14:30 Сейчас в теме
(6) По поводу оптимальности - да,
Но если четко поставлены требования к заполненности и уникальности, то вообще не надо указывать код а обработчике "Поля поиска",
а достаточно указать только признаки "Полей поиска" (выделяются жирным)
8. tusv 212 28.05.19 14:34 Сейчас в теме
(7)Не фига. Простейший пример Есть Контрагент и есть его Филиал . Без Полей поиска не обойтись по умолчанию
9. alalexmix 25 28.05.19 14:36 Сейчас в теме
(8) Если есть различные варианты поиска, то да без обработчика "Полей поиска" - не обойтись
10. n_spb 28.05.19 15:22 Сейчас в теме
(3) Как выгрузить данные о документах физ. лиц если данное физ. лицо уже есть в приемнике, а в базе источнике добавили еще один новый паспорт в регистр сведений данные о документах физ. лиц по нему? Сейчас выгрузка документов физ. лиц осуществляется из ПКО ФизическиеЛица в обработчике после выгрузки в файл:
ВыгрузитьПоПравилу(Выборка, , , , "ДокументыФизическихЛицПКО")
11. tusv 212 28.05.19 15:28 Сейчас в теме
(10)"имя сестра назови его"
Источник, это кто?
Приемник, кто это?
В смысле имена конфигураций.
Потому как из Зуп 2.5 я переношу несколькими ПКО
На каждую Табличную часть физика в свой Регистр сведений
12. n_spb 28.05.19 15:37 Сейчас в теме
(11) Источник ЗУП 3.1.8 приемник документооборот 2.1.
13. tusv 212 28.05.19 15:39 Сейчас в теме
(12) Документооборот это не. Не плавал, не знаю. Временно
14. n_spb 28.05.19 15:43 Сейчас в теме
(13) В нем такой же регистр сведений ДокументыФизическихЛиц, как в ЗУП 3.1.
15. tusv 212 28.05.19 15:44 Сейчас в теме
(12)Ха там всего то Наименование и дата рождения
Все галочками
Поиск по УИД и далее по полям поиска Наименование и Дата рождения, ни каким обработчиком Поля поиска не пахнет
16. n_spb 28.05.19 15:54 Сейчас в теме
(15) Побольше немного.
Прикрепленные файлы:
18. tusv 212 28.05.19 15:57 Сейчас в теме
(16)Я в (15) про справочник физлиц,
В источнике дублей нет? А проверить обработкой Поиск дублей
19. n_spb 29.05.19 17:17 Сейчас в теме
(18) Сейчас дублей нет если повторно выгружаю физ. лицо, дубль не создается. Поиск делаю только по уникальному идентификатору, если создается дубль, удаляю тот у которого уникальный идентификатор не как в источнике.
Прикрепленные файлы:
17. tusv 212 28.05.19 15:55 Сейчас в теме
(12)(10)Типовых правил для КД нет, тут наверное не правильно выгружаете в
ВыгрузитьПоПравилу(Выборка, , , , "ДокументыФизическихЛицПКО")

Можно глянуть правила обмена
4. n_spb 28.05.19 14:11 Сейчас в теме
(2) По уникальным идентификаторам можно искать. Данные о документах физ. лиц находятся в независимом регистре сведений. Физ. лицо и вид документа это измерения регистра все остальное ресурсы. Как лучше искать в регистре?
20. melenaspb 208 31.05.19 13:04 Сейчас в теме
(4) Вам надо задать отбор - указать поля по которым будет идти поиск в приемнике и использовать не ВыгрузитьПоПравилу, а ВыгрузитьРегистр:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|	ДокументыФизическихЛиц.Период КАК Период,
|	ДокументыФизическихЛиц.Физлицо КАК Физлицо,
|	ДокументыФизическихЛиц.ВидДокумента КАК ВидДокумента,
|	ДокументыФизическихЛиц.Серия КАК Серия,
|	ДокументыФизическихЛиц.Номер КАК Номер,
|	ДокументыФизическихЛиц.ДатаВыдачи КАК ДатаВыдачи,
|	ДокументыФизическихЛиц.СрокДействия КАК СрокДействия,
|	ДокументыФизическихЛиц.КемВыдан КАК КемВыдан,
|	ДокументыФизическихЛиц.КодПодразделения КАК КодПодразделения,
|	ДокументыФизическихЛиц.ЯвляетсяДокументомУдостоверяющимЛичность КАК ЯвляетсяДокументомУдостоверяющимЛичность,
|	ДокументыФизическихЛиц.Представление КАК Представление,
|	ДокументыФизическихЛиц.УдалитьВидДокумента КАК УдалитьВидДокумента
|ИЗ
|	РегистрСведений.ДокументыФизическихЛиц КАК ДокументыФизическихЛиц
|ГДЕ
|	ДокументыФизическихЛиц.Физлицо = &Физлицо";
Запрос.УстановитьПараметр("Физлицо", Источник.Ссылка);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	
	Отбор = Новый ТаблицаЗначений;
	Отбор.Колонки.Добавить("Имя");
	Отбор.Колонки.Добавить("Значение");
	Отбор.Колонки.Добавить("Использование");
	
	СтрокаОтбора = Отбор.Добавить();
	СтрокаОтбора.Имя = "Физлицо";
	СтрокаОтбора.Значение = Выборка.Физлицо;
	СтрокаОтбора.Использование = Истина;
	
	СтрокаОтбора = Отбор.Добавить();
	СтрокаОтбора.Имя = "ВидДокумента";
	СтрокаОтбора.Значение = Выборка.ВидДокумента;
	СтрокаОтбора.Использование = Истина;
	
	Строки = Новый ТаблицаЗначений;
	
	Строки.Колонки.Добавить("Период");
	Строки.Колонки.Добавить("Физлицо");
	Строки.Колонки.Добавить("ВидДокумента");
	Строки.Колонки.Добавить("Серия");
	Строки.Колонки.Добавить("Номер");
	Строки.Колонки.Добавить("ДатаВыдачи");
	Строки.Колонки.Добавить("СрокДействия");
	Строки.Колонки.Добавить("КемВыдан");
	Строки.Колонки.Добавить("КодПодразделения");
	Строки.Колонки.Добавить("ЯвляетсяДокументомУдостоверяющимЛичность");
	Строки.Колонки.Добавить("Представление");
	Строки.Колонки.Добавить("УдалитьВидДокумента");
	
	Строка = Строки.Добавить();
	ЗаполнитьЗначенияСвойств(Строка,Выборка);
	
	НаборЗаписей = Новый Структура("Отбор, Строки");
	НаборЗаписей.Отбор = Отбор;
	НаборЗаписей.Строки = Строки;
	
	ВыгрузитьРегистр(НаборЗаписей,,,,"ДокументыФизическихЛиц");

КонецЦикла;

Показать
22. n_spb 31.05.19 14:55 Сейчас в теме
(20) Пробовал ВыгрузитьРегистр. 1С пишет, что метод объекта ВыгрузитьРегистр не обнаружен.
23. melenaspb 208 31.05.19 16:33 Сейчас в теме
(22) Странно, это из рабочих правил код, я выгружаю из УТ в ДО. Посмотрите тогда в конфигураторе в вашем ЗУП - обработка КонвертацияОбъектовИнформационныхБаз, есть там такая процедура ВыгрузитьРегистр
24. melenaspb 208 31.05.19 16:36 Сейчас в теме
(22) Я через план обмена выгружаю. Если вы грузите обработкой универсальный обмен - там может и не быть ВыгрузитьРегистр
25. n_spb 06.06.19 22:17 Сейчас в теме
(24) Да, обработкой выгружаю.
21. meriferi 31.05.19 14:50 Сейчас в теме
Если Гуиды одинаковые, то не задвоит
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот