поиск контрагента по инн и кпп программно

1. Shecurok 07.04.21 17:17 Сейчас в теме
Добрый вечер.
Вопрос собственно в шапке. ИНН и КПП попадают в СтрокаТЗ из экселя.
Теперь необходимо при создании контрагентов проверить нет ли уже такого ( сразу проверить не ИП ли это).
Сейчас Выборка показывает "ошибка чтения значения" (ну или ка то так). Так же сразу скажу, что загружается ИП. так, что КПП тут равен "".
Но как бороться с "ошибкой чтения значения"?


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


Пробовал еще так, но значение к Булево нельзя преобразовать (ошибка)
ЭтоЮрЛицо = ?(СтрДлина(ИННКонтрагента) = 10, Истина, Ложь);
		СпрКонтрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИННКонтрагента) И Справочники.Контрагенты.НайтиПоРеквизиту("КПП", КППКонтрагента);// ИЛИ ЭтоЮрЛицо = Ложь;
		
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Shecurok 07.04.21 17:21 Сейчас в теме
то, что у меня там две проверки на ип и юр лицо не обращайте внимания) это удалиться и остнется одна красивая
3. andy_zhav 197 07.04.21 17:23 Сейчас в теме
(1) Как полностью выглядит ошибка?
4. DenisCh 07.04.21 17:24 Сейчас в теме
В каком месте смотришь значение выборки?
7. Shecurok 07.04.21 17:26 Сейчас в теме
(4) сомтрю на строке Выборка = Запрос.Выполнить().Выбрать();
Прикрепленные файлы:
14. DenisCh 07.04.21 17:34 Сейчас в теме
(7) и правильно 1с тебе говорит
nomad_irk; FatPanzer; +2 Ответить
15. Shecurok 07.04.21 17:34 Сейчас в теме
(14) да уж думаю да, врать не будет. А не подскажите почему это могло прозойти?
17. DenisCh 07.04.21 17:41 Сейчас в теме
(15) Потому что выборку нужно обходить через .Следующий(), чтобы прочитать данные
5. DenisCh 07.04.21 17:24 Сейчас в теме
И да...
Запрос.Текст = "
   |ВЫБРАТЬ
   |   Контрагенты.ИНН КАК ИНН,
   |   Контрагенты.КПП КАК КПП

...

Возврат Выборка.Ссылка;



Ошибка должна быть другая
6. user633533_encantado 11 07.04.21 17:26 Сейчас в теме
Возврат Выборка.Ссылка;

В запросе у тебя только поле инн и кпп, а где поле "ссылка"
8. andy_zhav 197 07.04.21 17:26 Сейчас в теме
(7) а выборка.следующий()?
11. Shecurok 07.04.21 17:29 Сейчас в теме
(8) там пишеь поле не найдено Следующий
9. Shecurok 07.04.21 17:27 Сейчас в теме
Я про какой то цикл забыл видимо. Но до него еще доберусь. Пока не пойму почему выборка пустая
10. andy_zhav 197 07.04.21 17:29 Сейчас в теме
(9) Запрос.Выполнить().Выбрать() формирует выборку.
Чтобы ее прочитать ее нужно обойти или спозиционироваться на первой записи

Пока Выборка.Следующий() Цикл


КонецЦикла

Или просто Выборка.Следующий(), если запись одна
12. Степной 27 07.04.21 17:30 Сейчас в теме
(1) Рекомендую искать контрагентов одним запросом по всей таблице значений.
mom18; nomad_irk; vadim.semyonov.rzn; +3 Ответить
13. Shecurok 07.04.21 17:32 Сейчас в теме
(12) т.е делаю запрос на всех контров а потом из эт таблцы вытягиваю инн и кпп и сравниваю?
16. Степной 27 07.04.21 17:35 Сейчас в теме
(13) Можно передать ТЗ в запрос как параметр. Далее в запросе поиск в справочнике Контрагенты по нужным полям. Найденный контрагент будет в отдельной колонке, если в колонке значения нет, значит контрагент не найден.
nomad_irk; +1 Ответить
Оставьте свое сообщение

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