|
v7: НайтиПоРеквизиту() | ☑ | ||
---|---|---|---|---|
0
1С-ница
04.09.14
✎
16:19
|
Бух учет 7.70.578
Платформа 7.70.027 (для SQL) код: Контрагент=СоздатьОбъект("Справочник.Контрагенты"); Если Контрагент.НайтиПоРеквизиту("ИНН",ИНН,1) = 0 Тогда Сообщить("Контрагент с ИНН " + ИНН + " не найден в базе!"); КонецЕсли; В отладчике Контрагент.НайтиПоРеквизиту("ИНН",ИНН,1) равно 0. Такой ИНН в справочнике есть. У реквизита ИНН установлены галки "Сортировка" и "Отбор по реквизиту"установлены. Даже если в отладчике задать конкретное значение ИНН (правильное) - не находит. |
|||
1
1С-ница
04.09.14
✎
16:35
|
Нашла причину, в поле с ИНН еще прописан КПП через \
|
|||
2
пипец
04.09.14
✎
16:36
|
еще может быть прописан и через /
ЗЫ есть обработка банк клиент - там этот поиск в полной красе |
|||
3
_fvadim
04.09.14
✎
16:37
|
ааааа! бухия 7.7, да там есть такое :)
(взгрустнул по предыдущей работе) |
|||
4
1С-ница
04.09.14
✎
16:41
|
Косяк в том, что не у всех указан КПП, а для поиска есть только ИНН. Остается только переборкой справочника(((
|
|||
5
КонецЦикла
04.09.14
✎
17:00
|
(4) Черный запрос на вхождение (смотри поиск по подстроке в ТиС)
...или прямой с like |
|||
6
Garykom
гуру
04.09.14
✎
17:06
|
(5) дык все проще, вряд ли контрагентов больше 1000
так что в ТЗ все эти ИНН и разделить перед поиском т.е. сначала всех обрабатываем, и потом быстро ищем по ТЗ но это если несколько контрагентов нужно искать в цикле каком то например при загрузке, тогда заполнение ТЗ можно вынести перед циклом и будет очень быстро... |
|||
7
КонецЦикла
04.09.14
✎
17:09
|
(6) Т.е. перебрать всех, запихнуть в ТЗ...
А потом искать в ТЗ (по сути это тоже перебор)? Не быстрее ли тогда сразу смотреть содержимое строки? |
|||
8
Garykom
гуру
04.09.14
✎
17:15
|
(7) не, перебираем то один раз всех контрагентов, а ищем потом мгновенно - скорость поиска по ТЗ = скорости поиска индекса таблицы
и искать сам элемент справочника не надо они уже все в ТЗ |
|||
9
КонецЦикла
04.09.14
✎
17:36
|
(8) Штатная ТЗ не индексируется и скорость поиска зависит от положения строки :)
|
|||
10
Garykom
гуру
04.09.14
✎
17:53
|
(9) угу ну можно сделать не линейную ТЗ а https://ru.wikipedia.org/wiki/АВЛ-дерево :)
и заюзать свой "индексированный" поиск но для <1000 строк поиск в обычной ТЗ (в памяти) быстрее чем поиск по индексу (на диске не SSD) в базе |
|||
11
ivsher
05.09.14
✎
10:48
|
Да все это полумеры. Прямой запрос с Left() либо Like.
ну или можно поискать в строке символы "/", "\". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |