Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Работа с запросами          
Vofka Подменю пользователя
сообщение 20.09.10, 12:43
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Многократное выполнение однотипных запросов

--------------------------------------------------------------------------------

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

Правильно:

// БанкиДляОбработки - содержит массив банков, счета в которых необходимо обработать 
    
    ОбщийЗапрос = Новый Запрос("
    |ВЫБРАТЬ
    |    БанковскиеСчета.Ссылка КАК Счет
    |ИЗ
    |    Справочник.БанковскиеСчета КАК БанковскиеСчета
    |ГДЕ
    |    БанковскиеСчета.Банк В(&БанкиДляОбработки)");
                    
    ОбщийЗапрос.УстановитьПараметр("БанкиДляОбработки", БанкиДляОбработки);
    ВыборкаСчетов = ОбщийЗапрос.Выполнить().Выбрать();
    Пока ВыборкаСчетов.Следующий() Цикл
        ОбработатьСчетаВБанке(ВыборкаСчетов.Счет);
    КонецЦикла;





Неправильно:

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

Vofka Подменю пользователя
сообщение 20.09.10, 12:43
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Проверка на пустой результат выполнения запроса

--------------------------------------------------------------------------------

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

Правильно:

Возврат НЕ Запрос.Выполнить().Пустой()




Неправильно:

Выборка = Запрос.Выполнить().Выбрать();  
Если Выборка.Следующий() Тогда
    Возврат Истина;  
Иначе
    Возврат Ложь;  
КонецЕсли;

Vofka Подменю пользователя
сообщение 20.09.10, 12:44
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Оформление текстов запросов

--------------------------------------------------------------------------------

1. Все ключевые слова языка запросов пишутся заглавными буквами.

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

Касса.Валюта



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

Касса.Валюта КАК Валюта



то изменение имени реквизита приведет только к изменению текста запроса.

3. Особенно внимательно следует относиться к автоматически присваиваемым псевдонимам для полей – реквизитов других полей, типа "... Касса.Валюта.Наименование...". В приведенном выше примере поле получит автоматический псевдоним "ВалютаНаименование", а не "Наименование".

4. Следует обязательно указывать ключевое слово "КАК" перед псевдонимом поля источника.

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

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

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

8. При программной "сборке" текста запроса рекомендуется комментировать все этапы его сборки.

Vofka Подменю пользователя
сообщение 20.09.10, 12:44
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Использование ключевых слов "ОБЪЕДИНИТЬ" и "ОБЪЕДИНИТЬ ВСЕ" в запросах

--------------------------------------------------------------------------------

В общем случае, при объединении в запросе результатов нескольких запросов следует использовать конструкцию "ОБЪЕДИНИТЬ ВСЕ", а не "ОБЪЕДИНИТЬ".
Поскольку во втором варианте, при объединении запросов полностью одинаковые строки заменяются одной, на что затрачивается дополнительное время, даже в случаях, когда одинаковых строк в запросах заведомо быть не может.
Исключением являются ситуации, когда выполнение замены нескольких одинаковых строк одной является необходимым условием выполнения запроса.

Правильно:

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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
     РеализацияТоваровУслуг.Ссылка
ИЗ
     Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг




Неправильно:

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

ОБЪЕДИНИТЬ

ВЫБРАТЬ
     РеализацияТоваровУслуг.Ссылка
ИЗ
     Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 21:25
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!