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

Хранилище

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

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



> Проследить на каком этапе запрос в текущий момент          
SanSay Подменю пользователя
сообщение 19.12.13, 12:50
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

Возможно ли как-нибудь отследить на каком этапе выполнения в текущий момент выполнение запроса?

например в цикле можно так:
Для НомерСтроки = 0 По ТЗАЦК.Количество() - 1 Цикл
        Состояние("Чтобы прервать обработку данных нажмите Ctrl+Break");
        Прогресс.Значение = Прогресс.Значение + 1;
        ОбработкаПрерыванияПользователя();
...


чтонибудь подобное можно сделать с запросом:
Запрос.Текст = "    
        |ВЫБРАТЬ
        |    *
        |ИЗ
        |    ВременнаяТаблица как ВременнаяТаблица
        |ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
        |    ВременнаяТаблица3 как ВременнаяТаблица3
        |ПО
        |    ВЫРАЗИТЬ(ВременнаяТаблица.Данные КАК Строка(1000)) = ВЫРАЗИТЬ(ВременнаяТаблица3.Код КАК Строка(1000))";
        Результат = Запрос.Выполнить().Выбрать();

pablo Подменю пользователя
сообщение 19.12.13, 13:10
Сообщение #2

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0

Прервать выполнение 1 подзапроса - никак. Если в запросе много подзапросов, тогда можно их выполнять по очереди через МВТ и между выполнением подзапросов - прерывать.

Ваш запрос тормозит из-за сравнения строк. Нужно от него как-то избавляться.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Fynjy Подменю пользователя
сообщение 19.12.13, 13:35
Сообщение #3

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

Цитата(pablo @ 19.12.13, 13:10) *
Прервать выполнение 1 подзапроса - никак. Если в запросе много подзапросов, тогда можно их выполнять по очереди через МВТ и между выполнением подзапросов - прерывать.

Ваш запрос тормозит из-за сравнения строк. Нужно от него как-то избавляться.

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


Signature

SanSay Подменю пользователя
сообщение 19.12.13, 14:13
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(pablo @ 19.12.13, 15:10) *
Ваш запрос тормозит из-за сравнения строк. Нужно от него как-то избавляться.

эт как например?... суть запроса именно в том, чтобы к данным из "ВременнаяТаблица" добавить столбцы из "ВременнаяТаблица2"
т.е. в "ВременнаяТаблица" всего 100 позиций, а "ВременнаяТаблица2" 2000 позиций и нужно объединить только пересекающиеся 100 позиций.


кстати, я чет в шоке... я думал, что запросы работают быстрее, а тут:
обрабатывал 2 таблицы в первой 1000 позиций, во второй 4300

если запросом который выше указан, то 16 секунд, а если вот этим циклом:
Прогресс.МаксимальноеЗначение = ТЗДанныеДляПоиска.Количество();
        Для НомерСтроки = 0 По ТЗДанныеДляПоиска.Количество() - 1 Цикл
            Прогресс.Значение = Прогресс.Значение + 1;
            ОбработкаПрерыванияПользователя();
            ТекущаяСтрока = ТЗДанныеДляПоиска[НомерСтроки];
            Для НомерСтроки2 = 0 По ТЗПрайс.Количество() - 1 Цикл
                ТекущаяСтрока2 = ТЗПрайс[НомерСтроки2];
                Если ТекущаяСтрока.Данные = ТекущаяСтрока2.Код Тогда
                    НоваяСтрока = ТЗДанныеДляПоискаИтого.Добавить();
                    НоваяСтрока.Данные = ТекущаяСтрока.Данные;
                    НоваяСтрока.Код = ТекущаяСтрока2.Код;
                    НоваяСтрока.Наименование = ТекущаяСтрока2.Наименование;
                    НоваяСтрока.БазоваяЦена = ТекущаяСтрока2.БазоваяЦена;
                    НоваяСтрока.ЦенаПродажи = ТекущаяСтрока2.ЦенаПродажи;
                    НоваяСтрока.Остаток = ТекущаяСтрока2.Остаток;
                    НоваяСтрока.Категория = ТекущаяСтрока2.Категория;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;


то........ 8!!!
жесть, ну и нафига тогда в моем случае запрос... может проще циклом тогда?

Ardi Подменю пользователя
сообщение 19.12.13, 14:43
Сообщение #5

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

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


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

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


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

 

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