Имя: Пароль:
1C
1С v8
Тормозит периодически подбор в УТ 10.
0 Nemoj
 
25.12.18
22:55
Я уже не помню, что к чему. Да и наверное новая инфа есть. Помогите.
Куда смотреть в первую очередь.
Работает файловая база на 4 компах по сети. Периодически такая ситуация с автопоиском.
При нажатии буквы в форме подбора номенклатуры появляются часики и висят. Через минуту показывает следующую букву.
1 palsergeich
 
25.12.18
22:56
1) Пусть работают по РДП.
2) Возможно при вводе текста используется свой обработчик с запросом с уловием вида %текст%
3) Возможно пора делать свертку базы
2 Nemoj
 
25.12.18
23:01
Свертку им пришли сделали. После нее и началось.
3 Nemoj
 
25.12.18
23:01
Подбор типовой
4 Nemoj
 
25.12.18
23:02
РДП сложно. Работало же все до свертки.
5 palsergeich
 
25.12.18
23:16
(4) Ну там еще ТИИ с реиндексацией
6 palsergeich
 
25.12.18
23:17
(4) А Вы больше на слово верьте.
У клиентов очень часто слова не совпадают с действительностью: После Вашего обновления все тормозит. Заходишь в замеры времени - оказывается все тормозит уже пол года как, но тут под шумок решили пожаловаться.
7 palsergeich
 
25.12.18
23:21
(0) А так ТЖ, долгие запросы, отловите эту ситуацию, посмотрите контекст - откуда это приходит.
С огромной долей вероятности - где то там запрос с условием вида %текст%.
Или что то нехорошее со справочником в фоне делается, а в файловом варианте - помним - блокировка на всю таблицу идет сразу.
8 Nemoj
 
25.12.18
23:22
Посмотрю, что может в фоне быть.
9 Nemoj
 
25.12.18
23:41
Запустил отладчик.
99 % жрет запрос


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТоварыНаСкладах.Номенклатура                                КАК Номенклатура,
    СУММА(  ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0.00)
          - ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0.00)
          - ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0.00)
          
    )                                                           КАК КоличествоСвободныйОстаток,
    СУММА(ЕСТЬNULL(ОстаткиОрганизации.КоличествоОстаток, 0.00)) КАК КоличествоОстатокОрганизации
ИЗ
    (ВЫБРАТЬ
        ОбщиеОстатки.Номенклатура               КАК Номенклатура,
        ОбщиеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ОбщиеОстатки.Качество                   КАК Качество,
        СУММА(ОбщиеОстатки.КоличествоОстаток)   КАК КоличествоОстаток
    ИЗ
        (
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    0 КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Организация = &Организация  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ЗНАЧЕНИЕ(Справочник.Качество.Новый) КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВНТТ.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад) ) КАК ТаблицаОстатков

        ) КАК ОбщиеОстатки

    СГРУППИРОВАТЬ ПО
        ОбщиеОстатки.Номенклатура, ОбщиеОстатки.ХарактеристикаНоменклатуры, ОбщиеОстатки.Качество
    ) КАК ТоварыНаСкладах

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад) ) КАК ТоварыВРезервеНаСкладах
ПО
    ТоварыВРезервеНаСкладах.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТоварыКПередачеСоСкладов
ПО
    ТоварыКПередачеСоСкладов.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ТоварыКПередачеСоСкладов.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ТоварыКПередачеСоСкладов.Качество = ТоварыНаСкладах.Качество
    
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Организация = &Организация  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ОстаткиОрганизации
ПО
    ОстаткиОрганизации.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ОстаткиОрганизации.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ОстаткиОрганизации.Качество = ТоварыНаСкладах.Качество

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладах.Номенклатура
10 Nemoj
 
25.12.18
23:41
Что тут можно посоветовать?
11 palsergeich
 
25.12.18
23:43
Отказаться от % %, иначе никак. Можно попробовать использовать полнотекстовый поиск, но полнотекстовый индекс так же надо поддерживать в актуальном состоянии.
Очередной пример, когда верить на слово нельзя - свертка не приводит к проблемам тут
12 palsergeich
 
25.12.18
23:44
А понял.
тут нет поиска по части строки.
Разбей запрос и посмотри в каком Объединить ВСЕ основные затраты
13 palsergeich
 
25.12.18
23:45
ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ вот эта штука в условии не кошерна
14 palsergeich
 
25.12.18
23:47
В первом Объединить - ддважды вложенный запрос
15 Nemoj
 
25.12.18
23:50
Я и три года назад не очень умел запросы дебажить.
Как это делается?
16 palsergeich
 
25.12.18
23:50
В файловой базе нет умного MSSQL оптимизатора и запросы должны быть максимально примитивны...
17 palsergeich
 
25.12.18
23:52
(15) Каждая секция из вкладки объединить - по факту может рассмотриваться как отдельный запрос. Найди какой из них потребляет больше всего времени, как правило это один, редко 2.

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТоварыНаСкладах.Номенклатура                                КАК Номенклатура,
    СУММА(  ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0.00)
          - ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0.00)
          - ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0.00)
          
    )                                                           КАК КоличествоСвободныйОстаток,
    СУММА(ЕСТЬNULL(ОстаткиОрганизации.КоличествоОстаток, 0.00)) КАК КоличествоОстатокОрганизации
ИЗ
    (ВЫБРАТЬ
        ОбщиеОстатки.Номенклатура               КАК Номенклатура,
        ОбщиеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ОбщиеОстатки.Качество                   КАК Качество,
        СУММА(ОбщиеОстатки.КоличествоОстаток)   КАК КоличествоОстаток
    ИЗ
        (
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    0 КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Организация = &Организация  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ЗНАЧЕНИЕ(Справочник.Качество.Новый) КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВНТТ.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад) ) КАК ТаблицаОстатков

        ) КАК ОбщиеОстатки

    СГРУППИРОВАТЬ ПО
        ОбщиеОстатки.Номенклатура, ОбщиеОстатки.ХарактеристикаНоменклатуры, ОбщиеОстатки.Качество
    ) КАК ТоварыНаСкладах

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад) ) КАК ТоварыВРезервеНаСкладах
ПО
    ТоварыВРезервеНаСкладах.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТоварыКПередачеСоСкладов
ПО
    ТоварыКПередачеСоСкладов.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ТоварыКПередачеСоСкладов.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ТоварыКПередачеСоСкладов.Качество = ТоварыНаСкладах.Качество
    
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Организация = &Организация  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ОстаткиОрганизации
ПО
    ОстаткиОрганизации.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ОстаткиОрганизации.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ОстаткиОрганизации.Качество = ТоварыНаСкладах.Качество

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладах.Номенклатура
18 palsergeich
 
25.12.18
23:54
не получилось. дубль 2

Это запрос 1

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТоварыНаСкладах.Номенклатура                                КАК Номенклатура,
    СУММА(  ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0.00)
          - ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0.00)
          - ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0.00)
          
    )                                                           КАК КоличествоСвободныйОстаток,
    СУММА(ЕСТЬNULL(ОстаткиОрганизации.КоличествоОстаток, 0.00)) КАК КоличествоОстатокОрганизации
ИЗ
    (ВЫБРАТЬ
        ОбщиеОстатки.Номенклатура               КАК Номенклатура,
        ОбщиеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ОбщиеОстатки.Качество                   КАК Качество,
        СУММА(ОбщиеОстатки.КоличествоОстаток)   КАК КоличествоОстаток
    ИЗ
        (
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

Это запрос 2

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

Это запрос 3

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    0 КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Организация = &Организация  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ЗНАЧЕНИЕ(Справочник.Качество.Новый) КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВНТТ.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад) ) КАК ТаблицаОстатков

        ) КАК ОбщиеОстатки

    СГРУППИРОВАТЬ ПО
        ОбщиеОстатки.Номенклатура, ОбщиеОстатки.ХарактеристикаНоменклатуры, ОбщиеОстатки.Качество
    ) КАК ТоварыНаСкладах

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад) ) КАК ТоварыВРезервеНаСкладах
ПО
    ТоварыВРезервеНаСкладах.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТоварыКПередачеСоСкладов
ПО
    ТоварыКПередачеСоСкладов.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ТоварыКПередачеСоСкладов.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ТоварыКПередачеСоСкладов.Качество = ТоварыНаСкладах.Качество
    
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Организация = &Организация  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ОстаткиОрганизации
ПО
    ОстаткиОрганизации.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ОстаткиОрганизации.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ОстаткиОрганизации.Качество = ТоварыНаСкладах.Качество

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладах.Номенклатура
19 palsergeich
 
25.12.18
23:55
В запросе 3: 6 сооединений с виртуальными таблицами, такое даже СКЛ будет тяжко переварить....
20 palsergeich
 
25.12.18
23:55
В общем запрос под переписку полностью....
21 Nemoj
 
25.12.18
23:55
Не хватает моей компетенции...
22 Nemoj
 
25.12.18
23:56
Может я вас сведу с клиентом?
23 palsergeich
 
25.12.18
23:58
я скопировал коряво
Попытка 3

Запрос 1

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТоварыНаСкладах.Номенклатура                                КАК Номенклатура,
    СУММА(  ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0.00)
          - ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0.00)
          - ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0.00)
          
    )                                                           КАК КоличествоСвободныйОстаток,
    СУММА(ЕСТЬNULL(ОстаткиОрганизации.КоличествоОстаток, 0.00)) КАК КоличествоОстатокОрганизации
ИЗ
    (ВЫБРАТЬ
        ОбщиеОстатки.Номенклатура               КАК Номенклатура,
        ОбщиеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ОбщиеОстатки.Качество                   КАК Качество,
        СУММА(ОбщиеОстатки.КоличествоОстаток)   КАК КоличествоОстаток
    ИЗ
        (
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

Запрос 2

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков


Запрос 3

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ТаблицаОстатков.Качество КАК Качество,
    0 КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Организация = &Организация  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТаблицаОстатков

Запрос 4


ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура               КАК Номенклатура,
    ТаблицаОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ЗНАЧЕНИЕ(Справочник.Качество.Новый) КАК Качество,
    ТаблицаОстатков.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВНТТ.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад) ) КАК ТаблицаОстатков

        ) КАК ОбщиеОстатки

    СГРУППИРОВАТЬ ПО
        ОбщиеОстатки.Номенклатура, ОбщиеОстатки.ХарактеристикаНоменклатуры, ОбщиеОстатки.Качество
    ) КАК ТоварыНаСкладах

ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад) ) КАК ТоварыВРезервеНаСкладах
ПО
    ТоварыВРезервеНаСкладах.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ТоварыВРезервеНаСкладах.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ТоварыНаСкладах.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Склад В (&Склад)  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ТоварыКПередачеСоСкладов
ПО
    ТоварыКПередачеСоСкладов.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ТоварыКПередачеСоСкладов.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ТоварыКПередачеСоСкладов.Качество = ТоварыНаСкладах.Качество
    
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата,  Номенклатура В (&МассивНоменклатуры)  И Организация = &Организация  И ВЫБОР КОГДА &РазворачиватьДоКачества ТОГДА ИСТИНА ИНАЧЕ Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый) КОНЕЦ) КАК ОстаткиОрганизации
ПО
    ОстаткиОрганизации.Номенклатура = ТоварыНаСкладах.Номенклатура
    И ОстаткиОрганизации.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
    И ОстаткиОрганизации.Качество = ТоварыНаСкладах.Качество

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладах.Номенклатура
24 palsergeich
 
25.12.18
23:58
(22) У меня времени особо нет.
В общем это скорее всего запрос 4 + запрос 1 под подозрением
25 Nemoj
 
26.12.18
00:01
Спасибо за советы.
26 palsergeich
 
26.12.18
00:04
Итог, в запросе 4:
Соединено 4 Виртуальные таблицы.
Это очень плохо.
В запросе 1 - дважды вложенный запрос.
Мальца подразучился я читать чужие запросы(
27 sieben
 
26.12.18
00:15
(0) Отпусти ты клиента, не мучай ни его ни себя. Ты все равно не успеешь за развитием области, хоть лицо сохранишь.
28 Nemoj
 
26.12.18
00:16
Отпустил.
29 timurhv
 
26.12.18
01:51
(28) Пускай итоги сперва пересчитают/актуализируют.
30 Сергиус
 
26.12.18
01:58
(0)Интересно, какой размер базы? А так проблема понятна - с определенного момента файловые начинают тормозить в самых неожиданных местах, где раньше все летало.
31 palsergeich
 
26.12.18
02:19
(30) Да не поможет.
Там запрос корявый. Инфа сотка - по мере роста данных они сначала терпели, потом позвали франча - те им свертку сделали без какого либо анализа - не помогло.
Потом франч начал разбираться, увидел запрос - озвучил цену ну их и послали в топку. Начали звонить ТС, включили дурика, авось прокатит.
Такая фигня постоянно, первый день что ли в бизнесе?)
32 palsergeich
 
26.12.18
02:25
А это какой то хитрошлепый помошник ввода доступной номенклатуры или ДС заточенный, фиг они уже от него откажутся.
Или переписывать запрос - относительно дорого, но для файловой гарантия 50\50, может и не взлететь если товаров много, таки в файловой особо много не пооптимизируешь или перестроить архитектуру как нибудь - дорого, но с гарантией.
33 palsergeich
 
26.12.18
02:30
Хотя заврался я чота, какой ДС в 10.3)
34 palsergeich
 
26.12.18
02:31
таблица подбора вероятно
35 palsergeich
 
26.12.18
02:36
Смущает еще вот что, почему все остатки и обороты огаринчены по дате, а не используются оперативные итоги, кстати.
Быть может при оперативных так страшно и не было бы
36 palsergeich
 
26.12.18
02:38
И если используется РЛС - тоже гвоздик в крышку гроба...
37 ProxyInspector
 
26.12.18
07:36
Проблемы начались после "свертки" базы. Значит просто регистры остатков не свернулись, а наоборот разбухли.
38 Hans
 
26.12.18
07:37
(0) а куда ушел?
39 xXeNoNx
 
26.12.18
08:13
соединения с вирт таблицами конеш хреново, но Хотелось бы глянуть еще структуру регистров
40 Nemoj
 
26.12.18
11:11
(38) спать.
41 Nemoj
 
26.12.18
11:11
(39) структура типовая.
42 Провинциальный 1сник
 
26.12.18
11:17
ОС и платформа какая?
43 Мимохожий Однако
 
26.12.18
12:11
(42) ОФФ. Не буди.. лихо, пока оно тихо.
44 ptiz
 
26.12.18
12:23
(0)
1. Сделать копию
2. В копии сделать выгрузку/загрузку базы.
3. Проверить копию локально
4. Проверить копию по сети
5. Доложиться здесь
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший