Доброго дня всем, кто еще остался на 7.7, а так же знатокам 1с++, 1sqlite и прекрасного класса "ПоставщикДанных"
Столкнулась со странным поведением класса ПоставщикДанных.Справочник во время поиска при установленных отборах: если на ПоставщикДанных наложить несколько условий отбора (больше 2-х) - то во время поиска, неважно посимвольного по колонке, или по целому слову, происходит сбой в табличном поле и на месте найденного появляется последний элемент в списке справочника. Более того ломается весь список в табличном поле - элементы разбегаются в хаотичном порядке, последний элемент, который "встаёт" на место найденного по поиску дублируется множество раз . Порядок элементов восстанавливается, если сделать End - Home и все элементы возвращаются на свои места и даже тот элемент который надо найти, перелистыванием находится на своём месте. Слом происходит именно во время поиска.
При чём, слом происходит только если искомый элемент не попадает в "окно" табличного поля, отображаемое на форме. Если элемент "виден" в списке - то поиск его проходит нормально.
Отладка показала, что поиск то работает, и элемент справочника находится, но в момент позиционирования на него
ТабличноеПоле.ТекущаяСтрока = ЗначенияВыборки.ПолучитьЗначение(1,1)
в табличном поле позиция найденного элемента заменяется последним элементом справочника!
Такое ощущение что ломаются какие то внутренние индексы класса связанные с источником данных?
1сpp 3.2.4.1
1sqlite 1.0.2.6/3.36.0.26 by Djelf
ПоставщикДанных 5.0.5 23.05.2014
ПрямыеЗапросы 1.8.6 22.05.2013
Может кто-то уже сталкивался и знает как исправить?
trad писал(а) 17. Октября 2022 :: 07:54:ТП ведет себя подобным образом когда не обеспечена уникальность ключа порядка. Копайте в эту сторону
Хм, начала копать.
Поскольку поиск делаю по наименованию - ключом порядка выступает ТекущийОбъект.idx_DESCR
Включила отладку, увидела что при включённых отборах по полям для которых в бд включён отбор по реквизиту - при поиске выбирается индекс с этим реквизитом... - и поиск ломается
Если в отборе поставщика не используются поля с включёнными отборами - используется индекс по наименованию, как и в ключе порядка - и поиск работает как надо.
Ушла думать
Итак да, отключение признака отбор у реквизитов справочника, которые я использую в отборе поставщика данных, проблему решило.
Интересно, а можно как то влиять на выбор индексов в ПрямомЗапросе, которым пользуется ПоставщикДанных?