Задвоение контрагентов при обмене через HTTP-сервис
Добрый день. Может кто знает, как найти ошибку задвоения контрагентов?
Есть в конфигурации http-сервис DocumentExchange. В модуле есть функция чтения Json. Как найти где сами данные и как отладить, раньше не работала с веб-сервисами. И вот в модуле идет код проверки контрагента, он задваивает их. Помогите. пожалуйста?
Есть в конфигурации http-сервис DocumentExchange. В модуле есть функция чтения Json. Как найти где сами данные и как отладить, раньше не работала с веб-сервисами. И вот в модуле идет код проверки контрагента, он задваивает их. Помогите. пожалуйста?
Прикрепленные файлы:
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7)
У нас на сервере нет отладки, поэтому не подскажу как подключится. Поправь процедуру с последнего скрина, что бы писала в журнал регистрации все исключения и то что передается в функцию Проверка НаНаличиеКонтрагентаВБазе(). И станет понятно почему не находится контрагент а создается новый
У нас на сервере нет отладки, поэтому не подскажу как подключится. Поправь процедуру с последнего скрина, что бы писала в журнал регистрации все исключения и то что передается в функцию Проверка НаНаличиеКонтрагентаВБазе(). И станет понятно почему не находится контрагент а создается новый
(10)
Перед выполнением запроса что-нибудь такое вывести и проверить какой параметр пустой.
Все же проще через отладку найти.
Перед выполнением запроса что-нибудь такое вывести и проверить какой параметр пустой.
ЗаписьЖурналаРегистрации("DocumentExchange", УровеньЖурналаРегистрации.Информация, , ,
СтрШаблон("Наименование: %1, ИсточникИНН: %2, ИсточникКПП: %3, ДатаРождения: %4",
ИсточникНаименованиеКонтрагента,
ИсточникИНН,
ИсточникКПП,
ДатаРождения));
Все же проще через отладку найти.
(10) Вообще отладки нету...
Примерная запись
ЗаписьЖурналаРегистрации("ЗагрузкаКантрагента",УровеньЖурналаРегистрации.Ошибка, Метаданные.Документы.ЗаказПоставщику,,"Исключение №... "+ ОписаниеОшибки())
Ты погляди в чем ошибка, что не так работает, а потом уже ищи пути решения
Примерная запись
ЗаписьЖурналаРегистрации("ЗагрузкаКантрагента",УровеньЖурналаРегистрации.Ошибка, Метаданные.Документы.ЗаказПоставщику,,"Исключение №... "+ ОписаниеОшибки())
Ты погляди в чем ошибка, что не так работает, а потом уже ищи пути решения
(11) Спасибо думаю ошибка в самом запросе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ПометкаУдаления
| И (&НеИспИНН
| ИЛИ Контрагенты.ИНН = &ИНН)
| И (&НеИспКПП
| ИЛИ Контрагенты.КПП = &КПП)
| И (&НеИспНаименование
| ИЛИ Контрагенты.Наименование = &Наименование)
| И (&НеИспДатуРождения
| ИЛИ Контрагенты.ДатаРождения = &ДатаРождения)";
Запрос.УстановитьПараметр("НеИспИНН" , обЗначениеНеЗаполнено(ИсточникИНН));
Запрос.УстановитьПараметр("НеИспКПП" , обЗначениеНеЗаполнено(ИсточникКПП));
Если ЗначениеЗаполнено(ИсточникИНН) И ЗначениеЗаполнено(ИсточникКПП) Тогда
Запрос.УстановитьПараметр("НеИспНаименование" , Истина);
Запрос.УстановитьПараметр("НеИспДатуРождения" , Истина);
Иначе
Запрос.УстановитьПараметр("НеИспНаименование" , обЗначениеНеЗаполнено(ИсточникНаименованиеКонтрагента));
Запрос.УстановитьПараметр("НеИспДатуРождения" , обЗначениеНеЗаполнено(ДатаРождения));
КонецЕсли;
Запрос.УстановитьПараметр("ИНН", ИсточникИНН);
Запрос.УстановитьПараметр("КПП", ИсточникКПП);
Запрос.УстановитьПараметр("Наименование", ИсточникНаименованиеКонтрагента);
Запрос.УстановитьПараметр("ДатаРождения", ДатаРождения);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ПометкаУдаления
| И (&НеИспИНН
| ИЛИ Контрагенты.ИНН = &ИНН)
| И (&НеИспКПП
| ИЛИ Контрагенты.КПП = &КПП)
| И (&НеИспНаименование
| ИЛИ Контрагенты.Наименование = &Наименование)
| И (&НеИспДатуРождения
| ИЛИ Контрагенты.ДатаРождения = &ДатаРождения)";
Запрос.УстановитьПараметр("НеИспИНН" , обЗначениеНеЗаполнено(ИсточникИНН));
Запрос.УстановитьПараметр("НеИспКПП" , обЗначениеНеЗаполнено(ИсточникКПП));
Если ЗначениеЗаполнено(ИсточникИНН) И ЗначениеЗаполнено(ИсточникКПП) Тогда
Запрос.УстановитьПараметр("НеИспНаименование" , Истина);
Запрос.УстановитьПараметр("НеИспДатуРождения" , Истина);
Иначе
Запрос.УстановитьПараметр("НеИспНаименование" , обЗначениеНеЗаполнено(ИсточникНаименованиеКонтрагента));
Запрос.УстановитьПараметр("НеИспДатуРождения" , обЗначениеНеЗаполнено(ДатаРождения));
КонецЕсли;
Запрос.УстановитьПараметр("ИНН", ИсточникИНН);
Запрос.УстановитьПараметр("КПП", ИсточникКПП);
Запрос.УстановитьПараметр("Наименование", ИсточникНаименованиеКонтрагента);
Запрос.УстановитьПараметр("ДатаРождения", ДатаРождения);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
1. В винде есть клевая программа, называется "Ножницы". Не благодарите.
2. Обычно, контрагенты задваиваются, когда они не находятся по указанным параметрам. Ну, например, ища по имени, ИНН, КПП, ОГРН и чему-либо еще, при том по какой-то причине не находя это (забыли КПП передать или ОГРН), система создает еще одного контрагента. Также иногда умные программисты проверяют, что найдено одно значение, а если таких значений не одно (ноль - что верно, или два - что неверно), то типа и не найдено.
3. Это справедливо для вообще любого справочника.
2. Обычно, контрагенты задваиваются, когда они не находятся по указанным параметрам. Ну, например, ища по имени, ИНН, КПП, ОГРН и чему-либо еще, при том по какой-то причине не находя это (забыли КПП передать или ОГРН), система создает еще одного контрагента. Также иногда умные программисты проверяют, что найдено одно значение, а если таких значений не одно (ноль - что верно, или два - что неверно), то типа и не найдено.
3. Это справедливо для вообще любого справочника.
Ну сначала надо разделить ту кучу, что на входе. Гасторбайтеры без инн - направо, остальные налево. Ну и искать в разных группах разными методами. Если есть ИНН и КПП - искать по ним, если нет КПП - искать по ИНН, если нет ИНН - искать по ФИО, если нет фио - ну повеситься.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот