Как сделать проверку дублей перед записью контрагента
У меня вместе с json приходит пачка всех контрагентов с другой базы
Теперь не могу сообразить как правильно сделать проверку на дубли чтобы не записывались уже существующие контрагенты, потому что эта процедура будет проходить каждые 5-10 минут. Подскажите каким методом лучше всё залепить. Процедуры находятся в общем модуле
//ПАРСИМ JSON СТРОКУ
Процедура ЗагрузитьКонтрагентаJSON(СтрокаКонтрагентJSON)Экспорт
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(СтрокаКонтрагентJSON);
КонтрагентМассив = ПрочитатьJSON(ЧтениеJSON);
Для Каждого СтрокаМассива Из КонтрагентМассив Цикл
СоздатьКонтрагента(СтрокаМассива);
КонецЦикла;
КонецПроцедуры
//СОЗДАЕМ ЭЛЕМЕНТЫ СПРАВОЧНИКА Контрагент
Процедура СоздатьКонтрагента(СтруктураСДанными)
КонтрагентОбъект = Справочники.Контрагенты.СоздатьЭлемент();
КонтрагентОбъект.ПометкаУдаления = СтруктураСДанными.ПометкаУдаления;
КонтрагентОбъект.Наименование = СтруктураСДанными.Наименование;
КонтрагентОбъект.ДатаСвидетельстваПоНДС = СтруктураСДанными.ДатаСвидетельстваПоНДС;
КонтрагентОбъект.ДокументУдостоверяющийЛичность = СтруктураСДанными.ДокументУдостоверяющийЛичность;
КонтрагентОбъект.ИдентификационныйКодЛичности = СтруктураСДанными.ИдентификационныйКодЛичности;
КонтрагентОбъект.ИндивидуальныйПредпринимательАдвокатЧастныйНотариус = СтруктураСДанными.ИндивидуальныйПредпринимательАдвокатЧастныйНотариус;
КонтрагентОбъект.КБЕ = СтруктураСДанными.КБЕ;
КонтрагентОбъект.КодПоОКПО = СтруктураСДанными.КодПоОКПО;
КонтрагентОбъект.Комментарий = СтруктураСДанными.Комментарий;
КонтрагентОбъект.НаименованиеПолное = СтруктураСДанными.НаименованиеПолное;
КонтрагентОбъект.НомерНалоговойРегистрацииВСтранеРезидентства = СтруктураСДанными.НомерНалоговойРегистрацииВСтранеРезидентства;
КонтрагентОбъект.НомерСвидетельстваПоНДС = СтруктураСДанными.НомерСвидетельстваПоНДС;
КонтрагентОбъект.РНН = СтруктураСДанными.РНН;
КонтрагентОбъект.СерияСвидетельстваПоНДС = СтруктураСДанными.СерияСвидетельстваПоНДС;
КонтрагентОбъект.СИК = СтруктураСДанными.СИК;
КонтрагентОбъект.УказыватьРеквизитыГоловнойОрганизацииВСчетеФактуре = СтруктураСДанными.УказыватьРеквизитыГоловнойОрганизацииВСчетеФактуре;
КонтрагентОбъект.ГосударственноеУчреждение = СтруктураСДанными.ГосударственноеУчреждение;
КонтрагентОбъект.ИмяПредопределенныхДанных = СтруктураСДанными.ИмяПредопределенныхДанных;
КонтрагентОбъект.Записать();
КонецПроцедуры
ПоказатьТеперь не могу сообразить как правильно сделать проверку на дубли чтобы не записывались уже существующие контрагенты, потому что эта процедура будет проходить каждые 5-10 минут. Подскажите каким методом лучше всё залепить. Процедуры находятся в общем модуле
По теме из базы знаний
- Продажи без дублей по маркам. Сведение остатков в магазинах с остатками в ЕГАИС. Декларации по Форме 11 и Форме 12 по данным 1С.Розница 2.2 и др. программ и источников.
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- ЕГАИС от А до Я
- ФинОфис. Контроль и управление финансами. Практика применения
- Ключи аналитик учета в ЕРП, КА, УТ
Найденные решения
СтруктураСДанными.Наименование - подразумеваю, что тут строка с отсечением пробелом с обеих сторон. Иначе вот так
ИскомоеНаименованиеКонтрагента = СокрЛП(Строка(СтруктураСДанными.Наименование));
СпрКонтрНаименованиеПолное = Справочники.Контрагенты.НайтиПоНаименованию(ИскомоеНаименованиеКонтрагента);
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) это понятно, а как именно не создавать, пробовал через найти по реквизиту, но не сработало
СпрКонтрНаименованиеПолное = Справочники.Контрагенты.НайтиПоРеквизиту("Наименование", СтруктураСДанными.Наименование);
СпрКонтрИИН = Справочники.Контрагенты.НайтиПоРеквизиту("ИдентификационныйКодЛичности", СтруктураСДанными.ИдентификационныйКодЛичности);
Если СпрКонтрИИН = Справочники.Контрагенты.ПустаяСсылка() и СпрКонтрНаименованиеПолное = Справочники.Контрагенты.ПустаяСсылка() Тогда
СтруктураСДанными.Наименование - подразумеваю, что тут строка с отсечением пробелом с обеих сторон. Иначе вот так
ИскомоеНаименованиеКонтрагента = СокрЛП(Строка(СтруктураСДанными.Наименование));
СпрКонтрНаименованиеПолное = Справочники.Контрагенты.НайтиПоНаименованию(ИскомоеНаименованиеКонтрагента);
Я так понимаю вот этот поиск не работает
А типы реквизитов совпадают? Нет ли такой ошибки, что "ИдентификационныйКодЛичности" - тип "число", а СтруктураСДанными.ИдентификационныйКодЛичности - это строка?
СпрКонтрИИН = Справочники.Контрагенты.НайтиПоРеквизиту("ИдентификационныйКодЛичности", СтруктураСДанными.ИдентификационныйКодЛичности);
А типы реквизитов совпадают? Нет ли такой ошибки, что "ИдентификационныйКодЛичности" - тип "число", а СтруктураСДанными.ИдентификационныйКодЛичности - это строка?
(8) Вы передаете сейчас массив структур, где в структуре данные контрагента. Попробуйте передать Структуре вида
Должно получиться
СтруктураПередаваемыхДанных = Новый структура;
Структура.Вставить("КонтрагентМассив" , СозданныйМассивКонтрагентов);
Структура.Вставить("ДругойМассив" , СозданныйМассивДругихДанных);
Должно получиться
(10)
То есть теперь нужно принять обе структуры и раскидать в два массива, а как их поделить?
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(СтрокаКонтрагентJSON);
КонтрагентМассив = ПрочитатьJSON(ЧтениеJSON);
Для Каждого СтрокаМассива Из КонтрагентМассив Цикл
СоздатьКонтрагента(СтрокаМассива);
КонецЦикла;
То есть теперь нужно принять обе структуры и раскидать в два массива, а как их поделить?
(12) Вот так примерно будет
//Запись
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
СтруктураПередаваемыхДанных = Новый структура;
СтруктураПередаваемыхДанных.Вставить("КонтрагентМассив" , СозданныйМассивКонтрагентов);
СтруктураПередаваемыхДанных.Вставить("ДругойМассив" , СозданныйМассивДругихДанных);
ЗаписатьJSON(ЗаписьJSON, СтруктураПередаваемыхДанных);
Результат = ЗаписьJSON.Закрыть();
//Чтение
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Результат);
ОбъектИзJSON = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
КонтрагентМассив = ОбъектИзJSON.КонтрагентМассив;
ДругойМассив = ОбъектИзJSON.ДругойМассив;
Для Каждого СтрокаМассива Из КонтрагентМассив Цикл
СоздатьКонтрагента(СтрокаМассива);
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот