Имя: Пароль:
1C
1С v8
фоновое задание
, ,
0 Вуглускр1991
 
03.11.11
09:00
Привет!
Вообще под MS SQL все просто летает в сравнении с файловым вариантом.
Первый раз наткнулся на тормоза:
Таблица фоновых заданий:
Выполнение отчета: АнализПродаж | Задание выполнено | 03.11.2011 7:46:34 | 03.11.2011 7:54:44
файловый вариант - 5 секунд.
Куда рыть?
Убирать "фоновость" исполнения отчета?
Обновлять платформу?
Раскладывать запрос в план выполнения и смотреть профайлер?
1 Axel2009
 
03.11.11
09:36
профайлера в файловом варианте нетю.
2 Вуглускр1991
 
05.11.11
00:17
Посмотрел технологический журнал.
На сервер SQL передается запрос в 7000 строк.
3 МишельЛагранж
 
05.11.11
02:31
фоновое задание делает блокировки наверняка, тем более количество строк позволяет..
4 Вуглускр1991
 
05.11.11
10:55
Начинается в этом запросе все красиво
INSERT INTO #tt2
(
_Q_000_F_000RRef,
_Q_000_F_001,
_Q_000_F_002TRef,
_Q_000_F_002RRef)
SELECT
5 Вуглускр1991
 
05.11.11
10:59
А продолжается вот так:
T1._Fld394RRef,
CAST(SUM(T1._Fld396) AS NUMERIC(21, 8)),
CASE
WHEN T2._Fld384_TYPE = 0x08 AND T2._Fld384_RTRef = 0x00000340 THEN
    CASE
   WHEN T3._Fld979_TYPE = 0x08 AND T3._Fld979_RTRef = 0x00000340 THEN
       CASE
       WHEN T4._IDRRef IS NOT NULL THEN 0x00000340
       END
       WHEN T3._Fld979_TYPE = 0x08 AND T3._Fld979_RTRef = 0x00000160 THEN
           CASE WHEN T5._IDRRef IS NOT NULL THEN 0x00000160
       END
       ...
И много-много таких строк, я такого запроса не писал. Это СКД.
Похоже перебирает метаданные
6 AaNnDdRrEeYy
 
05.11.11
11:03
Возможно где-то тип составной вот и соединяюся все таблици
7 Вуглускр1991
 
05.11.11
11:33
(6) У меня да есть составной тип, всего два значения, документ1ссылка и документ2ссылка
8 Вуглускр1991
 
05.11.11
12:04
Кусок запроса:
ВЫБРАТЬ
   ПоступлениеОсновная.Номенклатура,
   СУММА(ПоступлениеОсновная.КолВо) КАК КолВо,
   МАКСИМУМ(ПоступлениеОсновная.Ссылка) КАК Возврат,
   ПоступлениеОсновная.Ссылка.ДокОснование.ДокОснование.Ссылка КАК ДокОснованиеДокОснованиеСсылка
ПОМЕСТИТЬ ВОЗВРАТЫ
ИЗ
   Документ.Поступление.Основная КАК ПоступлениеОсновная
ГДЕ
   ПоступлениеОсновная.Ссылка.Проведен = ИСТИНА
   И ПоступлениеОсновная.Ссылка.Дата МЕЖДУ &НачалоПериода И &Дата3
   И (ПоступлениеОсновная.Ссылка.ВидДокум = &Возврат
           ИЛИ ПоступлениеОсновная.Ссылка.ВидДокум = &Возвратбрак)
В этом куске "перемножаются" основания, хотя из всевозможных пар работать будут только
реализация -> выдача -> возврат
9 Вуглускр1991
 
05.11.11
12:25
Развалил запрос из (8) вот так

ВЫБРАТЬ
   ЗаявкаНаРеализацию.Ссылка КАК ДокОснованиеДокОснованиеСсылка,
   ВложенныйЗапрос.Номенклатура,
   СУММА(ВложенныйЗапрос.КолВо) КАК КолВо
ПОМЕСТИТЬ ВОЗВРАТЫ
ИЗ
   (ВЫБРАТЬ
       ПоступлениеОсновная.Номенклатура КАК Номенклатура,
       СУММА(ПоступлениеОсновная.КолВо) КАК КолВо,
       ПоступлениеОсновная.Ссылка КАК Возврат,
       ВыдачаСоСклада.Ссылка КАК Основание
   ИЗ
       Документ.Поступление.Основная КАК ПоступлениеОсновная
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВыдачаСоСклада КАК ВыдачаСоСклада
           ПО ПоступлениеОсновная.Ссылка.ДокОснование = ВыдачаСоСклада.Ссылка
   ГДЕ
       ПоступлениеОсновная.Ссылка.Проведен = ИСТИНА
       И ПоступлениеОсновная.Ссылка.Дата МЕЖДУ &НачалоПериода И &Дата3
       И (ПоступлениеОсновная.Ссылка.ВидДокум = &Возврат
               ИЛИ ПоступлениеОсновная.Ссылка.ВидДокум = &Возвратбрак)
   
   СГРУППИРОВАТЬ ПО
       ПоступлениеОсновная.Номенклатура,
       ПоступлениеОсновная.Ссылка,
       ВыдачаСоСклада.Ссылка) КАК ВложенныйЗапрос
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаРеализацию КАК ЗаявкаНаРеализацию
       ПО ВложенныйЗапрос.Основание.ДокОснование = ЗаявкаНаРеализацию.Ссылка

СГРУППИРОВАТЬ ПО
   ЗаявкаНаРеализацию.Ссылка,
   ВложенныйЗапрос.Номенклатура
Все стало ЛЕТАТЬ.
10 МишельЛагранж
 
05.11.11
16:40
(8) ваша причина - вот это разименование:

ПоступлениеОсновная.Ссылка.ДокОснование.ДокОснование.Ссылка

никогда не делайте так в запросах 1с! это они сами себе по морде дали ("у нас возможно ссылочное обращение!"), а потом начали пояснять, что, дескать, получение по ссылке из одного документа данных другого не есть комильфо и ляля, но на практике это полный завис работы.
11 МишельЛагранж
 
05.11.11
16:43
а причина такого поведения - любимая 1с по ссылке на ДокОснование получает ВСЕ данные по тому документу, а уже потом берет только нужные - в данном случае, только ссылку...
и такая политика "давай все вываливай, а там разберемся" есть бич 95% обработки 1с-запросов, чтобы в соседних темах не писали про "миллионы строк одним махом - и у нас это не предел!".