|
1с. Что быстрее отработает? Выбрать КОЛИЧЕСТВО, Выборка.Количество Ø (Волшебник 19.05.2016 09:52) |
☑ |
0
exiter1
19.05.16
✎
01:15
|
Доброго время суток, уважаемые.
Только начинаю разбираться в конфигурировании. Вот возник вопрос: Стоит задача посчитать количество элементов справочника. Что быстрее отработает в данном случае?
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Квартиры.Ссылка
|ИЗ
| Справочник.Квартиры КАК Квартиры
|ГДЕ
| Квартиры.Дом = &Дом";
Запрос.Параметры.Вставить("Дом", Дом);
Выборка = Запрос.Выполнить().Выгрузить();
Возврат Выборка.Количество();
Или же так?
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КОЛИЧЕСТВО (Квартиры.Ссылка) КАК Количество
|ИЗ
| Справочник.Квартиры КАК Квартиры
|ГДЕ
| Квартиры.Дом = &Дом";
Запрос.Параметры.Вставить("Дом", Дом);
Выборка = Запрос.Выполнить().Выгрузить();
Пока Выборка.Следующий() Цикл
Количество = Выборка.Количество;
КонецЦикла;
Возврат Количество;
|
|
1
exiter1
19.05.16
✎
01:49
|
Сам спросил - сам отвечаю)) Выбрать количество работает слегка быстрее вроде, чем выбирать в запросе все элементы, а потом выгружать выборку и считать в ней количество. Разобрался:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(Квартиры.Ссылка) КАК КоличествоКвартир
|ИЗ
| Справочник.Квартиры КАК Квартиры
|ГДЕ
| Квартиры.Дом = &Дом";
Запрос.УстановитьПараметр("Дом", Дом);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Возврат Выборка.КоличествоКвартир;
Убираем цикл, так как в поле выборки только одно значение всегда будет. Нет смысла цикл крутить.
|
|
2
Jonny_Khomich
19.05.16
✎
05:25
|
Гениально!
Тянет на научную работу.
|
|
3
AneJIbcuH
19.05.16
✎
05:32
|
Мастер просто!
|
|
4
CMblCL
19.05.16
✎
06:53
|
Попробуй еще так
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Квартиры.Ссылка
|ИЗ
| Справочник.Квартиры КАК Квартиры
|ГДЕ
| Квартиры.Дом = &Дом";
Запрос.Параметры.Вставить("Дом", Дом);
Выборка = Запрос.Выполнить().Выбрать;
Возврат Выборка.Количество();
|
|
5
Pistol
19.05.16
✎
06:58
|
(4) Уже было год назад на
|
|
6
Эрик_Шмид
19.05.16
✎
07:09
|
А в 1с есть же замер производительности
|
|
7
1CIlya
19.05.16
✎
09:31
|
(6)
обMSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
обMSScriptControl.language = "javascript";
ВТМсекНачала = обMSScriptControl.eval("new Date().getTime()");
мРезЗапроса = обТекущийЗапрос.Выполнить();
ВТМсекКонца = обMSScriptControl.eval("new Date().getTime()");
ВремяВыполненияВТ = (ВТМсекКонца - ВТМсекНачала)/1000;
|
|
8
IlyaSR
19.05.16
✎
09:48
|
(5) +
|
|