На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » Бизнес-софт » 1С:Предприятие

Методы оптимизации запросов

Общие положения написания запросов

Примером неправильной работы с данными в 1С:Предприятиии, есть и остается избыточное обращение к базе данных, вне зависимости от того, в каком формате она хранится.

Как избежать лишних обращений к ИБ, и тем самым существенно уменьшить время формирования отчета проиллюстрируем на примере "Оптимизация Отчета".

Закладка 100%

       ТекстЗапроса =

       "//{{ЗАПРОС(Сформировать100)

       |Период с ВыбНачПериода по ВыбКонПериода;

       |Товар = Документ.РасхНакл.Товар;

       |Количество = Документ.РасхНакл.Количество;

       |Функция КоличествоСумма = Сумма(Количество);

       |Группировка Товар;

       |Условие(Товар в ВыбТовар);

       |Условие(Товар.ВидТовара = ВыбВидТовара);

       |"//}}ЗАПРОС

       ;

При написании текста запроса необходимо учитывать, что Запрос при формировании выборки сам отрабатывает только элементарные условия , не запуская при этом исполнительную среду встроенного языка, что значительно экономит время. Если есть возможность привести условие к элементарному - это необходимо сделать.

       "//{{ЗАПРОС(Сформировать15)

       |Период с ВыбНачПериода по ВыбКонПериода;

       |Товар = Документ.РасхНакл.Товар;

       |ВидТовара = Документ.РасхНакл.Товар.ВидТовара;

       |Количество = Документ.РасхНакл.Количество;

       |Функция КоличествоСумма = Сумма(Количество);

       |Группировка Товар;

       |Условие(Товар в ВыбТовар);

       |Условие(ВидТовара=ВыбВидТовара);

       |"//}}ЗАПРОС

       ;

Так как выборка формируется на компьютере пользователя, то все данные, которые необходимы пользователю для построения отчета, должны быть, по возможности, получены посредством запроса. В таблице выводится значение кода товара – для этого в запросе необходимо ввести переменную КодТовара . Тогда для формирования отчета, отпадет необходимость, каждый раз обращаться к ИБ. Следует не забывать про методы Запроса - ЗначениеУпорядочивания и ЭтоГруппа , которые опять же извлекают данные из выборки, минуя ИБ, что заметно уменьшает время формирования запроса.

       "//{{ЗАПРОС(Сформировать3)

       |Период с ВыбНачПериода по ВыбКонПериода;

       |Товар = Документ.РасхНакл.Товар;

       |ВидТовара = Документ.РасхНакл.Товар.ВидТовара;

       |КодТовара = Документ.РасхНакл.Товар.Код;

       |Количество = Документ.РасхНакл.Количество;

       |Функция КоличествоСумма = Сумма(Количество);

       |Группировка Товар;

       |Условие(Товар в ВыбТовар);

       |Условие(ВидТовара=ВыбВидТовара);

       |"//}}ЗАПРОС

       ;

В отчете "Оптимизация Отчета" время выполнение самой медленной версии взято за 100%, остальные версии берутся как процент от нее. Следование правилам, дало возможность уменьшить время выполнения запроса почти на 2 порядка!

Особенности использования запросов для получения информации из справочников

В случае применения объекта "Запрос" для выборки информации из справочников 1С:Предприятия необходимо учитывать следующую особенность. При обработке справочника объект "Запрос" не обрабатывает группы справочника. То есть он не использует их в качестве исходных данных для получения первичной выборки. При обработке уже полученных записей запрос добавляет группы для выбранных записей - элементов, если существует группировка по переменной запроса типа "Справочник". Такой способ обработки является стандартным, и Запрос выполняет ее так же, как он это делает, например, для реквизитов документа имеющих тип "Справочник". То есть, если в запросе по документам использовать группировку по реквизиту "Товар" документа "Счет", то в полученном отчете можно получить записи и по группам товаров, вошедших в запрос. Аналогично, если в запросе по справочнику получать в качестве группировки текущий элемент, то в полученный отчет будут включены записи, соответствующие группам отобранных запросом элементов. Однако так как сами группы не обрабатываются запросом при заполнении таблицы выборки, то в отчет не попадут те группы, которые не имеют элементов, или группы, элементы которых не попали в выборку. Соответственно объект "Запрос" не может применяться в тех случаях, когда нужно обрабатывать собственно группы, или получать все элементы, включая группы. С другой стороны, так как в большинстве случаев должны выбираться непосредственно элементы, запрос может быть успешно применен для обработки справочника. В том числе, Запрос позволяет существенно ускорить выборку элементов по условию, при работе с базой данных в формате SQL.

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


Mista.Ru

Подпишитесь на рассылку
Все о WEBСтроительстве
Подписка на Subscribe.Ru
Дискуссионная рассылка
для веб-мастеров

Подписка на MailList.Ru
Подписка на Content.Mail.Ru

Другие разделы
ASP
1С:Предприятие
Финансовые программы
Управление предприятием
CRM системы
Новое в разделе
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100