8.х Притормаживания при работе 1С.

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем shurikvz, 5 авг 2011.

  1. TopicStarter Overlay
    shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Доброго времени суток.


    Столкнулся с такой проблемой: пользователи начали жаловаться, что при работе в 1С при подборе номенклатуры в документ 1С подтормаживает. Проявляется приблизительно как зависание на 0,5 сек окна ввода количества, после нажатия кнопки "ввод". Ну т.е. другими словами: подбираем номенклатуру. стоим на позиции, кнопка ввод, вбиваем количество, ввод, клавиша "вниз" чтобы перейти к следующей позиции и подобрать ее, но вот здесь небольшое зависание, в результате открывается подбор предыдущей позиции (или ничего не открывается). Не знаю насколько понятно объяснил, просто самому мне удалось это увидеть один раз (но я редко набиваю накладные тем более с большой скоростью). Проблема проявляется не постоянно, а периодически. По ощущениям было - как будто после ввода количества, оно на эту долю секунды задумалось, чтобы перенести выбранную номенклатуру в документ.
    Вот здесь http://forum.mista.ru/topic.php?id=547076 вроде описано тоже самое, но решения нет.

    Началось после перехода на 2008R2 и SQL версию. На 2003R2 файловой версии такого не наблюдалось.
    Поэтому затрудняюсь сказать то-ли дело в 2008R2, то-ли в SQL.
    Клиенты - XP, обновления для RDP установлены.

    Сервер новый, проблем с ресурсами не испытывает (не должен, в частности общий объем памяти - 20Гб, скулю выделено 15, два процессора (8 ядер), RAID1 на SAS 15K, сеть поскольку используется терминал - нагружена на 1-2%), поскольку такое наблюдается даже если в базе работает всего 1 пользователь.

    Кто-нибудь сталкивался? В какую сторону копать?

    Может ли такое быть допустим из-за видеокарты сервера (на прошлом "сервере" (фактически десктоп был) стояла 8600GT, здесь встроенная ATI (сервер HP ML370G6))?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.565
    Симпатии:
    716
    Баллы:
    204
    ну как бы SQL вариант всегда медленнее файлового.
    RAID надо бы 1+0
    ну и Server 2008 помониторьте загрузку дисковой системы/памяти/процессора при возникновении фризов.

    не думаю, что видеокарта замешана, но для уверенности можно проверить уровень акселерации. если стоит включенным - выключить.
  3. TopicStarter Overlay
    shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Понятное дело, но тут ведь дело не в том что допустим при проведении документов тормозит (отчеты - так по сравнению с файловой вообще летают), тут другое.

    Понятное дело. В данном случае в финансы упирается. Диски достаточно дорогие.

    Помониторю. Проблема в том что конкретное время фриза неопределено. И длится это буквально десяток секунд максимум (насколько я понял из описания). Потом нормально.

    В 2008R2 не нашел где это можно посмотреть/поменять.
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.565
    Симпатии:
    716
    Баллы:
    204
    хм....тоже не нашел такой настройки - видимо убрали.
    возможно, винда чего-то там кэширует/индексирует временами.....может с этим связано....мож пройдет....
  5. TopicStarter Overlay
    shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    В принципе воспроизвел. Когда двумя руками подбираешь (ну чтобы быстро получалось) - то да, воспроизводится, количество не успевает переноситься в документ, пока не перенеслось курсор не двигается, т.е. на следующую строку не переходит, и следующее нажатие энтер - выбирает ту же строку.

    Включил замер производительности в конфигурации. Вылезло два момента.
    1)
    Запрос из стандартного ОбщийМодуль.ОбработкаТабличныхЧастей. Строка 1067.
    Код:
    ТекстЗапроса = "
    |    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    СпрНоменклатура.Номенклатура КАК Номенклатура,
    |    СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |    СпрКачество.Ссылка КАК Качество,
    |    РегСкидкиНоменклатуры.Условие КАК НУсловие,
    |    РегСкидкиНоменклатуры.ЗначениеУсловия КАК НЗначениеУсловия,
    |    РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки КАК НОграничениеСкидкиНаценки,
    |    " + ?(ЭтоНакопительнаяСкидка, "ВЫБОР КОГДА РегСкидкиНоменклатуры.ПроцентСкидкиНаценки ЕСТЬ НЕ NULL
    |    И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте)
    |    ИЛИ РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт)) ТОГДА &ПроцентНакопительнойСкидки ИНАЧЕ РегСкидкиНоменклатуры.ПроцентСкидкиНаценки КОНЕЦ", "РегСкидкиНоменклатуры.ПроцентСкидкиНаценки") + " КАК НПроцентСкидкиНаценки,
    |    РегСкидкиПоЦеновымГруппам.Условие КАК ЦУсловие,
    |    РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЦЗначениеУсловия,
    |    РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки КАК ЦОграничениеСкидкиНаценки,
    |    " + ?(ЭтоНакопительнаяСкидка, "ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки ЕСТЬ НЕ NULL
    |    И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте)
    |    ИЛИ РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт)) ТОГДА &ПроцентНакопительнойСкидки 
    |                 ИНАЧЕ РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки КОНЕЦ", "РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки") + " КАК ЦПроцентСкидкиНаценки
    |ИЗ
    |    (ВЫБРАТЬ
    |        СпрНоменклатура.Ссылка КАК Номенклатура,
    |        ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
    |    ИЗ
    |        Справочник.Номенклатура КАК СпрНоменклатура
    |    ГДЕ
    |        СпрНоменклатура.Ссылка В (&МассивНоменклатуры)
    |    ОБЪЕДИНИТЬ ВСЕ
    |    ВЫБРАТЬ
    |        СпрХарактеристики.Владелец,
    |        СпрХарактеристики.Ссылка
    |    ИЗ
    |        Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
    |    ГДЕ
    |        СпрХарактеристики.Ссылка В (&МассивХарактеристик)
    |    ОБЪЕДИНИТЬ ВСЕ
    |    ВЫБРАТЬ
    |        ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка),
    |        ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
    |    ) КАК СпрНоменклатура
    |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |        Справочник.Качество КАК СпрКачество
    |    ПО
    |    СпрКачество.Ссылка В (&МассивКачество)
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |    (ВЫБРАТЬ
    |        РегСкидкиНоменклатуры.Номенклатура,
    |        РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
    |        РегСкидкиНоменклатуры.Качество,
    |        РегСкидкиНоменклатуры.Условие,
    |        ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
    |            ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
    |        ИНАЧЕ
    |            РегСкидкиНоменклатуры.ЗначениеУсловия
    |        КОНЕЦ КАК ЗначениеУсловия,
    |        МАКСИМУМ(РегСкидкиНоменклатуры.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
    |        РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
    |    ИЗ
    |        РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&Дата,
    |           Номенклатура В (&МассивНоменклатуры)
    |           И Качество В (&МассивКачество)
    |           И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиНоменклатуры
    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |        РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
    |    ПО
    |        РегСкидкиНоменклатуры.Регистратор = ВремяДействия.Регистратор
    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |        РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
    |    ПО
    |        РегСкидкиНоменклатуры.Валюта = КурсыВалют.Валюта
    |    ГДЕ
    |        (ВремяДействия.ДеньНедели ЕСТЬ NULL
    |           ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
    |           И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
    |           И РегСкидкиНоменклатуры.Валюта  ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
    //|           И РегСкидкиНоменклатуры.ПроцентСкидкиНаценки  0
    |           И (РегСкидкиНоменклатуры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиНоменклатуры.ДатаОкончания, ДЕНЬ) >= &Дата)
    |           И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиНоменклатуры.Условие  ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
    |           И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиНоменклатуры.Условие  ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
    |           И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиНоменклатуры.Условие  ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
    |           И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиНоменклатуры.Условие  ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
    |    СГРУППИРОВАТЬ ПО
    |        РегСкидкиНоменклатуры.Номенклатура,
    |        РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
    |        РегСкидкиНоменклатуры.Качество,
    |        РегСкидкиНоменклатуры.Условие,
    |        ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
    |            ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
    |        ИНАЧЕ
    |            РегСкидкиНоменклатуры.ЗначениеУсловия
    |        КОНЕЦ,
    |        РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
    |    ) КАК РегСкидкиНоменклатуры
    |ПО
    |    СпрНоменклатура.Номенклатура = РегСкидкиНоменклатуры.Номенклатура
    |       И (СпрНоменклатура.ХарактеристикаНоменклатуры = РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры ИЛИ РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
    |       И СпрКачество.Ссылка = РегСкидкиНоменклатуры.Качество
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |    (ВЫБРАТЬ
    |        РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
    |        РегСкидкиПоЦеновымГруппам.Качество,
    |        РегСкидкиПоЦеновымГруппам.Условие,
    |        ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
    |            ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
    |        ИНАЧЕ
    |            РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
    |        КОНЕЦ КАК ЗначениеУсловия,
    |        МАКСИМУМ(РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
    |        РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
    |    ИЗ
    |        РегистрСведений.СкидкиНаценкиПоЦеновымГруппам.СрезПоследних(&Дата, Качество В (&МассивКачество) И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиПоЦеновымГруппам
    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |        РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
    |    ПО
    |        РегСкидкиПоЦеновымГруппам.Регистратор = ВремяДействия.Регистратор
    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |        РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
    |    ПО
    |        РегСкидкиПоЦеновымГруппам.Валюта = КурсыВалют.Валюта
    |    ГДЕ
    |        (ВремяДействия.ДеньНедели ЕСТЬ NULL
    |           ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
    |           И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
    |           И РегСкидкиПоЦеновымГруппам.Валюта  ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
    //|           И РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки  0
    |           И(РегСкидкиПоЦеновымГруппам.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиПоЦеновымГруппам.ДатаОкончания, ДЕНЬ) >= &Дата)
    |           И(РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиПоЦеновымГруппам.Условие  ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
    |           И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиПоЦеновымГруппам.Условие  ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
    |           И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиПоЦеновымГруппам.Условие  ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
    |           И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиПоЦеновымГруппам.Условие  ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
    |    СГРУППИРОВАТЬ ПО
    |        РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
    |        РегСкидкиПоЦеновымГруппам.Качество,
    |        РегСкидкиПоЦеновымГруппам.Условие,
    |        ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
    |            ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
    |        ИНАЧЕ
    |            РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
    |        КОНЕЦ,
    |        РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
    |    ) КАК РегСкидкиПоЦеновымГруппам
    |ПО
    |    СпрНоменклатура.Номенклатура.ЦеноваяГруппа = РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа
    |       И СпрКачество.Ссылка = РегСкидкиПоЦеновымГруппам.Качество
    |ГДЕ
    |    РегСкидкиНоменклатуры.Условие ЕСТЬ НЕ NULL
    |    ИЛИ РегСкидкиПоЦеновымГруппам.Условие ЕСТЬ НЕ NULL
    |";
    
    Запрос.Текст = ТекстЗапроса;
    
    Возврат Запрос.Выполнить().Выгрузить();
    
    
    На строке "Запрос.Выполнить().Выгрузить();" - тратится 9,22% времени.

    2. На строке №921 Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма
    Код:
         ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока = СтрокаТабличнойЧасти;
    
    
    тратится 6,88% времени.



    Если с запросом можно подумать, то с этим даже не знаю что делать.


    Интересно - это все может быть причиной?


    Эм. Такой вопрос, а как посмотреть какой sql выбрало план запроса для конкретного запроса 1С? Ну в частности для того запроса, который я привел в п.1, как посмотреть?
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.565
    Симпатии:
    716
    Баллы:
    204
    воспользоваться Profiler-ом SQL
  7. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Вмешаюсь в беседу. Не заметил какая конфигурация, предположу что УТ, тогда рекомендую обратиться к запросу по номенклатуре, дело в том что данный запрос всегда был узким местом в реализации сбора данных по складам и характеристикам, так что надо попробовать сделать файловую базу и проверить запрос подбора с включенными остатками подбора и ценами. Как вариант, проблема может возникать на узле самого скуля, если у платформы возникают трудности с трансляцией запросов, то платформа может транслировать запрос не самым оптимальным образом. Поскольку поменять скуль не самая простая версия то возможно на данном этапе оптимальней проверить запрос по выборке номенклатуры, однако ниже представленный запрос не похож на тот что был в УТ, но если будет нужно могу посмотреть в файловой
  8. TopicStarter Overlay
    shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Не написал конфигурацию, не уверен был что дело в ней. Опишу подробней.
    Конфигурация КА 1.1.11.2. Формы обычные.

    Что удалось пока установить - дело действительно в запросе, который я привел в 5 посте.
    По порядку.
    При подборе в ТЧ "Товары", в модуле формы вызывается процедура
    ОбработкаВыбора() -> ОбработкаПодбора().
    В процедуре ОбработкаПодбора() при подборе каждой позиции вызывается процедура модуля формы ПересчитатьАвтоматическиеСкидки() из которой в свою очередь вызывается процедура ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже() и из нее уже вызывается ОбработкаТабличныхЧастей.ЗапросПоСкидкам(). В функции ЗапросПоСкидкам() и есть вышеуказанный запрос.

    Если полностью отключить при подборе расчет автоматических скидок, то программа работает отлично. Т.е. дело однозначно в этом запросе.
    Пробовал вставить запрос в консоль запросов (пользовался от Чистова), результаты выполнения следующие:
    1-е выполнение - 0,4 сек (!!!)
    2-е выполнение - 0,040 сек (понятное дело - данные закэшировались уже).
    Т.е. по-видимому между вызовами этой процедуры кэш успевает отчиститься и время выполнения всегда около 0,4 сек, тогда объяснимы и вышеуказанные тормоза (странно конечно, при скорости набора как у нас время вызова этой процедуры около 1-2 сек (время набора позиций), кэш не должен успевать сброситься).

    Задержки увеличиваются (учащаются) с увеличение количества номенклатуры в ТЧ накладной (ну понятно). На файловой версии также воспроизводится, но там для этого количество номенклатуры в накладной должно быть больше (т.е. хочу сказать, что на файловой версии этот эффект притормаживания намного менее выражен).


    Что уже попробовал сделать:
    1) Пробовал перекомпановать этот запрос, с использованием временных таблиц. Разницы по скорости нет. При добавлении индексирования в перекомпанованном запросе во временные таблицы по полю Номенклатура, ХарактеристикиНоменклатуры - время выполнения только увеличивается.
    2) Пробовал для РС "СкидкиНаценкиНоменклатуры" в конфигураторе установить индексирование для измерений Номенклатура, ХарактеристикиНоменклатуры - прироста в скорости нет.


    До Profiler-а SQL пока не добрался.


    На данный момент решил проблему тем, что убрал расчет автоматических скидок при подборе, и перенес расчет автоматических скидок в процедуру ПередЗаписью() модуля формы документа. Но считаю - что это конечно костыль, и хотелось бы конечно чтобы они сразу считались при подборе.
  9. bugor
    Offline

    bugor

    Регистрация:
    2 мар 2009
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    У меня такая же проблема. Перевожу файловую базу УТ 10.3 на платформе 8.2 на скульную PostgreSQL 8.3.4 на Windows Server 2008. 12 гигов оперативки. База всего 1 гиг. Сервер новый и чистый, специально для этой базы. отчеты работают без проблем. Все упирается в этот запрос по скидкам. При подборе товара в реализацию на скл жутко тормозит, а в файловой версии почти не заметно. От скидок отказаться не могу, т.к. розничные точки во всю работают с дисконтными картами, причем накопительными за квартал. Помогите!!! Новый сервер простаивает как бесполезная железка. И что с этим запросом делать?? :angry:
  10. TopicStarter Overlay
    shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Почему не хотите воспользоваться приведенным мной решением? (рассчитывать скидки не каждый раз при подборе новой строки, а один раз перед записью документа?)
  11. BVB_berserk
    Offline

    BVB_berserk Опытный в 1С

    Регистрация:
    30 янв 2009
    Сообщения:
    162
    Симпатии:
    0
    Баллы:
    26
    Считаю, что запрос достаточно сложный, к тому же с обилием вложенных запросов, поэтому SQL сложно определить оптимальный план выполнения запроса. Посоветую переписать запрос в пакетный с использованием временных таблиц. shurikvz говорит, что так делал, однако переписанный запрос не выложил. У меня реально были примеры, когда переписанные пакетные запросы работали в разы быстрее старых.
  12. TopicStarter Overlay
    shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Да, тот запрос не сохранял. Потестировал увидел что прироста в производительности не дает, и бросил. Если вдруг когда нибудь найду время повторить это - выложу.. :)
  13. dimetra2008
    Offline

    dimetra2008

    Регистрация:
    22 фев 2011
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Регламентные операции необходимо для базы делать _http://1cexpo.ru/instrukczii/22-reglamentnye-operaczii-na-urovne-subd-dlya-ms-sql-server.html
  14. TopicStarter Overlay
    shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Да ладно :angry:



    Регламентные операции настроены. Не в этом дело.
Похожие темы
  1. Noizer
    Ответов:
    10
    Просмотров:
    8.636
  2. Alex_Gur

    Работа О работе

    Alex_Gur, 15 апр 2010, в разделе: Архив
    Ответов:
    2
    Просмотров:
    714
  3. elabuga-personal-Aliya
    Ответов:
    5
    Просмотров:
    928
  4. andrenko
    Ответов:
    4
    Просмотров:
    595
  5. bajiepka
    Ответов:
    2
    Просмотров:
    605
Загрузка...

Поделиться этой страницей