Процедура СформироватьТаблицаСостояниеКлиентовПоГрупповымЗанятиям(СтруктураДополнительныеСвойства)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.СтруктурнаяЕдиница,
| ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.Контрагент,
| ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.ГрупповоеЗанятие,
| ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.Состояние КАК Состояние,
| ВЫБОР
| КОГДА НЕ СостояниеКлиентовПоГрупповымЗанятиямСрезПоследних.Статус ЕСТЬ NULL
| ТОГДА СостояниеКлиентовПоГрупповымЗанятиямСрезПоследних.Статус
| ИНАЧЕ ЗНАЧЕНИЕ(ПЕРЕЧИСЛЕНИЕ.СтатусРезерваПоГруповымЗанятиям.БезРезерва)
| КОНЕЦ КАК Статус,
| ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.Абонемент КАК Абонемент,
| ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.Количество,
| ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.Период
|ИЗ
| ТаблицаСостояниеКлиентовПоГрупповымЗанятиям КАК ТаблицаСостояниеКлиентовПоГрупповымЗанятиям
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеКлиентовПоГрупповымЗанятиям.СрезПоследних(
| ,
| Регистратор <> &Регистратор) КАК СостояниеКлиентовПоГрупповымЗанятиямСрезПоследних
| ПО ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.СтруктурнаяЕдиница = СостояниеКлиентовПоГрупповымЗанятиямСрезПоследних.СтруктурнаяЕдиница
| И ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.ГрупповоеЗанятие = СостояниеКлиентовПоГрупповымЗанятиямСрезПоследних.ГрупповоеЗанятие
| И ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.Контрагент = СостояниеКлиентовПоГрупповымЗанятиямСрезПоследних.Контрагент";
Запрос.УстановитьПараметр("Регистратор", СтруктураДополнительныеСвойства.ДляПроведения.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаСостояниеКлиентовПоГрупповымЗанятиям", РезультатЗапроса.Выгрузить());
КонецПроцедуры
Показать
Собственно не знаком с фитнесом, почему после нового года этот запрос стал выполняться ну очень медленно?
мне сегодня рассказали, что в 18 платформе с запросами совсем плохо и народ массово откатывает на 17...
хотя конечно может быть много причин разных. Запросец-то не слишком радует оптимальностью, конечно. Но это надо знать предмет, чтобы можно были что-то дельное делать. Может какие параметры можно передать в срез последних, например, может условие на регистратор убрать, мало ли что можно придумать.
Границы рассчитанных итогов может двинуть надо.
Я бы смотрел на содержимое таблицы ТаблицаСостояниеКлиентовПоГрупповымЗанятиям , и можно ли ее уменьшить.
это типовой запрос конфиги фитнес корп, на файловой базе, сервер быстрый в принципе с ssd. Платформа 15 границы итогов по январь.
Причем этот запрос запускается когда надо впустить выпустить одного человека в клуб. Даже не знаю как его оптимизировать сталкивался кто нибудь с таким делом в фитнесе?
(12) сделал отбор по клиенту теперь время выполнения 00(это немного смущает) вместо 70, но все вроде проводиться, счас буду смотреть все движения по регистрам правильно ли идут, если все ок завтра запущу в тест на рабочую базу. ну и если все ок вам зачту правильный ответ.
(15)
Это нормальная ситуация. Просто на первый взгляд видно что регистр хранит статусы клиента, да еще в разрезе документов (как я понимаю визитов). При этом выбираются все клиенты со всеми статусами))) да и еще куча разрезов.
Очень похоже на анекдот:
- Вам сколько ложек сахара?
- Четыре, только не перемешивайте сильно - я не люблю сладкое.
При том, что запрос построен с несколькими методическими ошибками, то при определенном объеме данных (на котором разработчики не тестируют) начнет тормозить.
P.S.: Проверьте, что функция не используется еще из каких-то мест.
Регистратор <> &Регистратор
И (Контрагент, СтруктурнаяЕдиница, ГрупповоеЗанятие) В
(ВЫБРАТЬ
Таб_ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.КонтрагентКАК Контрагент,
Таб_ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.КонтрагентКАК СтруктурнаяЕдиница,
Таб_ТаблицаСостояниеКлиентовПоГрупповымЗанятиям.КонтрагентКАК ГрупповоеЗанятие
ИЗ
ТаблицаСостояниеКлиентовПоГрупповымЗанятиям КАК Таб_ТаблицаСостояниеКлиентовПоГрупповымЗанятиям)
Но в принципе если в документе Контрагент это просто ссылка пойдет и предложенный выше вариант.
А если еще и индексы настроить...
Ну а про упырей.... Не знаю кто там Фитнес писал, но даже в типовой Рознице лично менял три-четыре запроса из-за того что при большом количестве магазинов и условий скидок 1С просто помирала в РМК при сканировании товара например
(18) да они разработчики программного продукта причем версия корп!, как так они не тестировали!!!???, даже я понял почти сразу что запрос не оптимален, вообщем фуфло этот феликс фитнес. там такого хватает еще навскидку пару идиотских функций поправил. Причем им же дали 1с совместимо.
(19)
Отраслевые не блещут конечно)
В прошлом году тоже просили на файловой в конфигурации ТСЖ расчет начислений какой-то оптимизировать. 2 минуты 40 секунд примерно делался. Тоже дело было в запросе. Стало 8-10 секунд.
Причем там был коммент над запросом от разработчика "работает не оптимально" или вроде того)))
Посмотреть в запросе, формирующим ТаблицаСостояниеКлиентовПоГрупповымЗанятиям в менеджере временных таблиц проиндексированы ли поля: структурнаяединица, групповоезанятие, контрагент. После этого создать из текущего запроса пакет, в котором будет формироваться временная таблица из РегистрСведений.СостояниеКлиентовПоГрупповымЗанятиям.СрезПоследних(
| ,
| Регистратор <> &Регистратор) с необходимыми полями.
Посмотреть количество записей, которое получается в этой временной таблице.
Если там не десятки тысяч, то соединить с получившейся временной вместо виртуальной базовый запрос.