Не ищет по реквизиту

1. user1540294 23.09.22 09:36 Сейчас в теме
Для а = НачНомерСтроки По КонНомерСтроки Цикл
			Если ЗначениеЗаполнено(ЭлементыФормы.ТаблицаКлючей.Область(а, 3).Текст) = Истина Тогда
				Продолжить;
			КонецЕсли;
			  //стрТЗ = ЭлементыФормы.ТаблицаКлючей.Найти(СокрЛП(ЭлементыФормы.ТаблицаКлючей.Область(а, 1).Текст), "ИНН");
			  
			  пр="9200467766";
			  Сп= Справочники.БазаТМ;
			спр = Сп.НайтиПоРеквизиту("Телефон1",пр);
			
			МассивИНН1.Добавить(спр.ИНН);
		КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Vitaly1C8 23.09.22 09:57 Сейчас в теме
ЭлементыФормы.ТаблицаКлючей.НайтиТекст(...
3. user1203706 13 23.09.22 10:16 Сейчас в теме
(1) Какой тип имеет реквизит Телефон1 в справочнике БазаТМ ?
Если это Строка неогр. длины, то метод НайтиПоРеквизиту использовать нельзя.
4. user1540294 23.09.22 10:21 Сейчас в теме
5. user1540294 23.09.22 10:23 Сейчас в теме
(2)Для а = НачНомерСтроки По КонНомерСтроки Цикл
Если ЗначениеЗаполнено(ЭлементыФормы.ТаблицаКлючей.Область(а, 3).Текст) = Истина Тогда
Продолжить;
КонецЕсли;

с = СокрЛП(ЭлементыФормы.ТаблицаКлючей.Область(а, 1).Текст);
//МассивИНН1.Добавить(СокрЛП(ЭлементыФормы.ТаблицаКлючей.Область(а, 1).Текст));


Сп= Справочники.БазаТМ;
спр = Сп.НайтиПоРеквизиту("Телефон1",с);

МассивИНН1.Добавить(спр.ИНН);
КонецЦикла;
6. user1203706 13 23.09.22 10:28 Сейчас в теме
(5) значит, нет в этом справочнике элементов с таким значением реквизита.
7. user1540294 23.09.22 10:34 Сейчас в теме
(6) в данных есть этот реквизит
8. user1203706 13 23.09.22 10:34 Сейчас в теме
(7) запускай, пиши, че пишет

Для НомерСтроки = НачНомерСтроки По КонНомерСтроки Цикл
       Если ЗначениеЗаполнено(ЭлементыФормы.ТаблицаКлючей.Область(НомерСтроки , 3).Текст) Тогда
             Продолжить;
        КонецЕсли;

       Телефон = СокрЛП(ЭлементыФормы.ТаблицаКлючей.Область(НомерСтроки , 1).Текст);
        НайденноеЗначение = Справочники.БазаТМ.НайтиПоРеквизиту("Телефон1",Телефон);
        Если НайденноеЗначение =  Справочники.БазаТМ.ПустаяССылка() Тогда
                Сообщить("Для "+Телефон+" не найден элемент справочника");
        ИначеЕсли ЗначениеЗаполнено(НайденноеЗначение.ИНН) Тогда
                МассивИНН1.Добавить(НайденноеЗначение.ИНН);
                Сообщить("Для "+Телефон+"  найден элемент "+НайденноеЗначение+" ИНН = "+НайденноеЗначение.ИНН);

        Иначе
                Сообщить("У найденного элемента "+НайденноеЗначение +" не заполнен ИНН");
        КонецЕсли;
              
КонецЦикла;
Показать
9. user1540294 23.09.22 10:42 Сейчас в теме
Для 9200467766 не найден элемент справочника
У найденного элемента Лаборатория продаж, конса не заполнен ИНН
У найденного элемента Лаборатория продаж, конса не заполнен ИНН
У найденного элемента Дом не заполнен ИНН
У найденного элемента Лаборатория продаж, конса не заполнен ИНН
У найденного элемента Лаборатория продаж, конса не заполнен ИНН
У найденного элемента Лаборатория продаж, конса не заполнен ИНН
У найденного элемента Лаборатория продаж, конса не заполнен ИНН
У найденного элемента Лаборатория продаж, конса не заполнен ИНН
10. user1203706 13 23.09.22 10:47 Сейчас в теме
12. user1540294 23.09.22 10:49 Сейчас в теме
(10) нет 9200467766 не найден элемент справочника должен найти Индивидуальный предприниматель Яцы Сергей Григорьевич
13. user1540294 23.09.22 10:49 Сейчас в теме
11. Vitaly1C8 23.09.22 10:47 Сейчас в теме
//если элемент найден, он становится текущим и его можно прочитать так:
Если СпрСотр.НайтиПоРеквизиту("Телефон1",пр)=1 Тогда
НайденныйСотр = СпрСотр.ТекущийЭлемент();
КонецЕсли;
14. user1203706 13 23.09.22 10:49 Сейчас в теме
(12)
Значит, в реквизите данный телефон записан с пробелами спереди
15. user1540294 23.09.22 10:50 Сейчас в теме
(14)вот так он записан

9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 9200467766; 92004677
16. user1203706 13 23.09.22 10:52 Сейчас в теме
(15)
Эта строка прям так целиком записана в реквизите Телефон1 ?
Если да, то огорчу вас: НайтиПоРеквизиту ищет точное значение строки, это не поиск по подстроке.

Если нужен поиск по подстроке в реквизите, то используйте запрос + like в условии
17. user1540294 23.09.22 10:53 Сейчас в теме
(16) да я так и понял уже) запросом искать любое словосочетание?
18. user1203706 13 23.09.22 11:03 Сейчас в теме
(17)
Функция НайтиНечтоПоТелефону(Телефон)
     Запрос = Новый Запрос ("
|ВЫБРАТЬ
|	БазаТМ.Ссылка КАК Ссылка, БазаТМ.ИНН как ИНН
|ИЗ
|	Справочник.БазаТМ КАК БазаТМ
|ГДЕ
|	БазаТМ.Телефон1 ПОДОБНО &Телефон1
|");
     Запрос.УстановитьПараметр("Телефон1","%"+Телефон+"%");
     Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
          Возврат Новый Структура("Элемент,ИНН",Выборка.ССылка,Выборка.ИНН);
    КонецЕсли;
Возврат Новый Структура("Элемент,ИНН",Неопределено,"");
КонецФункции

............

      Телефон = СокрЛП(ЭлементыФормы.ТаблицаКлючей.Область(НомерСтроки , 1).Текст);
      СтруктураОтвета =  НайтиНечтоПоТелефону(Телефон);
      
      Сообщить(СтруктураОтвета.Элемент);
      Сообщить(СтруктураОтвета.ИНН);






Показать
19. user1540294 23.09.22 11:06 Сейчас в теме
20. user1540294 23.09.22 13:30 Сейчас в теме
(18)
Функция НайтиНечтоПоТелефону(Телефон)
Запрос = Новый Запрос ("
|ВЫБРАТЬ
| БазаТМ.Ссылка КАК Ссылка, БазаТМ.ИНН как ИНН
|ИЗ
| Справочник.БазаТМ КАК БазаТМ
|ГДЕ
| БазаТМ.Телефон1 ПОДОБНО &Телефон1
|");
Запрос.УстановитьПараметр("Телефон1","%"+Телефон+"%");
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Новый Структура("Элемент,ИНН",Выборка.ССылка,Выборка.ИНН);
КонецЕсли;
Возврат Неопределено;
КонецФункции
Показать
22. user1540294 23.09.22 14:00 Сейчас в теме
(20)

а как сделать чтоб искал телефон с разными погрешностями .например 7 или 8 в начале телефона
23. user1831019 23.09.22 14:08 Сейчас в теме
(22) А если телефон иностранный? Например, +49?
25. RustamZz 23.09.22 14:30 Сейчас в теме
(22) Дополнить параметр Телефон спереди символами "_" до 11 знаков. "%" убрать.
26. user1540294 23.09.22 14:45 Сейчас в теме
27. user1831019 23.09.22 14:48 Сейчас в теме
(26) Рустам, напиши ему номер карты, пока ещё переводы работают.
28. пользователь 23.09.22 15:02
Сообщение было скрыто модератором.
...
29. пользователь 23.09.22 15:03
Сообщение было скрыто модератором.
...
30. user1831019 23.09.22 15:17 Сейчас в теме
(29) Гуд бай май лав гуд бай.
31. user1831019 23.09.22 15:25 Сейчас в теме
(29) Что за национальность такая - "Масквичи"? Ни разу о такой не слышал...
21. user1540294 23.09.22 13:30 Сейчас в теме
Гениальное решение . большое спасибо
24. user1203706 13 23.09.22 14:17 Сейчас в теме
(22) только сокращением строки поиска, т.е отсекать 8 или +7
А вообще, в базу надо заводить всегда в одном формате, тогда и проблем с поиском и разночтений не будет
Оставьте свое сообщение

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