Разработка и оптимизация запросов в 1С:Предприятие 8.3. Оптимизация запросов 1с


Оптимизация запросов 1С

Автор: Белозерских Евгений

Рассмотрим самые распространенные приемы для оптимизации запросов 1С.

> Обращение в запросе к реквизиту поля составного типа

"ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект.Код, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов" В данном случае измерение "Объект", поле составного типа (ссылка на элемент любого справочника, или любой документ в конфигурации). В такой ситуации необходимо использовать конструкцию"ВЫРАЗИТЬ" в запросе, вот таким образом:"ВЫБРАТЬ | ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.Номенклатура).Код, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов"

> Передача "Ссылок" в результате

      Правильно передавать "ПРЕДСТАВЛЕНИЕ()" объекта, т.к. ссылка будет подставлена для расшифровки.

> Использование фильтра в запросе "ГДЕ", вместо параметров виртуальных таблиц

"ВЫБРАТЬ | ВТ.Номенклатура, | ВТ.КоличествоОстаток, | ВТ.Склад |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ВТ |ГДЕ | ВТ.Номенклатура В ИЕРАРХИИ(&Номенклатура) | И ВТ.Склад = &Склад" Собственно можно сказать только одно. ТАК НЕ ДЕЛАТЬ )) ! При работе с виртуальными таблицами регистров, ВСЕГДА следует использовать параметры этих таблиц. И выше указанный запрос, следует переписать вот таким образом:"ВЫБРАТЬ | ВТ.Номенклатура, | ВТ.КоличествоОстаток, | ВТ.Склад |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад = &Склад) КАК ВТ"

> Выполнение с ролями в которых применяется "RLS"

      Тоже самое что применение конструкции "ИЛИ" в отборе и соединении (т.е. не рекомендуется)

> Использование оператора "ИЛИ" в условиях отбора и соединениях

      Важно понимать, что в этом случае индексы работать НЕ будут. А это увеличивает время выполнения запроса. Можно например такое условие разделить на объединение двух запросов.

> Получение значений через "точку"

"ВЫБРАТЬ | Взаиморасчеты.Контрагент, | Взаиморасчеты.СуммаУпр, | Взаиморасчеты.Контрагент.ОсновнойДоговорКонтрагента.Наименование КАК ДоговорКонтрагентаНаименование |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК Взаиморасчеты"       В этом примере, при обращение к реквизиту основного договора, появляется неявное соединение с таблицей справочника "ДоговорыКонтрагентов"

> Функция от параметров запроса

Например в случае применения конструкции НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ) СУБД не "поймет", что это постоянная со значением типа "Дата". Лучше передать в параметр уже вычисленное выражение.

> Соединение с виртуальными таблицами

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

> Конструкция "ДЛЯ ИЗМЕНЕНИЯ"

      Актуально ТОЛЬКО для автоматических блокировок. Для блокировки таблицы (например при проведении и проверке отрицательных остатков, последующего изменения) необходимо установить флаг "Блокировка для последующих изменений" на закладке "Дополнительно", и указать какие таблицы блокируются.

qa.erpstat.ru

Оптимизация запросов в 1С | Nicholas Mikuslas

1. Получение значения поля составного типа через точку

Получение значения поля составного типа называется разыменованием ссылочного поля.

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

Например, запрос следующего вида:

ВЫБРАТЬ    ТоварыНаСкладах.Склад.НаименованиеИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

фактически выглядит так:

ВЫБРАТЬ    Склады.НаименованиеИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады        ПО ТоварыНаСкладах.Склад = Склады.Ссылка

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

Например, если нам нужно получить дату документа регистратора:

ВЫБРАТЬ    ТоварыНаСкладах.Регистратор.ДатаИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

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

В случае, если заранее известен тип регистратора, то обязательно нужно ограничиться только им при помощи конструкции ВЫРАЗИТЬ(<Выражение> КАК <Тип>):

ВЫБРАТЬ    ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваровУслуг).Дата КАК ДатаДокументаИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

Аналогичный запрос для двух регистраторов:

ВЫБРАТЬ    ВЫБОР        КОГДА ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг            ТОГДА ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваровУслуг).Дата        КОГДА ТоварыНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг            ТОГДА ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата    КОНЕЦ КАК ДатаДокументаИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

2. Отбор в виртуальной таблице

Когда необходимо сделать отбор в виртуальной таблице хочется написать следующий запрос:

ВЫБРАТЬ    ТоварыНаСкладахОстатки.КоличествоОстатокИЗ    РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстаткиГДЕ    ТоварыНаСкладахОстатки.Склад = &Склад

Такой запрос не является оптимальным. Дело в том, что в этом случае система выберет сначала все данные, и лишь потом применит к ним отбор. Правильным будет использование условий непосредственно в параметрах виртуальной таблицы:

ВЫБРАТЬ    ТоварыНаСкладахОстатки.КоличествоОстатокИЗ    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки

3. Текстовое представление объекта ссылочного типа

При получении в запросе объекта ссылочного типа:

ВЫБРАТЬ    ТоварыНаСкладах.СкладИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

или при разыменовании:

ВЫБРАТЬ    ТоварыНаСкладах.Склад.НаименованиеИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

система всегда создает дополнительный подзапрос.

В случае, когда необходимо вывести лишь текстовое представление объекта нужно использовать функцию ПРЕДСТАВЛЕНИЕ(<Выражение>):

ВЫБРАТЬ    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладах.Склад)ИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

Запрос в этом случае будет оптимальным, т.к. не будет создаваться дополнительная таблица.

Как найти неоптимальные запросы?

  1. Несколько раз выполняем запрос, чтобы заполнить кэши и пр.
  2. Ставим точку останова на моменте выполнения запроса.
  3. Открываем SQL Server Profiler.
  4. Запускаем в профайлере трассировку.
  5. Выполняем запрос.
  6. Смотрим план выполнения запроса.
  7. Оцениваем показатели Duration (время выполнения запроса) и Reads (количество логических чтений). Последний показатель не должен измеряться тысяцами.

www.mikuslas.ru

1С 8.2 УП : Оптимизация запросов » Запросы » FAQ 1С 8.2 УП : » HelpF.pro

Почему запрос может работать неоптимально: 1. в виртуальных таблицах не используются параметры 2. соединения с подзапросами, условия с подзапросами, вложенные подзапросы 3. соединения с виртуальными таблицами 4. наложение условий на неиндексированные поля 5. получение данных из составного типа через точку 6. использование вложенных подзапросов (с большой вложенностью)

Подробнее:1. В виртуальных таблицах не используются параметрыРекомендация Надо использовать по-максимуму параметры виртуальных таблиц (Остатки, Обороты, ОстаткиИОбороты)Объяснение Сперва выбираются данные для виртуальных таблиц, а потом уже на них накладываются условия, соединения и т.д. Т.е. если сделать запрос:

Код 1C v 8.х ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ГДЕ ТоварыНаСкладахОстатки.Склад = &Склад То сперва выберется вся имеющаяся номенклатура со всеми остатками, а потом на неё наложится условие склада. Надо так:Код 1C v 8.х ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки

2. Соединения с подзапросами, условия с подзапросами, вложенные подзапросыРекомендация Надо вообще стараться не использовать подзапросы, а переписать их во временные таблицы. Соединять следует только объекты метаданных или временные таблицы.Объяснение Оптимизатор СУБД часто не может составить оптимальный план выполнения таких запросов. Проблема в определении алгоритма соединения, который зависит от количества записей в выборке. При использовании временных таблиц размер выбираемых таблиц известен заранее, поэтому СУБД легче составить оптимальный план выполнения. Но при этом появляются накладные расходы на создание временных таблиц.

3. Соединения с виртуальными таблицамиРекомендация Перед соединениями с виртуальными таблицами их следует предварительно выбрать во временные и соединять уже с ними.Объяснение Виртуальные таблицы часто содержатся в нескольких физических таблицах СУБД, в итоге для их выборки составляется подзапрос, а проблемы с ним расшифрованы в п.2.

4. Наложение условий на неидексированные поляРекомендация Для условий запросов должны существовать подходящие индексы. При соединении с виртуальными таблицами, их необходимо проиндексировать по полям, участвующим в соединении.Объяснение При отсутствии подходящего индекса СУБД будет сканировать всю таблицу для соединения по каждому полю. 5. Получение данных из составного типа через точкуРекомендация В запросах использовать ВЫРАЗИТЬ(... КАК ...), в описании типов полей указывать только необходимые типы.Объяснение При выполнении запроса для составного типа без ВЫРАЗИТЬ будет происходить соединение с таблицами всех объектов, входящих в составной тип.

helpf.pro

Оптимизация запросов в 1С | Nicholas Mikuslas

1. Получение значения поля составного типа через точку

Получение значения поля составного типа называется разыменованием ссылочного поля.

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

Например, запрос следующего вида:

ВЫБРАТЬ    ТоварыНаСкладах.Склад.НаименованиеИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

фактически выглядит так:

ВЫБРАТЬ    Склады.НаименованиеИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады        ПО ТоварыНаСкладах.Склад = Склады.Ссылка

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

Например, если нам нужно получить дату документа регистратора:

ВЫБРАТЬ    ТоварыНаСкладах.Регистратор.ДатаИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

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

В случае, если заранее известен тип регистратора, то обязательно нужно ограничиться только им при помощи конструкции ВЫРАЗИТЬ(<Выражение> КАК <Тип>):

ВЫБРАТЬ    ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваровУслуг).Дата КАК ДатаДокументаИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

Аналогичный запрос для двух регистраторов:

ВЫБРАТЬ    ВЫБОР        КОГДА ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг            ТОГДА ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваровУслуг).Дата        КОГДА ТоварыНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг            ТОГДА ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата    КОНЕЦ КАК ДатаДокументаИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

2. Отбор в виртуальной таблице

Когда необходимо сделать отбор в виртуальной таблице хочется написать следующий запрос:

ВЫБРАТЬ    ТоварыНаСкладахОстатки.КоличествоОстатокИЗ    РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстаткиГДЕ    ТоварыНаСкладахОстатки.Склад = &Склад

Такой запрос не является оптимальным. Дело в том, что в этом случае система выберет сначала все данные, и лишь потом применит к ним отбор. Правильным будет использование условий непосредственно в параметрах виртуальной таблицы:

ВЫБРАТЬ    ТоварыНаСкладахОстатки.КоличествоОстатокИЗ    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки

3. Текстовое представление объекта ссылочного типа

При получении в запросе объекта ссылочного типа:

ВЫБРАТЬ    ТоварыНаСкладах.СкладИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

или при разыменовании:

ВЫБРАТЬ    ТоварыНаСкладах.Склад.НаименованиеИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

система всегда создает дополнительный подзапрос.

В случае, когда необходимо вывести лишь текстовое представление объекта нужно использовать функцию ПРЕДСТАВЛЕНИЕ(<Выражение>):

ВЫБРАТЬ    ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладах.Склад)ИЗ    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

Запрос в этом случае будет оптимальным, т.к. не будет создаваться дополнительная таблица.

Как найти неоптимальные запросы?

  1. Несколько раз выполняем запрос, чтобы заполнить кэши и пр.
  2. Ставим точку останова на моменте выполнения запроса.
  3. Открываем SQL Server Profiler.
  4. Запускаем в профайлере трассировку.
  5. Выполняем запрос.
  6. Смотрим план выполнения запроса.
  7. Оцениваем показатели Duration (время выполнения запроса) и Reads (количество логических чтений). Последний показатель не должен измеряться тысяцами.

www.mikuslas.ru

Основные правила оптимизации запросов. Получаем быстрые запросы 1С.

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

Отборы в виртуальной таблице с помощью конструкции ГДЕ . Быстрые запросы 1С

Накладывать фильтры на реквизиты виртуальной таблицы необходимо только через параметры ВТ. Не в коем случае для отбора в виртуальной таблице нельзя использовать конструкцию ГДЕ, это грубейшая ошибка с точки зрения оптимизации. В случае с отбором с помощью ГДЕ по факту система получит ВСЕ записи и только потом отберет нужные записи.

ПРАВИЛЬНО:

ВЫБРАТЬВзаиморасчетыСДепонентамиОрганизацийОстатки.СуммаОстатокИЗРегистрНакопления.ВзаиморасчетыСДепонентамиОрганизаций.Остатки(,Организация = &ОрганизацияИ Физлицо = &Физлицо) КАК ВзаиморасчетыСДепонентамиОрганизацийОстатки

НЕПРАВИЛЬНО:

ВЫБРАТЬВзаиморасчетыСДепонентамиОрганизацийОстатки.СуммаОстатокИЗРегистрНакопления.ВзаиморасчетыСДепонентамиОрганизаций.Остатки(, ) КАК ВзаиморасчетыСДепонентамиОрганизацийОстаткиГДЕВзаиморасчетыСДепонентамиОрганизацийОстатки.Организация = &ОрганизацияИ ВзаиморасчетыСДепонентамиОрганизацийОстатки.Физлицо = &Физлицо

Получение значения поля составного типа через точку

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

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

НЕПРАВИЛЬНО:

ВЫБРАТЬНаборЗаписей.Регистратор.Дата,НаборЗаписей.КоличествоИЗРегистрНакопления.ТоварыOрганизаций КАК НаборЗаписей

Т.е по факту, вот такой запрос будет обращаться не к одной таблице, а к 22 таблицам базы данных ( у этого регистра 21 тип регистратора).

1С рекомендует экспертам в таком случае для оптимизации пожертвовать размером хранимых данных в пользу производительности или универсальностью кода ради производительности:

ПРАВИЛЬНО:

ВЫБРАТЬВЫБОРКОГДА ТоварыОрг.Регистратор ССЫЛКА Документ.РеализацияТоваровУслугТОГДА ВЫРАЗИТЬ(ТоварыОрг.Регистратор КАК Документ.РеализацияТоваровУслуг).ДатаКОГДА ТоварыОрг.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслугТОГДА ВЫРАЗИТЬ(ТоварыОрг.Регистратор КАК Документ.ПоступлениеТоваровУслуг).ДатаКОНЕЦ КАК Дата,ТоварыОрг.КоличествоИЗРегистрНакопления.ТоварыОрганизаций КАК ТоварыОрг

Либо, второй вариант — добавление такой информации в реквизит, например, в нашем случае — добавление даты.

ПРАВИЛЬНО:

ВЫБРАТЬТоварыОрганизаций.Дата,ТоварыОрганизаций.КоличествоИЗРегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций

Подзапросы в условии соединения (оптимизированный запрос)

Для оптимизации недопустимо использовать подзапросы в условиях соединения, это существенно замедляет работу запроса. Желательно в таких случаях использовать ВТ. Для соединения нужно использовать только объекты метаданных и ВТ, предварительно проиндексировав их по полям соединения.

НЕПРАВИЛЬНО:

ВЫБРАТЬ …ИЗ Документ.РеализацияТоваровУслугЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ИЗ РегистрСведений.ЛимитыГДЕ …СГРУППИРОВАТЬ ПО …) ПО …

ПРАВИЛЬНО:

ВЫБРАТЬ …ПОМЕСТИТЬ ЛимитыИЗ РегистрСведений.ЛимитыГДЕ …СГРУППИРОВАТЬ ПО …ИНДЕКСИРОВАТЬ ПО …;

ВЫБРАТЬ …ИЗ Документ.РеализацияТоваровУслугЛЕВОЕ СОЕДИНЕНИЕ ЛимитыПО …;

Соединение записей с виртуальными таблицами

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

Использование отборов по не индексируемым полям

Одна из самых распространенных ошибок при составления запросов — использование условий по не индексируемым полям, это противоречитправилам оптимизации запросов. СУБД не может выполнить запрос оптимально, если в запросе накладывается отбор по не индексируемым полям. Если же берется временная таблица — так же необходимо индексировать поля соединения.

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

  1. Индекс содержит все поля перечисленные в условии;
  2. Эти поля находятся в самом начале индекса;
  3. Эти отборы идут подряд, то есть между ними не «вклиниваются» значения не участвующие в условии запроса;

Если СУБД не подобран правильные индексы, то будет просканирована таблица полностью — это очень негативно скажется на производительности и может привести к продолжительной блокировки всего набора записей.

Использование логического ИЛИ в условиях

Настоятельно не рекомендуется злоупотреблять в условиях запросов конструкцией «ИЛИ».

Вот и есть самое основное то ,что в данной статье были освещены основы аспекты оптимизации запросов, которые должен знать каждый эксперт 1С.

Если у вас остались вопросы , можете

app1c.ru

Оптимизация запросов 1С: нюансы ускорения производительности системы

При работе предприятия на базе 1С ситуации, когда производительность уменьшается из-за медленной обработки запросов системой, неудивительны. Эта проблема не нова и, к счастью, имеет простые решения. Оптимизация запросов 1С – это возможность ускорения за счет устранения соединений со снижающими производительность вложенными подзапросами. Разница скорости обработки данных может варьироваться от нескольких секунд до пары десятков часов, и это реальные случаи.

Подготовка к оптимизации

Любой IT специалист на вопрос: с чего начинать процесс ускорения производительности 1С? – ответит однозначно. Любая оптимизация должна первым этапом иметь установку дополнительной подсистемы "Измерения производительности" из библиотеки СП. Этот шаг признан международными стандартами и имеет ряд преимуществ:

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

Причины медленного осуществления запросов

Одной из самых популярных причин неоптимальных запросов является так называемое обращение через "2 точки" фильтра. Такую оплошность заметит любой опытный программист и исправит ее в два счета с помощью избавления от этого типа обращения, без влияния на саму логику процесса.

 

Другая грубая ошибка, приводящая к замедлению работы1C, – это использование конструкции "ГДЕ" при накладывании фильтров на виртуальную таблицу. При таких условиях отбора информации, система будет сразу получать весь объем записей и лишь потом отберет необходимые.

 

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

 

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

Выводы

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

 

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

, , , , , . , , . , CityBlack.ru

cityblack.ru

Разработка и оптимизация запросов в 1С:Предприятие 8.2 и 8.3

Видеокурс для всех программистов 1С:

Построение запросов, оптимизация и (не)типовые ошибки –на практических примерах и кейсах.

Это то, что требуется на каждом внедрении или проекте:

быстрые и корректные выборки данных из 1С и внешних систем.

И уже через несколько дней Вы сможете создавать даже сложные запросы просто и быстро – всего за несколько минут.

Что мы разберем в этом курсе:

Разберем запросы из самых интересных задач Аттестации на 1С:Специалист по платформе

(где зачастую написание правильного запроса – это большая часть решения)

Разберем основные запросы в типовых конфигурациях 1С:Управление Торговлей и 1С:Бухгалтерия Предприятия

наиболее типовые с точки зрения адаптации и доработок..

Мы соберем несколько десятков характерных запросов из практики

– как с проектов, так и из обсуждений на форумах..

Добавим «алгоритмические задачи» – которые многие пытаются решать обходами и «запросами в цикле»

Как, например, одним запросом получить кросс-таблицу с остатками товаров на каждый день.

Разберем, как легко делать выборки из внешних источников…

Например, как вытащить данные из MySQL веб-сайта

Рассмотрим, как строить сложные, многошаговые запросы

Никаких лишних процедур, циклов, промежуточных таблиц значений – все одним чистым запросом…

Что внутри курса:

Основные темы тренинга

Общая информация о хранении данных в «1С:Предприятие 8»

Синтаксис текста запроса

Работа с итогами в тексте запроса

Вложенные запросы, соединение, объединение

Работа с запросами при помощи встроенного языка

Использование временных таблиц и пакетных запросов

Использование виртуальных таблиц в запросе

Оптимизация запросов

Сложные случаи написания запросов

Кейсы (на примере типовых конфигураций)

И все это закрепляется в 38 практических упражнениях.

Небольшое «живое» видео Евгения об ошибках, связанных с запросами

В этом видео Евгений рассказывает, какие ошибки совершают при выборках данных – и как их в принципе нужно решать.

Если Вы решаете, идти на курс или нет – рекомендуем посмотреть его до конца.

Но и это еще не все, смотрите примеры из курса дальше :)

Поурочный план и описание рассмотренных в курсе кейсов и задач

Информация по содержанию курса, разобранным темам, кейсам, формату обучения представлена в описании курса в формате PDF:

about-1C-Query-course.pdf (откроется в новом окне)

Если у Вас возникли вопросы по описанию или содержанию курса – задайте их нам по электронной почтеили телефонам 8-800 1000-613 или +7 (495) 7777-096. Мы постараемся ответить максимально оперативно.

Несколько видео-примеров из курса

Кейс:Контроль оперативности обработки заказов

На предприятии отработан бизнес-процесс продажи, в котором фиксируются операции «Отразить первичный контакт» и «Подготовить предложение».

Руководителя интересует оперативность работы менеджеров с заказами покупателей, поэтому необходимо отслеживать, сколько времени прошло с момента контакта до подготовки предложения, причем надо учитывать график работы предприятия.

В видеоуроке рассматривается создание запроса, который выводит требуемые данные.

Видеоурок из курса:Работа с запросами во встроенном языке

В уроке показывается, как работать с запросами в конфигураторе. Демонстрация происходит на практическом примере.

Рассмотрены полезные приемы:

Кейс:Отчет по продажам по данным бухучета

Отчет по продажам – самый распространенный отчет, который требуют руководители.В видеоуроке он строится по данным регистра бухгалтерии, в конфигурации «1С:Бухгалтерия 8».Продажи по товарам получаются по оборотам счета 90.01.Продажи по контрагентам можно выбрать по оборотам:

В видео показывается, как получить такой управленческий отчет прямо в консоли – одним запросом.

Кейс:Список давно не обращавшихся клиентов

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

Ильин Андрей Андреевич, г. Калининград

Кейсы из последней части курса – очень хорошие образцы решения практических задач.Безусловно, курс очень полезен, ведь его можно использовать как шпаргалку в совокупности с методичками…

Читать отзыв полностью:
«Прежде всего хочу поблагодарить за интересный и очень полезный курс!

Моя цель при прохождении курса – желание вырасти профессионально и углубить свои знания в столь важной теме как запросы, что и произошло.

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

Кейсы из последней части курса – очень хорошие образцы решения практических задач!

Безусловно, курс очень полезен, ведь его можно использовать как шпаргалку в совокупности с методичками. Даже если я что-то точно не помню, я знаю, где мне это посмотреть!»

Ильин Андрей Андреевич, г. Калининград

Кончаков Илья Александрович, г. Воронеж

На практике курс поможет избежать ошибок при написании запросов, а также, при использовании рекомендаций по оптимизации – предотвратить падение производительности системы…

Читать отзыв полностью:
«Тема запросов очень актуальна при разработке на платформе «1С:Предприятие 8». По личному опыту, примерно половина времени уходит на составление и отладку запросов. Прохождение курса по запросам стало для меня отличной возможностью проверить и расширить свои знания по данной теме. Для меня очень интересными и полезными были следующие темы:

На практике курс поможет избежать ошибок при написании запросов, а также, при использовании рекомендаций по оптимизации – предотвратить падение производительности системы».

Кончаков Илья Александрович, г. Воронеж

Краткий тематический план курса

Пример 5 кейсов из 23 рассмотренных в курсе кейсов и сложных задач

Кейс 06. Увеличение выручки – допродажи

Задача кейса

Классическая задача, которая отсутствует в типовых решениях – найти всех, кто покупал товар «А», но не купил «В».

Что сделаем технически

В кейсе строится пакетный запрос:

Применение

В этом кейсе рассматривается один из инструментов повышения продаж – возможность допродажи старым покупателям, которые приобрели товар А, но еще не купили товар В.

Кейс решается в конфигурации УТ 11 с использованием бизнес-процессов и задач.

Кейс 07. Работа с «отвалившимися» клиентами

Задача кейса

Найти клиентов, которые:

Что сделаем технически

Настроим пакетный запрос, который получает

Применение

Это задача “реанимации” клиентов, отвалившихся за последнее – компания получит дополнительный источник продаж, если выявит их и снова активирует.

Кейс 03. Расчет премии сотрудникам

Задача кейса

Настроить накопительные премии менеджеров по шкале:

Что сделаем технически

В кейсе создается пакетный запрос:

Применение

Это нелинейная мотивация – чем больше выручка по менеджеру, тем сильнее эффект по зарплате.

Похожая задача присутствует на экзамене 1С:Специалист по платформе.

Кейс 08. Контроль оперативности обработки заказов

Задача кейса

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

Что сделаем технически

Строится пакетный запрос:

Применение

В кейсе показано, как разработать инструмент контроля, оперативности обработки заказов клиентов.Кейс решается в конфигурации УТ 11 с использованием бизнес-процессов и задач.

Кейс 10. Оборачиваемость товара

Задача кейса

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

Что сделаем технически

Для решения задачи формируется пакет запросов:

Применение

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

Кейс рассматривается в системе УТ 11.

И еще 18 кейсов :)

Кому будет интересен этот курс?

Это универсальный курс – в нем рассматриваются задачи любого программиста 1С.

Около 80% задач, с которыми сталкиваются программисты 1С, связаны с запросами.

Типичные задачи:

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

Мазитов Виктор Дмитриевич, г. Иркутск

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

Читать отзыв полностью:
«Почему я пошел на этот курс? Потому что тема на самом деле сложная и интересная, особенно хотелось понять, какие ошибки у меня могут быть допущены в сложных запросах и как можно их оптимизировать. После прохождения курса могу сказать, что в некоторых запросах, используемых в реальных БД, мною были внесены изменения, позволившие оптимизировать их и ускорить исполнение.

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

Прослушав данный курс, даже начинающий программист сможет решить большой спектр задач. Опытным же программистам всегда полезно систематизировать свои знания и провести самоконтроль.Сомнений перед прохождением курса не было никаких. Это не первый курс от команды Евгения и Фарита. И я с уверенностью могу сказать, что отдача от каждой минуты и каждого рубля, вложенного в обучение с данной командой, будут оправданы на все 100%».

Мазитов Виктор Дмитриевич, г. Иркутск

Матюшкин Константин Владиславович, г. Калуга

…позволит изучить ключевые навыки написания запросов.…модуль «Кейсы» раскрывает темы, которые встречаются практически в каждой задаче на практике, а также и задачи, решение которых требует наличия серьезного опыта.

Читать отзыв полностью:
«Чаще всего для программистов язык запросов и все его окружение является неким «черным ящиком». Как следствие, очень много времени разработки уходит на проектирование запроса, попытки поиска «обхода» запроса через объектную модель. Программисты, кто еще пока мало знаком с внутренней архитектурой платформы, а также принципами работы программы с СУБД на «низком» уровне, тратят очень много своего недешевого времени на поиски «проблемных» мест разработанного запроса/отчета. Данные проблемы порождают не только некорректные данные, но и деградацию производительности системы.

Этот курс позволит изучить ключевые навыки написания запросов. Пройдя курс, можно получить драгоценные знания не только по правильности проектирования запроса, но и по поиску «узких» мест в уже ранее разработанных запросах. В материалах курса рассмотрены не только теоритические аспекты, но и практическое применение знаний. Например, модуль «Кейсы» раскрывает темы, которые встречаются практически в каждой задаче на практике, а также и задачи, решение которых не «лежит на поверхности», а требует наличия серьезного опыта.

Хотелось бы отметить, что данный курс стоит рассматривать как тем, кто имеет только начальный фундамент знаний, так и разработчикам, которые имеют богатый опыт. Каждый для себя найдет что-то новое».

Матюшкин Константин Владиславович, г. Калуга

Еще 3 категории специалистов, кому курс будет безусловно полезен

Обязателен для всех начинающих разработчиков.

Если Вы уже знакомы с основными объектами 1С – пора изучать правильную технологию разработки запросов.

Профессиональные внедренцы, уже знакомые с языком запросов.

В курсе мы разберем, как разрабатывать и оптимизировать запросы – и делать это быстро.

Разработчикам, уже знакомым с языком SQL – и начинающим осваивать «1С:Предприятие 8».

Изучать запросы в 1С лучше системно.

Авилкина Людмила Геннадьевна, г. Москва

Прохождение курса полезно не только для овладения тонкостями составления запросов, но и для понимания, какие запросы использовать в разных практических случаях…

Читать отзыв полностью:
«Прохождение курса по разработке запросов на платформе очень полезно, и не только для овладения тонкостями составления запросов, но и для понимания, какие запросы использовать в разных практических случаях, на что обратить внимание при составлении запросов – особенности выбора источников запросов, параметров, итогов, группировок и пр.

Очень хорошим навыком является умение разбираться в том, когда и как можно использовать вложенные запросы, временные таблицы, пакеты запросов, что делает работу с запросами мощным и эффективным средством для выборки нужных данных. Это все изложено в курсе.

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

Авилкина Людмила Геннадьевна, г. Москва

Бурлака Сергей Дмитриевич, г. Одесса

После прохождения курса появилась систематизация знаний в применении запросов……большое число практических примеров – хорошее подспорье для решения реальных задач.

Читать отзыв полностью:
«Решил пройти этот курс, так как имел навыки в работе с запросами, но не было целостного представления по этой теме.

Для меня интересным и важным стало понимание особенностей применения объединения запросов и соединения таблиц, а также встроенных запросов. Впечатлила информация о новом развитии запросов в 8.3.

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

Очень нравятся курсы проекта «Курсы-по-1С.рф» – всегда получаешь больше, чем можешь планировать до прохождения курса».

Бурлака Сергей Дмитриевич, г. Одесса

Формат обучения

Это дистанционный курс – все материалы Вы получаете сразу после покупки в электронном виде (скачиваете с сайта).

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

Поддержка и ответы на вопросы – через сайт Курсы-по-1С.рф

В состав курса входят учебно-демонстрационные видеоуроки и методические материалы в формате PDF.

Поддержка:

Каждый покупатель курса получает поддержку по курсу через сайт Мастер-группы, где он может задать свои вопросы и получить ответы от тренеров.

Срок поддержки – 6 недель.

Активировать доступ в Мастер-группу можно в течение 100 дней с момента покупки.

Стоимость курса: 3 900 рублей.

Как Вы видите, мы сделали стоимость курса минимальной.
Гарантия
Мы ведем обучение с 2008 года, уверены в качестве наших курсов и даем на этот курс нашу стандартную 60-дневную гарантию.

Это значит, что если Вы начали заниматься по нашему курсу, но вдруг передумали (или, скажем, не имеете возможности), то у Вас есть 60-дневный срок для принятия решения – и если Вы производите возврат, мы возвращаем 100% оплаты.

Текущий уровень возвратов наших курсов: менее 1 процента…

Рассрочка платежа
Наши курсы можно оплатить по частям или в рассрочку, в том числе без процентов. При этом доступ к материалам Вы получаете сразу.

Это возможно при оплате от физических лиц на сумму от 3 000 руб. до 150 000 руб.

Все, что Вам нужно сделать – это выбрать способ оплаты “Оплата через Яндекс.Касса”. Далее на сайте платежной системы выбираете “Заплатить по частям”, указываете срок и размер выплат, заполняете небольшую анкету – и через пару минут получаете решение.

Варианты оплаты
Мы принимаем все основные формы платежей.

От физических лиц – оплаты с карт, оплаты электронными деньгами (WebMoney, ЯндексДеньги), оплаты через интернет-банкинг, оплаты через салоны связи и так далее. Возможна также оплата заказа по частям (в рассрочку), в том числе без дополнительных процентов.

Начните оформлять заказ – и на втором шаге Вы сможете выбрать предпочтительный способ оплаты.

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

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

Если компании требуется обучить нескольких сотрудников, мы обычно предлагаем “дополнительные комплекты”, которые стоят на 40% дешевле.

Для оформления заказа на “дополнительный комплект” выберите в форме 2 и более комплектов курса, начиная с второго комплекта стоимость курса будет на 40% дешевле.

Есть три условия использования дополнительных комплектов:

Загружается страница Козлитин Игорь Валериевич, г. Киев

Примеры трансляции реальных примеров бизнес-задач на язык реляционных таблиц, в том числе с использованием инструментов 1С – это то, чего так не хватает для реализации на языке запросов сложных задач из реальной жизни.

Читать отзыв полностью:
«Я себя отношу к опытным программистам. Тема запросов в 1С для меня не нова.

Несмотря на это, даже в базовых вещах всегда есть какие-то «белые пятна» в знаниях, и я пытаюсь читать различные материалы, чтобы их выявить и заполнить.

У другого человека всегда есть какой-то свой взгляд на тему, и его интересно послушать. С такими мыслями я начал проходить этот курс.

Но последние два модуля – это то, ради чего нужно покупать этот курс без особых раздумий. В этих модулях рассматриваются практические примеры и кейсы. Примеры трансляции реальных примеров бизнес-задач на язык реляционных таблиц, в том числе с использованием инструментов 1С – это то, чего иногда так не хватает для реализации на языке запросов сложных задач из реальной жизни».

Козлитин Игорь Валериевич, г. Киев

Шелестов Владимир Сергеевич, г. Кострома

Наибольший интерес вызвал практический разбор задач..…даже опытный программист найдет для себя интересные приемы.

Читать отзыв полностью:
«Данная тема мне интересна, так как львиная доля работы нашего отдела представляет собой создание отчетов в 1С 8. Также мне кажется, что знание запросов — это та основа, которую должен знать не только программист, но и внедренец (консультант).

Естественно, наибольший интерес вызвал практический разбор задач, ведь теория — это только половина знаний, самое главное – это практика.

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

Шелестов Владимир Сергеевич, г. Кострома

xn----1-bedvffifm4g.xn--p1ai


Prostoy-Site | Все права защищены © 2018 | Карта сайта