Задвоение в справочнике контрагенты при обмене с УХ
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Неплохо было бы для начала узнать через что идет обмен, если через планы обмена, то правила конвертации в студию :) Если же нет, то участок кода загрузки. Поиск существующих контрагентов вообще выполняется? По каким полям?
(2) Плана обмена нету,
Есть код:
Есть код:
Функция ЗагрузитьКонтрагентов(Ответ)
НаличиеОшибокЗагрузкиКонтрагентов = Ложь;
ОбменДаннымиЗагрузка = Истина;
МКонтрагенты = Справочники.Контрагенты;
Для Каждого Стр Из Ответ.Контрагенты.Строки Цикл
Если СокрЛП(Стр.Код)="" Тогда
ЗаписьЖурналаРегистрации("ВебСервисУХ.ЗагрузитьКонтрагентов_НетКода", УровеньЖурналаРегистрации.Ошибка);
НаличиеОшибокЗагрузкиКонтрагентов = Истина; Продолжить;
КонецЕсли;
Если Стр.ЭтоГруппа Тогда Продолжить; КонецЕсли;
ГУИД = новый УникальныйИдентификатор(Стр.Ссылка);
КонтрагентСсылка = МКонтрагенты.ПолучитьСсылку(ГУИД);
КонтрагентОбъект = Неопределено;
СсылкаСуществует = ОбщегоНазначения.СсылкаСуществует(КонтрагентСсылка);
Если НЕ СсылкаСуществует Тогда
КонтрагентСсылка = ВернутьКонтрагентаПоКодуSAP(Стр.Код);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда
КонтрагентСсылка = ВернутьКонтрагентаПоИННКПП(Стр.ИНН, Стр.КПП);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда
Если Стр.ЭтоГруппа Тогда
КонтрагентОбъект = МКонтрагенты.СоздатьГруппу();
Иначе
КонтрагентОбъект = МКонтрагенты.СоздатьЭлемент();
КонецЕсли;
КонтрагентОбъект.УстановитьНовыйКод();
Иначе
КонтрагентОбъект = КонтрагентСсылка.ПолучитьОбъект();
КонецЕсли;
КонтрагентОбъект.ОбменДанными.Загрузка = ОбменДаннымиЗагрузка;
КонтрагентОбъект.ПометкаУдаления = Стр.ПометкаУдаления;
КонтрагентОбъект.КодSAP = Стр.Код;
Если Не ЗначениеЗаполнено(КонтрагентОбъект.Наименование) Тогда
КонтрагентОбъект.Наименование = СокрЛП(Стр.Наименование);
КонецЕсли;
Если Не ЗначениеЗаполнено(КонтрагентОбъект.НаименованиеПолное) Тогда
КонтрагентОбъект.НаименованиеПолное = СокрЛП(Стр.НаименованиеПолное);
КонецЕсли;
Если Стр.ЭтоГруппа Тогда
КонтрагентОбъект.Записать();
Продолжить;
КонецЕсли;
КонтрагентОбъект.Комментарий= "#УХ#";
КонтрагентОбъект.ЮрФизЛицо = ?(Стр.ЮридическоеФизическоеЛицо = "ЮридическоеЛицо",Перечисления.ЮрФизЛицо.ЮрЛицо,Перечисления.ЮрФизЛицо.ФизЛицо);
КонтрагентОбъект.ИНН = СокрЛП(Стр.ИНН);
КонтрагентОбъект.КПП = СокрЛП(Стр.КПП);
КонтрагентОбъект.КодПоОКПО = СокрЛП(Стр.ОКПО);
КонтрагентОбъект.ГоловнойКонтрагент = КонтрагентСсылка;
Если ЗначениеЗаполнено(Стр.ГоловнойКонтрагент) И Не Стр.ГоловнойКонтрагент = Стр.Код Тогда
КонтрагентПоКодуСАП = ВернутьКонтрагентаПоКодуSAP(Стр.ГоловнойКонтрагент);
Если ЗначениеЗаполнено(КонтрагентПоКодуСАП) Тогда
КонтрагентОбъект.ГоловнойКонтрагент = КонтрагентПоКодуСАП;
КонецЕсли;
КонецЕсли;
Попытка
КонтрагентОбъект.Записать();
Исключение
ЗаписьЖурналаРегистрации("ВебСервисУХ.Контрагент_Записать", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
НаличиеОшибокЗагрузкиКонтрагентов = Истина; Продолжить;
КонецПопытки;
Если ЗначениеЗаполнено(Стр.АдресЮридический) Тогда
НаборКонтакт = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
НаборКонтакт.Отбор.Объект.Установить(КонтрагентОбъект.Ссылка);
НаборКонтакт.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);
НаборКонтакт.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
ЗаписьКонтакт = НаборКонтакт.Добавить();
ЗаписьКонтакт.Объект = КонтрагентОбъект.Ссылка;
ЗаписьКонтакт.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
ЗаписьКонтакт.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
ЗаписьКонтакт.Представление = Стр.АдресЮридический;
Попытка
НаборКонтакт.Записать(Истина);
Исключение
ЗаписьЖурналаРегистрации("ВебСервисУХ.КонтактнаяИнформация_ЗаписатьЮрАдрес", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Если ЗначениеЗаполнено(Стр.АдресФактический) Тогда
НаборКонтакт = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
НаборКонтакт.Отбор.Объект.Установить(КонтрагентОбъект.Ссылка);
НаборКонтакт.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);
НаборКонтакт.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
ЗаписьКонтакт = НаборКонтакт.Добавить();
ЗаписьКонтакт.Объект = КонтрагентОбъект.Ссылка;
ЗаписьКонтакт.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
ЗаписьКонтакт.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
ЗаписьКонтакт.Представление = Стр.АдресПочтовый;
Попытка
НаборКонтакт.Записать(Истина);
Исключение
ЗаписьЖурналаРегистрации("ВебСервисУХ.КонтактнаяИнформация_ЗаписатьФактАдрес", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Если ЗначениеЗаполнено(Стр.Телефон) Тогда
НаборКонтакт = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
НаборКонтакт.Отбор.Объект.Установить(КонтрагентОбъект.Ссылка);
НаборКонтакт.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Телефон);
НаборКонтакт.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
ЗаписьКонтакт = НаборКонтакт.Добавить();
ЗаписьКонтакт.Объект= КонтрагентОбъект.Ссылка;
ЗаписьКонтакт.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
ЗаписьКонтакт.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
ЗаписьКонтакт.Представление = Стр.Телефон;
Попытка
НаборКонтакт.Записать(Истина);
Исключение
ЗаписьЖурналаРегистрации("ВебСервисУХ.КонтактнаяИнформация_ЗаписатьТелефон", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
Возврат НаличиеОшибокЗагрузкиКонтрагентов;
Показать
(3) Код этих функций бы еще посмотреть
Если удалить один из дублей, при повторной загрузке он опять появляется?
Если НЕ СсылкаСуществует Тогда
КонтрагентСсылка = ВернутьКонтрагентаПоКодуSAP(Стр.Код);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда
КонтрагентСсылка = ВернутьКонтрагентаПоИННКПП(Стр.ИНН, Стр.КПП);
КонецЕсли;
Если удалить один из дублей, при повторной загрузке он опять появляется?
(4) 1)
2)
Функция ВернутьКонтрагентаПоКодуSAP(КодSAP)
Если СокрЛП(КодSAP) = "" Тогда
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
Возврат Справочники.Контрагенты.НайтиПоРеквизиту("КодSAP", СокрЛП(КодSAP));
КонецФункции
2)
Функция ВернутьКонтрагентаПоИННКПП(ИНН, КПП);
КонтрагентПоИННКПП = Справочники.Контрагенты.ПустаяСсылка();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН = &ИНН
| И Контрагенты.КПП = &КПП";
Запрос.УстановитьПараметр("ИНН", СокрЛП(ИНН));
Запрос.УстановитьПараметр("КПП", СокрЛП(КПП));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
КонтрагентПоИННКПП = Выборка.Контрагент;
КонецЦикла;
Возврат КонтрагентПоИННКПП;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот