|   |   | 
| 
 | Происходит задвоение в справочнике "Контрагенты" при обмене | ☑ | ||
|---|---|---|---|---|
| 0
    
        Айрат_116 02.05.20✎ 13:16 | 
        Здравствуйте, у кого была такая проблема, что при обмене происходит задвоение в справочнике (https://wampi.ru/image/6omsk20)
 Начал смотреть в журнале когда было добавление этого контрагента (https://wampi.ru/image/6omARog) И там не было такого что два раза он был добавлен | |||
| 1
    
        Маленький Вопросик 02.05.20✎ 13:19 | 
        сопоставление конграгентов идет по ГУИД  внутреннему. значит, задвоенные были сделаны и там и там.     | |||
| 2
    
        Айрат_116 02.05.20✎ 13:21 | 
        (1)  В той базе от куда она приходит?     | |||
| 3
    
        Айрат_116 02.05.20✎ 13:23 | 
        (1) В этой базе не типовой обмен
 Вот функция где загружает контрагентов Функция ЗагрузитьКонтрагентов(Ответ) НаличиеОшибокЗагрузкиКонтрагентов = Ложь; ОбменДаннымиЗагрузка = Истина; МКонтрагенты = Справочники.Контрагенты; Для Каждого Стр Из Ответ.Контрагенты.Строки Цикл Если СокрЛП(Стр.Код)="" Тогда ЗаписьЖурналаРегистрации("ВебСервисУХ.ЗагрузитьКонтрагентов_НетКода", УровеньЖурналаРегистрации.Ошибка); НаличиеОшибокЗагрузкиКонтрагентов = Истина; Продолжить; КонецЕсли; Если Стр.ЭтоГруппа Тогда Продолжить; КонецЕсли; ГУИД = новый УникальныйИдентификатор(Стр.Ссылка); КонтрагентСсылка = МКонтрагенты.ПолучитьСсылку(ГУИД); КонтрагентОбъект = Неопределено; СсылкаСуществует = ОбщегоНазначения.СсылкаСуществует(КонтрагентСсылка); Если НЕ СсылкаСуществует Тогда КонтрагентСсылка = ВернутьКонтрагентаПоКодуSAP(Стр.Код); КонецЕсли; Если НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда КонтрагентСсылка = ВернутьКонтрагентаПоИННКПП(Стр.ИНН, Стр.КПП); КонецЕсли; Если НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда Если Стр.ЭтоГруппа Тогда КонтрагентОбъект = МКонтрагенты.СоздатьГруппу(); Иначе КонтрагентОбъект = МКонтрагенты.СоздатьЭлемент(); КонецЕсли; КонтрагентОбъект.УстановитьНовыйКод(); Иначе КонтрагентОбъект = КонтрагентСсылка.ПолучитьОбъект(); КонецЕсли; КонтрагентОбъект.ОбменДанными.Загрузка = ОбменДаннымиЗагрузка; КонтрагентОбъект.ПометкаУдаления = Стр.ПометкаУдаления; КонтрагентОбъект.КодSAP = Стр.Код; Если Не ЗначениеЗаполнено(КонтрагентОбъект.Наименование) Тогда КонтрагентОбъект.Наименование = СокрЛП(Стр.Наименование); КонецЕсли; Если Не ЗначениеЗаполнено(КонтрагентОбъект.НаименованиеПолное) Тогда КонтрагентОбъект.НаименованиеПолное = СокрЛП(Стр.НаименованиеПолное); КонецЕсли; Если Стр.ЭтоГруппа Тогда КонтрагентОбъект.Записать(); Продолжить; КонецЕсли; КонтрагентОбъект.Комментарий= "#УХ#"; КонтрагентОбъект.ЮрФизЛицо = ?(Стр.ЮридическоеФизическоеЛицо = "ЮридическоеЛицо",Перечисления.ЮрФизЛицо.ЮрЛицо,Перечисления.ЮрФизЛицо.ФизЛицо); КонтрагентОбъект.ИНН = СокрЛП(Стр.ИНН); КонтрагентОбъект.КПП = СокрЛП(Стр.КПП); КонтрагентОбъект.КодПоОКПО = СокрЛП(Стр.ОКПО); КонтрагентОбъект.ГоловнойКонтрагент = КонтрагентСсылка; Если ЗначениеЗаполнено(Стр.ГоловнойКонтрагент) И Не Стр.ГоловнойКонтрагент = Стр.Код Тогда КонтрагентПоКодуСАП = ВернутьКонтрагентаПоКодуSAP(Стр.ГоловнойКонтрагент); Если ЗначениеЗаполнено(КонтрагентПоКодуСАП) Тогда КонтрагентОбъект.ГоловнойКонтрагент = КонтрагентПоКодуСАП; КонецЕсли; КонецЕсли; Попытка КонтрагентОбъект.Записать(); Исключение ЗаписьЖурналаРегистрации("ВебСервисУХ.Контрагент_Записать", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки()); НаличиеОшибокЗагрузкиКонтрагентов = Истина; Продолжить; КонецПопытки; Если ЗначениеЗаполнено(Стр.АдресЮридический) Тогда НаборКонтакт = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НаборКонтакт.Отбор.Объект.Установить(КонтрагентОбъект.Ссылка); НаборКонтакт.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес); НаборКонтакт.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента); ЗаписьКонтакт = НаборКонтакт.Добавить(); ЗаписьКонтакт.Объект = КонтрагентОбъект.Ссылка; ЗаписьКонтакт.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; ЗаписьКонтакт.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента; ЗаписьКонтакт.Представление = Стр.АдресЮридический; Попытка НаборКонтакт.Записать(Истина); Исключение ЗаписьЖурналаРегистрации("ВебСервисУХ.КонтактнаяИнформация_ЗаписатьЮрАдрес", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки()); КонецПопытки; КонецЕсли; Если ЗначениеЗаполнено(Стр.АдресФактический) Тогда НаборКонтакт = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НаборКонтакт.Отбор.Объект.Установить(КонтрагентОбъект.Ссылка); НаборКонтакт.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес); НаборКонтакт.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента); ЗаписьКонтакт = НаборКонтакт.Добавить(); ЗаписьКонтакт.Объект = КонтрагентОбъект.Ссылка; ЗаписьКонтакт.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; ЗаписьКонтакт.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента; ЗаписьКонтакт.Представление = Стр.АдресПочтовый; Попытка НаборКонтакт.Записать(Истина); Исключение ЗаписьЖурналаРегистрации("ВебСервисУХ.КонтактнаяИнформация_ЗаписатьФактАдрес", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки()); КонецПопытки; КонецЕсли; Если ЗначениеЗаполнено(Стр.Телефон) Тогда НаборКонтакт = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); НаборКонтакт.Отбор.Объект.Установить(КонтрагентОбъект.Ссылка); НаборКонтакт.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Телефон); НаборКонтакт.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента); ЗаписьКонтакт = НаборКонтакт.Добавить(); ЗаписьКонтакт.Объект= КонтрагентОбъект.Ссылка; ЗаписьКонтакт.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон; ЗаписьКонтакт.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента; ЗаписьКонтакт.Представление = Стр.Телефон; Попытка НаборКонтакт.Записать(Истина); Исключение ЗаписьЖурналаРегистрации("ВебСервисУХ.КонтактнаяИнформация_ЗаписатьТелефон", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецЦикла; Возврат НаличиеОшибокЗагрузкиКонтрагентов; КонецФункции | |||
| 4
    
        Маленький Вопросик 02.05.20✎ 13:28 | 
        КонтрагентСсылка = МКонтрагенты.ПолучитьСсылку(ГУИД);
 КонтрагентОбъект = Неопределено; СсылкаСуществует = ОбщегоНазначения.СсылкаСуществует(КонтрагентСсылка); вот здесь смотри | |||
| 5
    
        Айрат_116 02.05.20✎ 13:31 | 
        (4) Вот что внутри
 Функция СсылкаСуществует(ЛюбаяСсылка) Экспорт ТекстЗапроса = " |ВЫБРАТЬ | Ссылка КАК Ссылка |ИЗ | [ИмяТаблицы] |ГДЕ | Ссылка = &Ссылка |"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяТаблицы]", ИмяТаблицыПоСсылке(ЛюбаяСсылка)); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("Ссылка", ЛюбаяСсылка); УстановитьПривилегированныйРежим(Истина); Возврат НЕ Запрос.Выполнить().Пустой(); КонецФункции Щас еще отладкой посмотрю | |||
| 6
    
        Маленький Вопросик 02.05.20✎ 13:51 | 
        (5) ну это фигня какая-то     | |||
| 7
    
        Маленький Вопросик 02.05.20✎ 14:00 | 
        поиск ссылки по гуид нужно делать так
 НовыйGUID = Новый УникальныйИдентификатор(НоменклатураГуид); Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(НовыйGUID); | |||
| 8
    
        Айрат_116 02.05.20✎ 14:05 | 
        (7) Вы про эту часть кода пишите? 
 ГУИД = новый УникальныйИдентификатор(Стр.Ссылка); КонтрагентСсылка = МКонтрагенты.ПолучитьСсылку(ГУИД); | |||
| 9
    
        Маленький Вопросик 02.05.20✎ 14:19 | 
        НоменклатураГуид - это гуид, а не ссылка 7897-8978-7897-78......     | |||
| 10
    
        Айрат_116 02.05.20✎ 14:25 | 
        (9) мне скорее всего нужно узнать ГУИД у контрагента с этой базы, и узнать какой ГУИД в той откуда приходит контрагент     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |