Ускорение работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое

10.09.12

Разработка - Запросы

Для ускорения работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое, нужно уменьшить количество выполнений запроса.

Для того чтоб запрос не выполнялся каждый раз при переходах по списку можно использовать Соответствие, которое будет выполнять роль временного хранилища результатов запросов.

Для ускорения работы со списком документов, в котором при выводе строки выполняется запрос по регистрам или ещё что-нибудь трудоемкое, нужно уменьшить количество выполнений запроса.

Для того чтоб запрос не выполнялся каждый раз при переходах по списку можно использовать Соответствие, в котором будет храниться результат запроса. Если запрос по текущему документу уже выполнялся, его результат будет найден в соответствии.

Один недостаток, что данные в соответствии могут устареть за то время что открыт журнал. Но их можно обновить переоткрыв журнал.

Ниже пример кода в модуле формы списка:

Перем СводОстатков;
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)  
    НайденныйОстаток = СводОстатков.Получить(ДанныеСтроки.Ссылка);
    Если НайденныйОстаток = Неопределено Тогда      
        Запрос = Новый Запрос;   
        Запрос.Текст="ВЫБРАТЬ                
        | ЗаказыПоставщикамОстатки.КоличествоОстаток                
        |ИЗ                
        | РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки                
        |ГДЕ                
        | ЗаказыПоставщикамОстатки.ЗаказПоставщику = &ссылка" ;   
        Запрос.УстановитьПараметр("Ссылка", ДанныеСтроки.Ссылка);   
        Рез = Запрос.Выполнить();   
        Если Рез.Пустой() Тогда    
            ОформлениеСтроки.ЦветФона = WebЦвета.Белый;     
            СводОстатков.Вставить(ДанныеСтроки.Ссылка,0);  
        Иначе    
            ОформлениеСтроки.ЦветФона = WebЦвета.СветлоКоралловый;   
            СводОстатков.Вставить(ДанныеСтроки.Ссылка,1);  
        КонецЕсли;   
    Иначе   
        Если НайденныйОстаток = 0 Тогда    
            ОформлениеСтроки.ЦветФона = WebЦвета.Белый;    
        Иначе    
            ОформлениеСтроки.ЦветФона = WebЦвета.СветлоКоралловый;   
        КонецЕсли;   
    КонецЕсли;   
КонецПроцедуры

СводОстатков =  Новый Соответствие();

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121557    670    389    

709

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5738    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    1999    2    Yashazz    0    

29

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6276    30    mkalimulin    25    

49

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1739    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5382    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16161    skovpin_sa    14    

98
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. akomar 454 10.09.12 13:27 Сейчас в теме
Вы предполагаете изменять модуль формы или модуль объекта типовой?
6. khaoos 239 11.09.12 09:46 Сейчас в теме
(1) в типовых конфигурациях, я думаю, не встретишь тяжелых запросов при выводе каждой строки. А вот в "допиленных" - это сколько угодно :).
2. Dimasik2007 430 10.09.12 13:43 Сейчас в теме
ПриВыводеСтроки не совсем удачная идея. Лучше данные сразу получать порциями в процедуре ПриПолученииДанных.
Подробности курим тут: http://kb.mista.ru/article.php?id=310
mtv:); artbear; +2 Ответить
3. Модератор раздела 10.09.12 15:55 Сейчас в теме
(0) Неудачная реализация, намного лучше/быстрее/производительнее ПриПолученииДанных.
Правда, не во всех списках оно работает. Правда, в каких списках его нет, навскидку не вспомню :)
4. Dimasik2007 430 10.09.12 16:55 Сейчас в теме
Пример быстрой раскраски:





Функция ПолучитьМассивСсылокОформленияСтрок(ОформленияСтрок)

Массив = Новый Массив;

Для каждого
ОформлениеСтроки Из ОформленияСтрок Цикл
Массив.Добавить(ОформлениеСтроки.Данныестроки.Ссылка);
КонецЦикла;

Возврат
Массив;

КонецФункции
// ПолучитьСписокСсылок(ОформленияСтрок)

Функция ПолучитьТаблицаНаличиеФайлов (МассивСсылокОформления)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ _ФайловоеХранилищеСрезПоследних.Путь) КАК КоличествоФайлов,
| _ФайловоеХранилищеСрезПоследних.Документ как Ссылка
|ИЗ
| РегистрСведений._ФайловоеХранилище.СрезПоследних(, Документ В (&МассивСсылокОформления)) КАК _ФайловоеХранилищеСрезПоследних
|
|СГРУППИРОВАТЬ ПО
| _ФайловоеХранилищеСрезПоследних.Документ"
;

Запрос.УстановитьПараметр("МассивСсылокОформления", МассивСсылокОформления);

Возврат
Запрос.Выполнить().Выгрузить();

КонецФункции
// ПолучитьТаблицаНаличиеФайлов(ОформленияСтрок)()

// отрисуем значок прикрепленных файлов к документу
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
МассивСсылокОформления = ПолучитьМассивСсылокОформленияСтрок(ОформленияСтрок);
ТаблицаДанныхНаличиеФайлов = ПолучитьТаблицаНаличиеФайлов (МассивСсылокОформления);

Для каждого
ОформлениеСтроки Из ОформленияСтрок Цикл
СтрокаОформленияСтрок = ТаблицаДанныхНаличиеФайлов.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка, "Ссылка");
Если
СтрокаОформленияСтрок <> неопределено Тогда
Если
ЗначениеЗаполнено(СтрокаОформленияСтрок.КоличествоФайлов) Тогда
ОформлениеСтроки.Ячейки.Номер.УстановитьКартинку(БиблиотекаКартинок._Скрепка);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
5. Dimasik2007 430 10.09.12 16:57 Сейчас в теме
Таблицу использовал, потому что отрисовывал еще количество файлов, а так можно использовать все тоже соответствие.
7. zergey128 8 12.09.12 09:49 Сейчас в теме
Автор,курите типовые, а не изобретайте велосипед.
Оставьте свое сообщение