В общем начнем пожалуй с самого начала, с первого вопроса
JohnyDeath.
В запросе в параметре субконто было указано "ДоговорыСтрахования". При этом во всех счетах субконто "ДоговорыСтрахования" были под номером 2. В запросе в качестве параметра можно указать было "Субконто2".
Дело в том что поименованное субконто приводит к следующему запросу
select
case :ВидСубконто.<ИмяСубконто>
when ВидСубконто1 then Субконто1
when ВидСубконто2 then Субконто2
....
when ВидСубконто<n> then Субконто<n>
end as Субконто1
from ...
where :ВидСубконто.<ИмяСубконто> in (ВидСубконто1, ВидСубконто2,....ВидСубконто<n>)
Т.е. мало того что чтобы получить значение субконто происходит проверка всех видов субконто по данной сроке, но и в условии на выборку накладывается условие отбора по виду.
При указании "Субконто2" данный запрос будет без секции условий и case в тексте выборки поля запроса.
Собственно на правильность это не влияло, но на оптимальность выполнения точно повлияло бы.
Далее. В самой первой версии с указанием имени параметра было использовано условие Субконто1. Тут ошибки нет. Действительно при указании вида субконто в условии он используются по тому номеру которому были в списке параметра субконто (корсубконто).
НО: условие в запросе к реальным таблицам 1С будет выглядеть как получение поля запроса (case) = ЗначениеСубконто. Согласитесь что это не самый оптимальный запрос. Поэтому можно было получить весьма неприятное время выполнения.
Достаточно было указать в параметре субконто - "Субконто2", и в условии "Субконто2 = :Договор". Таким образом выборка будет куда эффективнее.
Далее JohnyDeath не сказал формат БД. В DBF есть одна особенность использования сравнения. И данную особенность знают немногие. Она и была "исправлена" в новой версии. В общем суть в том, что SQLite сравнивает строки (!!!) с учетом правых пробелов и регистра символов. А поскольку поле "Субконто<n>" одно на таблицу итогов и движений, значение поле будет соответствовать максимальному значению вида субконто которое может быть под номером "n".
Т.е. если у вас есть два счета:
1. Счет А, Субконто1 - Справочник, Субконто2 - Строка.100, Субконто3 - Справочник.ВидСправочника
2. Счет Б, Субконто1 - Строка.100, Субконто2 - Справочник.ВидСправочника, Субконто3 - Справочник.ВидСправочника
Т.о. длина полей будет по максимальному значению: Субконто1 = 100, Субконто2 - 100Ю Субконто3 - 9 (справочник с указанием вида). И поэтому в DBF сравнение будет "недействительно". Поэтому Джонни и не получил желаемого результата.
Решается это следующим образом:
Субконто1 collate_1C = :ЗначениеСубконто
Для SQL строка collate_1C будет проигнорировано, а для DBF проверка пройдет с учетом особенностей словаря 1С.
Так что имейте в виду.
Что касается дальнейших обсуждений, то там было по разному.
leshik не знал что это DBF, думаю если бы знал то может быть сделал кое-какие предложения/предположения.
На будущее, для всех: обязательные условия для получения более точного ответа надо указать:
1. Оригинальный текст запроса
2. Текст запроса если РежимОтладки = 1
3. Версия класса (атрибут Версия)
4. Формат базы данных
Если вы используете 1.06.ххх рекламации рассматриваются только если переедете на 1.07. Если используете 1.07 то сначала попробуйте новую версию. Не помогает? welcome как говорится.
Ну и собственно по результатам обсуждения и моей попытке воспроизвести проблемы была найдена косвенная ошибка и исправлена.
Большое спасибо всем, кто принимал участие, в том числе и помогал ответить на вопросы до моего появления. Я действительно благодарен каждому активному пользователю.