как избавиться от цикла в цикле? #783111


#0 by Eeelena
Здравствуйте. Имеется следующий код Как избавиться от цикла в цикле?
#1 by Сергиус
Запросом.
#2 by zladenuw
итерация
#3 by Nuobu
Для каждого НайденнаяСтрока Из НайденныеСтроки Цикл
#4 by Naf_kultura
Для каждого Строка Из ОсновныеСредстваВсе Цикл
#5 by Мойдодыр
может сразу искатьпо 2 полям?
#6 by Eeelena
от этого выполняться быстрее не стало( делаю замер производительности, на этом участке кода показывает кол вызовов 1633, время(чистое) 11,03, %Время(чистое) 88,66
#7 by Serg_1960
Угу. НайтиСтроки позволяет искать по нескольким полям - структура же не зря используется.
#8 by Timon1405
можно еще дописать в начале Назначения.Индексы.Добавить("ДокументОснование, основноеСредство");
#9 by Eeelena
выяснала что проблема быстродействия не в этом коде, а в Для каждого Строка Из ОсновныеСредстваВсе Цикл Код функции НазначениеВозможно В ТЗ ОсновныеСредсваВсе 2412 строк и для каждой вызывается эта функция, как можно повысит быстродействие?
#10 by Мойдодыр
а в этой функции где затык?
#11 by Dotoshin
Тормоза возникают при обращении к вот таким реквизитам: ДанныеСтроки.Модель.ТипМашиныМеханизма ТекущиеДанныеЗаявки.Заявка.ТипОС Каждое такое обращение порождает запрос к БД, к тому же не оптимальный. Если избавиться от обращения к реквизитам через точку, особенно через две и более точек тормоза должны уменьшиться.
#12 by Eeelena
в замере производительности на этой строке если ЗначениеЗаполнено(ТекущиеДанныеЗаявки.Заявка.ТипОС)    и ТекущиеДанныеЗаявки.Заявка.ТипОС<>ДанныеСтроки.Модель.ТипМашиныМеханизма
#13 by Eeelena
да, спасибо, это я исправила, но производительность не повысилась
#14 by Torquader
А вообще с чем идёт война - может быть - динамический список в принципе быстрее работать не может ?
#15 by Мойдодыр
получай типОС через функцию ЗначениеРеквизитаОбъекта
#16 by Eeelena
это для управляемых форм?
#17 by Eeelena
у меня обычные формы
#18 by Dotoshin
Ну тогда только получение всех необходимых данных одним запросом спасет вас от тормозов. Ну то есть делаете один запрос, в котором проверяете все необходимые условия, заполняете все необходимые поля и один раз обходите результат этого запроса.
#19 by Eeelena
сделала вот так Значение = Истина; но судя по замеру стало работать еще медленнее
#20 by Dotoshin
Модель=ДанныеСтроки.Модель Модель.ТипМашиныМеханизма и подобные строки это все запросы к БД, то есть  когда вы обращаетесь к Модель.ТипМашиныМеханизма, платформа 1с делает запрос к БД, который "чешет" всю таблицу, платформа конечно кэширует, полученные ранее значения, но это спасает слабо...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С