Всем привет.
У пользователей возникли жалобы на зависание 1С. По нагрузке ЦП стало понятно, что ресурсы съедает MS SQL. Я включил хранилище запросов, а затем с помощью отчёта "Основные отчёты, потребляющие ресурсы" и преобразования имен таблиц в 1Совские выявил ряд неоптимальных запросов, которые успешно исправил. Однако, остались запросы, источник вызова которых остался неочевидным.
Пример такого запроса
SEL ECT
T1.IDTRef,
T1.IDRRef
FR OM (SEL ECT
0x0000018F AS IDTRef,
T2._IDRRef AS IDRRef
FR OM dbo._Document399 T2
WHERE ((T2._Fld1269 = @P1)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document399_VT1270 T3
WHERE T2._Fld1269 = T3._Fld1269 AND T2._IDRRef = T3._Document399_IDRRef AND ((T3._Fld1278_TYPE = 0x08 AND T3._Fld1278_RTRef = 0x000001AD AND T3._Fld1278_RRRef = @P2)))
UNI ON ALL SEL ECT
0x00000190 AS IDTRef,
T4._IDRRef AS IDRRef
FR OM dbo._Document400 T4
WHERE ((T4._Fld1269 = @P3)) AND (T4._Fld1342_TYPE = 0x08 AND T4._Fld1342_RTRef = 0x000001AD AND T4._Fld1342_RRRef = @P4)
UNI ON SEL ECT
0x00000190 AS IDTRef,
T5._IDRRef AS IDRRef
FR OM dbo._Document400 T5
WHERE ((T5._Fld1269 = @P5)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document400_VT1375 T6
WHERE T5._Fld1269 = T6._Fld1269 AND T5._IDRRef = T6._Document400_IDRRef AND ((T6._Fld1394_TYPE = 0x08 AND T6._Fld1394_RTRef = 0x000001AD AND T6._Fld1394_RRRef = @P6)))
UNI ON SEL ECT
0x00000190 AS IDTRef,
T7._IDRRef AS IDRRef
FR OM dbo._Document400 T7
WHERE ((T7._Fld1269 = @P7)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document400_VT1411 T8
WHERE T7._Fld1269 = T8._Fld1269 AND T7._IDRRef = T8._Document400_IDRRef AND ((T8._Fld1413_TYPE = 0x08 AND T8._Fld1413_RTRef = 0x000001AD AND T8._Fld1413_RRRef = @P8)))
UNI ON ALL SEL ECT
0x00000199 AS IDTRef,
T9._IDRRef AS IDRRef
FR OM dbo._Document409 T9
WHERE ((T9._Fld1269 = @P9)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document409_VT2024 T10
WHERE T9._Fld1269 = T10._Fld1269 AND T9._IDRRef = T10._Document409_IDRRef AND ((T10._Fld2036_TYPE = 0x08 AND T10._Fld2036_RTRef = 0x000001AD AND T10._Fld2036_RRRef = @P10)))
UNI ON ALL SEL ECT
0x0000019A AS IDTRef,
T11._IDRRef AS IDRRef
FR OM dbo._Document410 T11
WHERE ((T11._Fld1269 = @P11)) AND (T11._Fld2224_TYPE = 0x08 AND T11._Fld2224_RTRef = 0x000001AD AND T11._Fld2224_RRRef = @P12)
UNI ON SEL ECT
0x0000019A AS IDTRef,
T12._IDRRef AS IDRRef
FR OM dbo._Document410 T12
WHERE ((T12._Fld1269 = @P13)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document410_VT2228 T13
WHERE T12._Fld1269 = T13._Fld1269 AND T12._IDRRef = T13._Document410_IDRRef AND ((T13._Fld2232_TYPE = 0x08 AND T13._Fld2232_RTRef = 0x000001AD AND T13._Fld2232_RRRef = @P14)))
UNI ON SEL ECT
0x0000019A AS IDTRef,
T14._IDRRef AS IDRRef
FR OM dbo._Document410 T14
WHERE ((T14._Fld1269 = @P15)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document410_VT2240 T15
WHERE T14._Fld1269 = T15._Fld1269 AND T14._IDRRef = T15._Document410_IDRRef AND ((T15._Fld2244_TYPE = 0x08 AND T15._Fld2244_RTRef = 0x000001AD AND T15._Fld2244_RRRef = @P16)))
UNI ON ALL SELECT
0x0000019C AS IDTRef,
T16._IDRRef AS IDRRef
FR OM dbo._Document412 T16
WH ERE ((T16._Fld1269 = @P17)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document412_VT2288 T17
WH ERE T16._Fld1269 = T17._Fld1269 AND T16._IDRRef = T17._Document412_IDRRef AND ((T17._Fld2298_TYPE = 0x08 AND T17._Fld2298_RTRef = 0x000001AD AND T17._Fld2298_RRRef = @P18)))
UNION ALL SEL ECT
0x0000019F AS IDTRef,
T18._IDRRef AS IDRRef
FR OM dbo._Document415 T18
WH ERE ((T18._Fld1269 = @P19)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document415_VT2499 T19
WH ERE T18._Fld1269 = T19._Fld1269 AND T18._IDRRef = T19._Document415_IDRRef AND ((T19._Fld2501_TYPE = 0x08 AND T19._Fld2501_RTRef = 0x000001AD AND T19._Fld2501_RRRef = @P20)))
UNION ALL SEL ECT
0x000001A0 AS IDTRef,
T20._IDRRef AS IDRRef
FR OM dbo._Document416 T20
WH ERE ((T20._Fld1269 = @P21)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document416_VT2623 T21
WH ERE T20._Fld1269 = T21._Fld1269 AND T20._IDRRef = T21._Document416_IDRRef AND ((T21._Fld2625_TYPE = 0x08 AND T21._Fld2625_RTRef = 0x000001AD AND T21._Fld2625_RRRef = @P22)))
UNION ALL SEL ECT
0x000001A6 AS IDTRef,
T22._IDRRef AS IDRRef
FR OM dbo._Document422 T22
WH ERE ((T22._Fld1269 = @P23)) AND EXISTS(
SEL ECT 1
FR OM dbo._Document422_VT3050 T23
WH ERE T22._Fld1269 = T23._Fld1269 AND T22._IDRRef = T23._Document422_IDRRef AND ((T23._Fld3052_TYPE = 0x08 AND T23._Fld3052_RTRef = 0x000001AD AND T23._Fld3052_RRRef = @P24)))
UNION ALL SEL ECT
0x000001AA AS IDTRef,
T24._IDRRef AS IDRRef
FR OM dbo._Document426 T24
WH ERE ((T24._Fld1269 = @P25)) AND (T24._Fld3162_T
Показать
С заменой имён на 1Совские
ВЫБРАТЬ
T1.IDTRef,
T1.Ссылка
ИЗ (ВЫБРАТЬ
0x0000018F КАК IDTRef,
T2.Ссылка КАК Ссылка
ИЗ Документ.АвансовыйОтчет КАК T2
ГДЕ ((T2.ОбластьДанныхОсновныеДанные = &P1)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.АвансовыйОтчет.ТабличнаяЧасть.ПрочиеРасходы КАК T3
ГДЕ T2.ОбластьДанныхОсновныеДанные = T3.ОбластьДанныхОсновныеДанные И T2.Ссылка = T3.Ссылка И ((T3.АналитикаРасходов = 0x08 И T3.АналитикаРасходов = 0x000001AD И T3.АналитикаРасходов = &P2)))
UNIПО ALL ВЫБРАТЬ
0x00000190 КАК IDTRef,
T4.Ссылка КАК Ссылка
ИЗ Документ.АктВыполненныхРабот КАК T4
ГДЕ ((T4.ОбластьДанныхОсновныеДанные = &P3)) И (T4.ЗаказКлиента = 0x08 И T4.ЗаказКлиента = 0x000001AD И T4.ЗаказКлиента = &P4)
UNIПО ВЫБРАТЬ
0x00000190 КАК IDTRef,
T5.Ссылка КАК Ссылка
ИЗ Документ.АктВыполненныхРабот КАК T5
ГДЕ ((T5.ОбластьДанныхОсновныеДанные = &P5)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.АктВыполненныхРабот.ТабличнаяЧасть.Услуги КАК T6
ГДЕ T5.ОбластьДанныхОсновныеДанные = T6.ОбластьДанныхОсновныеДанные И T5.Ссылка = T6.Ссылка И ((T6.ЗаказКлиента = 0x08 И T6.ЗаказКлиента = 0x000001AD И T6.ЗаказКлиента = &P6)))
UNIПО ВЫБРАТЬ
0x00000190 КАК IDTRef,
T7.Ссылка КАК Ссылка
ИЗ Документ.АктВыполненныхРабот КАК T7
ГДЕ ((T7.ОбластьДанныхОсновныеДанные = &P7)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.АктВыполненныхРабот.ТабличнаяЧасть.РасшифровкаПлатежа КАК T8
ГДЕ T7.ОбластьДанныхОсновныеДанные = T8.ОбластьДанныхОсновныеДанные И T7.Ссылка = T8.Ссылка И ((T8.Заказ = 0x08 И T8.Заказ = 0x000001AD И T8.Заказ = &P8)))
UNIПО ALL ВЫБРАТЬ
0x00000199 КАК IDTRef,
T9.Ссылка КАК Ссылка
ИЗ Документ.ВводОстатков КАК T9
ГДЕ ((T9.ОбластьДанныхОсновныеДанные = &P9)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.ВводОстатков.ТабличнаяЧасть.РасчетыСПартнерами КАК T10
ГДЕ T9.ОбластьДанныхОсновныеДанные = T10.ОбластьДанныхОсновныеДанные И T9.Ссылка = T10.Ссылка И ((T10.ОбъектРасчетов = 0x08 И T10.ОбъектРасчетов = 0x000001AD И T10.ОбъектРасчетов = &P10)))
UNIПО ALL ВЫБРАТЬ
0x0000019A КАК IDTRef,
T11.Ссылка КАК Ссылка
ИЗ Документ.ВзаимозачетЗадолженности КАК T11
ГДЕ ((T11.ОбластьДанныхОсновныеДанные = &P11)) И (T11.ДокументОснование = 0x08 И T11.ДокументОснование = 0x000001AD И T11.ДокументОснование = &P12)
UNIПО ВЫБРАТЬ
0x0000019A КАК IDTRef,
T12.Ссылка КАК Ссылка
ИЗ Документ.ВзаимозачетЗадолженности КАК T12
ГДЕ ((T12.ОбластьДанныхОсновныеДанные = &P13)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.ВзаимозачетЗадолженности.ТабличнаяЧасть.ДебиторскаяЗадолженность КАК T13
ГДЕ T12.ОбластьДанныхОсновныеДанные = T13.ОбластьДанныхОсновныеДанные И T12.Ссылка = T13.Ссылка И ((T13.Заказ = 0x08 И T13.Заказ = 0x000001AD И T13.Заказ = &P14)))
UNIПО ВЫБРАТЬ
0x0000019A КАК IDTRef,
T14.Ссылка КАК Ссылка
ИЗ Документ.ВзаимозачетЗадолженности КАК T14
ГДЕ ((T14.ОбластьДанныхОсновныеДанные = &P15)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.ВзаимозачетЗадолженности.ТабличнаяЧасть.КредиторскаяЗадолженность КАК T15
ГДЕ T14.ОбластьДанныхОсновныеДанные = T15.ОбластьДанныхОсновныеДанные И T14.Ссылка = T15.Ссылка И ((T15.Заказ = 0x08 И T15.Заказ = 0x000001AD И T15.Заказ = &P16)))
UNIПО ALL ВЫБРАТЬ
0x0000019C КАК IDTRef,
T16.Ссылка КАК Ссылка
ИЗ Документ.ВнутреннееПотреблениеТоваров КАК T16
ГДЕ ((T16.ОбластьДанныхОсновныеДанные = &P17)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.ВнутреннееПотреблениеТоваров.ТабличнаяЧасть.Товары КАК T17
ГДЕ T16.ОбластьДанныхОсновныеДанные = T17.ОбластьДанныхОсновныеДанные И T16.Ссылка = T17.Ссылка И ((T17.АналитикаРасходов = 0x08 И T17.АналитикаРасходов = 0x000001AD И T17.АналитикаРасходов = &P18)))
UNIПО ALL ВЫБРАТЬ
0x0000019F КАК IDTRef,
T18.Ссылка КАК Ссылка
ИЗ Документ.ВозвратТоваровМеждуОрганизациями КАК T18
ГДЕ ((T18.ОбластьДанныхОсновныеДанные = &P19)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.ВозвратТоваровМеждуОрганизациями.ТабличнаяЧасть.РасшифровкаПлатежа КАК T19
ГДЕ T18.ОбластьДанныхОсновныеДанные = T19.ОбластьДанныхОсновныеДанные И T18.Ссылка = T19.Ссылка И ((T19.Заказ = 0x08 И T19.Заказ = 0x000001AD И T19.Заказ = &P20)))
UNIПО ALL ВЫБРАТЬ
0x000001A0 КАК IDTRef,
T20.Ссылка КАК Ссылка
ИЗ Документ.ВозвратТоваровОтКлиента КАК T20
ГДЕ ((T20.ОбластьДанныхОсновныеДанные = &P21)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.ВозвратТоваровОтКлиента.ТабличнаяЧасть.РасшифровкаПлатежа КАК T21
ГДЕ T20.ОбластьДанныхОсновныеДанные = T21.ОбластьДанныхОсновныеДанные И T20.Ссылка = T21.Ссылка И ((T21.Заказ = 0x08 И T21.Заказ = 0x000001AD И T21.Заказ = &P22)))
UNIПО ALL ВЫБРАТЬ
0x000001A6 КАК IDTRef,
T22.Ссылка КАК Ссылка
ИЗ Документ.ВыкупВозвратнойТарыКлиентом КАК T22
ГДЕ ((T22.ОбластьДанныхОсновныеДанные = &P23)) И EXISTS(
ВЫБРАТЬ 1
ИЗ Документ.ВыкупВозвратнойТарыКлиентом.ТабличнаяЧасть.РасшифровкаПлатежа КАК T23
ГДЕ T22.ОбластьДанныхОсновныеДанные = T23.ОбластьДанныхОсновныеДанные И T22.Ссылка = T23.Ссылка И ((T23.Заказ = 0x08 И T23.Заказ = 0x000001AD И T23.Заказ = &P24)))
UNIПО ALL ВЫБРАТЬ
0x000001AA КАК IDTRef,
T24.Ссылка КАК Ссылка
ИЗ Документ.ДоверенностьВыданная КАК T24
ГДЕ ((T24.ОбластьДанныхОсновныеДанные = &P25)) И (T24._Fld3162_T
Показать
Для того чтобы найти откуда он вызывается, я настроил технологический журнал следующим образом:
Не смотря на это, в анализе технологического журнала через ИР я вижу лишь события с типом EXCP, которые, казалось бы, вообще не должны были фиксироваться.
Помогите, пожалуйста, понять, откуда вызывается этот запрос.
(6)
(7)logcfg.xml находился в program files. Перенёс его в каталог AppData\Local\1C\1cv8\conf пользователя, под которым запускается сервер. Журнал начал фиксировать все интересующие события. Нагрузку давала форма структуры подчинённости.
(10) Если используешь ИР анализ техножурнала, то мог бы и настройку техножурнала оттуда же использовать. Она вычисляет путь к активному файлу конфигурации техножурнала по алгоритму платформы. Поэтому сразу увидишь как минимум где лежит файл активной конфигурации журнала и там же можешь настроить ее.
Какая конфа? По смыслу похоже, что выбираются все документы, в которых упоминается конкретный Заказ. Возможно динамический запрос в таблице какой-то формы.
(1) Наверное, маска %FROM dbo.\_Document399_VT1270 T3% не срабатывает. Например, есть перенос после FROM. И что за слеш после dbo? Вроде бы экранирований не предусмотрено в шаблоне поиска.
(6)
(7)logcfg.xml находился в program files. Перенёс его в каталог AppData\Local\1C\1cv8\conf пользователя, под которым запускается сервер. Журнал начал фиксировать все интересующие события. Нагрузку давала форма структуры подчинённости.
11.
Gilev.Vyacheslav
191711.07.22 15:21 Сейчас в теме
(10) я такое видел когда люди вручную переносили дистрибутив запуска, и права на каталог для учетной записи службы сервера 1С не скопировались program files , из-за нехватки прав на файл и каталог уровнем выше файл не считывался, но это один из вариантов, или скажем учетку службе 1С поменяли, а права не предоставили новой учетке и т.п.
(10) Если используешь ИР анализ техножурнала, то мог бы и настройку техножурнала оттуда же использовать. Она вычисляет путь к активному файлу конфигурации техножурнала по алгоритму платформы. Поэтому сразу увидишь как минимум где лежит файл активной конфигурации журнала и там же можешь настроить ее.