Salimbek,тест с тексовыми данными ничего не покажет.
Вот структура ИТЗ:
итзТаблицаДанных = СоздатьОбъект("ИндексированнаяТаблица");
итзТаблицаДанных.НоваяКолонка("ИдентификаторЗаписи"); //Уникальный идентификатор
итзТаблицаДанных.НоваяКолонка("СтрокаДобавлена"); //1 если товар добавлен интерактивно
итзТаблицаДанных.НоваяКолонка("Родитель"); //Пусто для контрагента, контрагент для заказа товара или ЗаказТовара для товара
итзТаблицаДанных.НоваяКолонка("Элемент"); //Контрагент, ЗаказТовара или Товар
итзТаблицаДанных.НоваяКолонка("Элемент_Код"); //Код контрагента или товара
итзТаблицаДанных.НоваяКолонка("Элемент_Представление"); //Строковое представление
итзТаблицаДанных.НоваяКолонка("ЭтоГруппа"); //1 для Контрагент и ЗаказТовара
итзТаблицаДанных.НоваяКолонка("Уровень"); //Уровень вложенности
итзТаблицаДанных.НоваяКолонка("УзелРазвернут"); //1 если развернута группа
итзТаблицаДанных.НоваяКолонка("КоличествоФин");
итзТаблицаДанных.НоваяКолонка("КоличествоФин_ЕстьИзменения");
итзТаблицаДанных.НоваяКолонка("ЦенаФин");
итзТаблицаДанных.НоваяКолонка("ЦенаФин_ЕстьИзменения");
итзТаблицаДанных.НоваяКолонка("СуммаФин");
итзТаблицаДанных.НоваяКолонка("Количество");
итзТаблицаДанных.НоваяКолонка("Количество_ЕстьИзменения");
итзТаблицаДанных.НоваяКолонка("Цена");
итзТаблицаДанных.НоваяКолонка("Цена_ЕстьИзменения");
итзТаблицаДанных.НоваяКолонка("Сумма");
итзТаблицаДанных.НоваяКолонка("ГТД");
итзТаблицаДанных.НоваяКолонка("ГТД_ЕстьИзменения");
итзТаблицаДанных.ДобавитьИндекс("Элемент","Элемент");
С помощью отладчика и sql pofiler удалось выяснить следующее:
1. Код
итзЗаказыПоставщику.УстановитьФильтр(Родитель,Родитель,"ЗаказПоставщику");
итзЗаказыПоставщику.ВыбратьСтроки("ЗаказПоставщику");
, где итзЗаказыПоставщику - индексированная таблица, в которой колонка "ЗаказПоставщику" содержит документы и по которой стоит индекс
вызывает хранимку exec _1sp__1SJOURN_ByIDDOC() (которая возвращает строку со всеми колонками по документу из журнала) по всем ЗаказамПоставщику, попавшим в отбор по индексу
2. Код (структура ИТЗ выше)
итзТаблицаДанных.НоваяСтрока();
итзТаблицаДанных.ЗаполнитьСтроку(,КопияТаблицыДанных,ъ,1);
для строк, в которых Элемент - это документ (когда элемент = стравочник ничего не проиходит), вывзвает эту же хранимку причем несколько раз, примерно так:
exec _1sp__1SJOURN_ByIDDOC '18TIRL001'
exec _1sp__1SJOURN_ByIDDOC '1HWUTG001'
exec _1sp__1SJOURN_ByIDDOC '1HPOFK001'
exec _1sp__1SJOURN_ByIDDOC '1HWUTG001'
exec _1sp__1SJOURN_ByIDDOC '1I0YMN001'
exec _1sp__1SJOURN_ByIDDOC '1HWUTG001'
exec _1sp__1SJOURN_ByIDDOC '1HW62S001'
exec _1sp__1SJOURN_ByIDDOC '1HWUTG001'
exec _1sp__1SJOURN_ByIDDOC '1HYHCQ001'
exec _1sp__1SJOURN_ByIDDOC '1HWUTG001'
exec _1sp__1SJOURN_ByIDDOC '1HXJSG001'
exec _1sp__1SJOURN_ByIDDOC '1HWUTG001'
exec _1sp__1SJOURN_ByIDDOC 1HWHM8001'
exec _1sp__1SJOURN_ByIDDOC '1HWUTG001'
exec _1sp__1SJOURN_ByIDDOC '1HWQQT001'
exec _1sp__1SJOURN_ByIDDOC '1HWUTG001'
причем только документ с ИД '1HWUTG001' находится в копируемой строке, и только один документ есть у этого контрагента в итзТаблицаДанных.
А база у нас (можете судить по ид документа) - очень большая, поэтому лишние обращения к ней - ни к чему
Возможно дело именно в индексах, а точнее с попыткой итз сортировать индекс, причем для документа, видимо, по позиции.
Обычная ТЗ при методе НайтиЗначение() никаких обращений не выполняет