Имя: Пароль:
1C
1С v8
БП 2. Тормозит
,
0 Sasha_Rapira
 
20.10.14
03:53
Дайте советы.
Тормоза при выборе счета, формировании обороток, при закрытии месяца. Раньше было лучше.

БП 2. Стоит на SQL сервере.

Терминал Windows 2008 R2 и сам SQL сервер Windows 2008 R2/


Люди работают в терминале. В данный момент в терминале запущенно 16 "1С". SQL сервер стоит на отдельном компьюетер.

У терминала оператива 8 ГБ (даже сейчас когда жалуются на тормоза, ещё 2 ГБ оперативы свободно).

У SQL сервера 32 ГБ оперативы.

На SQL сервере стоит 1С предприятие.

Размер базы 4 ГБ.

Базы SQL сервера на SSD RAID

Читал ещё давно разные статьи про оптимизацию и т.д. Всё это делал.
===========


Кто сталкивался? Дайте советы. Как найти тормозное место?
1 Sasha_Rapira
 
20.10.14
04:03
В параметрах конфы есть "Время ожидание блокировки в секундах, по умолчанию стоит 20" есть смысл менять и ставить меньше?
2 Jump
 
20.10.14
04:11
Очевидно чтобы найти тормозное место надо провести замеры производительности серверов и самой базы. А так же знать как настроено все это дело.
Без этого гадание на кофейной гуще.
Проблема может быть в двух местах в настройках 1с или в железе.

Насчет 1с -
Вот эта фраза наводит на размышления - "Читал ещё давно разные статьи про оптимизацию и т.д. Всё это делал. "
А что именно делал и для чего?
Пишут много чего, и не всегда полезного.

Насчет железа -
Ну ладно на терминале оперативки хватает. Но надо понимать что есть еще скуль сервер, как там с загрузкой памяти?
И на скорость вычислений влияет как ни странно не только память но и процессор. Что с загрузкой процессора?

информации вообще никакой.
3 Злопчинский
 
20.10.14
04:22
1. 8-ка сама по определению - тормозная.
2. 32 ГБ - маловато. ставь если есть возможность побольше оперативы.
4 Sasha_Rapira
 
20.10.14
04:24
Ну например ОСВ отчет.

Захожу в отчет, выбираю любой счет и заметно программа подвисает.

Замер производительности показал этот код:
    Для Индекс = 0 По МассивСтрок.Количество() - 1 Цикл
        ПолеПоиска = ПолеПоиска + ?(Индекс = 0, "", ".") + МассивСтрок[Индекс];
        ДоступноеПоле = ДоступныеПоля.Найти(ПолеПоиска);
        Если ДоступноеПоле <> Неопределено Тогда
            ДоступныеПоля = ДоступноеПоле.Элементы;
        КонецЕсли;
    КонецЦикла;

В частности 46% времени на это "ДоступныеПоля = ДоступноеПоле.Элементы;".

И что мне теперь все отчеты переписывать? Значит нужно искать уязвимое место. МОжет долго обмен идет терминала с сервером базы? Больше 32 ГБ нельзя увы мамка декстопная.
5 Галахад
 
гуру
20.10.14
04:44
(0) Ночью роботы выходят на работу? Индексы перестраивают?
6 Sasha_Rapira
 
20.10.14
04:50
(5) из задач стоят:
1. Бэкап баз
2. Очистка журнала
3. Реорганизация индекса
4. Обновление статистики
7 Sasha_Rapira
 
20.10.14
04:51
(6) + это все ежедневно. Очистка журнала раз в неделю
8 Sasha_Rapira
 
20.10.14
04:53
Например замер производительности сделал Закрытия месяца. 180 секунд было закрытие. 53% от этого времени на большой запрос в базу
9 Галахад
 
гуру
20.10.14
05:00
(6) Гут.

По железу вроде все нормально, для такой маленькой базы, даже с запасом.

(8) 3 минуты на закрытие месяца? Наверное есть много народа, которые мечтают о таких цифрах.
10 Sasha_Rapira
 
20.10.14
05:04
(9) да 3 минуты. Ну бухам и это не нравится, хотят ещё быстрее. И так говорят "очень тормозит"
11 Злопчинский
 
20.10.14
05:06
(9) 3 минуты при размере базы 4 ГБ из которых куча мегабайт - вообще служебная инфа... - это действительно много.. ;-)
12 Sasha_Rapira
 
20.10.14
05:10
(11) это первая база. Ещё на этот сервере вторая база ЗУП 16 ГБ.

Может из за этого? Как лучше держать на одном сервере 2 базы ?

У меня щас в одном экземпляре две базы, может надо было по другому
13 Jump
 
20.10.14
05:12
(10)Решу проблему за 100баксов.
Будет работать без тормозов, а закрытие месяца формироваться всего лишь полчаса.
14 Sasha_Rapira
 
20.10.14
05:12
Моя ошибка, надо было сразу ставить второй экземпляр SQL. Но поможет ли это?
15 Sasha_Rapira
 
20.10.14
05:12
(13) щас 3 минуты, будет пол часа? Забавно
16 Jump
 
20.10.14
05:23
(15)Да и всего за 100баксов, соглашайся пока не передумал :)
17 Галахад
 
гуру
20.10.14
06:52
(10), (11) Ну и сколько раз в месяц запускают эту процедуру? 5-10 раз?
Допустим, в идеале она отрабатывает за 0 секунд.
Т.е. потери времени 15-30 минут в месяц? Важно ли это?
18 Sasha_Rapira
 
20.10.14
08:00
При долгом анализе всех мест:
Диски - отлично
ОЗУ - отлично
Сетевуха - отлично
Процессор - средне

Решили сделать так. Сейчас 1 сервер - терминал. 2 сервер - SQL с двумя базами.

Сделаем по другому.

1 сервер будет с 32 ГБ оперативы и с процессором ХЕОН. На нём будет ЗУП(SQL) 15 ГБ

2 сервер будет с 32 ГБ оперативы и с процессором Core i5. На нем будет БП(SQL) 2-4 ГБ
19 Галахад
 
гуру
20.10.14
08:05
(18) Терминал вместе с 1С и SQL сервером в одном флаконе?
20 Fragster
 
гуру
20.10.14
08:20
сервер 1с - он с терминалом или со скулем?
21 Fragster
 
гуру
20.10.14
08:20
(8) сам "тормозящий" запрос не будешь приводить специально?
22 Sasha_Rapira
 
20.10.14
08:23
(19) да.

у нас уже так стоит УАТ жив и здоров, робит как зверюга.

(21) сам "тормозящий" мне кинуть сюда все запросы Закрытия месяца?
23 Fragster
 
гуру
20.10.14
08:35
(22) тот, который 46%
24 Fragster
 
гуру
20.10.14
08:35
или 53%, сколько он у тебя там
25 Галахад
 
гуру
20.10.14
08:44
(22) Интересно какой "способ распределения ресурсов процессора" выбран?
26 Sasha_Rapira
 
20.10.14
08:51
(24)

БП - Документ РегламентаяОперация - СформироватьЗапросПоПрямымЗатратам


Процедура СформироватьЗапросПоПрямымЗатратам(СтруктураШапкиДокумента, ПодразделенияИНоменклатурныеГруппы, РезультатЗапроса, СтруктураДопПараметров, ВыполненоРаспределениеОХРИлиОПР)
    
    РасчетПрямыхЗатратНомер = СтруктураДопПараметров.РасчетПрямыхЗатратНомер;
        
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    ВыпускПродукцииУслуг.СчетЗатрат КАК СчетЗатрат,
    |    ВыпускПродукцииУслуг.Подразделение КАК Подразделение,
    |    ВыпускПродукцииУслуг.ПодразделениеСписания КАК ПодразделениеСписания,
    |    ВыпускПродукцииУслуг.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    |    ВыпускПродукцииУслуг.Продукция,
    |    ВыпускПродукцииУслуг.СчетСписания,
    |    ВыпускПродукцииУслуг.СубконтоСписания1,
    |    ВыпускПродукцииУслуг.СубконтоСписания2,
    |    ВыпускПродукцииУслуг.СубконтоСписания3,
    |    СУММА(ВЫБОР
    |            КОГДА ВыпускПродукцииУслуг.ПрямыеРасходыРаспределятьПоКоличеству
    |                ТОГДА ЕСТЬNULL(ВыпускПродукцииУслуг.КоличествоОборот, 0)
    |            ИНАЧЕ ЕСТЬNULL(ВыпускПродукцииУслуг.ПлановаяСтоимостьОборот, 0)
    |        КОНЕЦ) КАК ПлановаяСтоимость,
    |    СУММА(ВЫБОР
    |            КОГДА ВыпускПродукцииУслуг.ПрямыеРасходыРаспределятьПоКоличеству
    |                ТОГДА ЕСТЬNULL(ВыпускПродукцииУслуг.КоличествоОборот, 0)
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК ПлановаяСтоимостьВПроводках,
    |    СУММА(ЕСТЬNULL(ВыпускПродукцииУслуг.ПлановаяСтоимостьОборот, 0)) КАК ПлановаяСтоимостьОборот
    |ПОМЕСТИТЬ ВТ_ВыпускПродукцииУслуг
    |ИЗ
    |    РегистрНакопления.ВыпускПродукцииУслуг.Обороты(
    |            &НачГраница,
    |            &КонГраница,
    |            Месяц,
    |            Организация = &Организация
    |                И (Подразделение, НоменклатурнаяГруппа) В
    |                    (ВЫБРАТЬ
    |                        Фильтр.Подразделение,
    |                        Фильтр.НоменклатурнаяГруппа
    |                    ИЗ
    |                        Фильтр КАК Фильтр)) КАК ВыпускПродукцииУслуг
    |
    |СГРУППИРОВАТЬ ПО
    |    ВыпускПродукцииУслуг.СчетЗатрат,
    |    ВыпускПродукцииУслуг.Подразделение,
    |    ВыпускПродукцииУслуг.ПодразделениеСписания,
    |    ВыпускПродукцииУслуг.НоменклатурнаяГруппа,
    |    ВыпускПродукцииУслуг.Продукция,
    |    ВыпускПродукцииУслуг.СчетСписания,
    |    ВыпускПродукцииУслуг.СубконтоСписания1,
    |    ВыпускПродукцииУслуг.СубконтоСписания2,
    |    ВыпускПродукцииУслуг.СубконтоСписания3
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ХозрасчетныйОбороты.Счет,
    |    ХозрасчетныйОбороты.Подразделение,
    |    ХозрасчетныйОбороты.Субконто1,
    |    СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт,
    |    СУММА(ВЫБОР
    |            КОГДА ЕСТЬNULL(Правила.ВидЗатратНУ, 0) = 0
    |                    И НЕ ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Справочник.СтатьиЗатрат).ВидДеятельностиДляНалоговогоУчетаЗатрат = &ЕНВД
    |                ТОГДА 0
    |            ИНАЧЕ ХозрасчетныйОбороты.СуммаНУОборотДт
    |        КОНЕЦ) КАК СуммаНуОборотДт,
    |    СУММА(ВЫБОР
    |            КОГДА ЕСТЬNULL(Правила.ВидЗатратНУ, 0) = 0
    |                    И НЕ ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Справочник.СтатьиЗатрат).ВидДеятельностиДляНалоговогоУчетаЗатрат = &ЕНВД
    |                ТОГДА 0
    |            ИНАЧЕ ХозрасчетныйОбороты.СуммаПРОборотДт
    |        КОНЕЦ) КАК СуммаПрОборотДт,
    |    СУММА(ВЫБОР
    |            КОГДА ЕСТЬNULL(Правила.ВидЗатратНУ, 0) = 0
    |                    И НЕ ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Справочник.СтатьиЗатрат).ВидДеятельностиДляНалоговогоУчетаЗатрат = &ЕНВД
    |                ТОГДА 0
    |            ИНАЧЕ ХозрасчетныйОбороты.СуммаВРОборотДт
    |        КОНЕЦ) КАК СуммаВрОборотДт
    |ПОМЕСТИТЬ ВТ_ХозрасчетныйОбороты
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(
    |            &НачГраница,
    |            &КонГраница,
    |            ,
    |            Счет В
    |                (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                    ВТ_ВыпускПродукцииУслуг.СчетЗатрат
    |                ИЗ
    |                    ВТ_ВыпускПродукцииУслуг),
    |            &ВидыСубконтоНГиСЗ,
    |            Организация = &Организация
    |                    И (Подразделение, Субконто1) В
    |                        (ВЫБРАТЬ
    |                            Фильтр.Подразделение,
    |                            Фильтр.НоменклатурнаяГруппа
    |                        ИЗ
    |                            Фильтр КАК Фильтр)
    |                ИЛИ Подразделение ЕСТЬ NULL
    |                    И Субконто1 В
    |                        (ВЫБРАТЬ
    |                            Фильтр.НоменклатурнаяГруппа
    |                        ИЗ
    |                            Фильтр КАК Фильтр),
    |            ,
    |            ) КАК ХозрасчетныйОбороты
    |        ЛЕВОЕ СОЕДИНЕНИЕ СписокПрямыхРасходовНУ КАК Правила
    |        ПО (Правила.ВидЗатратНУ = ХозрасчетныйОбороты.Субконто2.ВидРасходовНУ)
    |            И (ВЫБОР
    |                КОГДА Правила.Подразделение <> НЕОПРЕДЕЛЕНО
    |                    ТОГДА Правила.Подразделение = ХозрасчетныйОбороты.Подразделение
    |                ИНАЧЕ ИСТИНА
    |            КОНЕЦ)
    |            И (ВЫБОР
    |                КОГДА Правила.СчетЗатрат <> НЕОПРЕДЕЛЕНО
    |                    ТОГДА Правила.СчетЗатрат = ХозрасчетныйОбороты.Счет
    |                ИНАЧЕ ИСТИНА
    |            КОНЕЦ)
    |            И (ВЫБОР
    |                КОГДА Правила.КорСчетЗатрат <> НЕОПРЕДЕЛЕНО
    |                    ТОГДА Правила.КорСчетЗатрат = ХозрасчетныйОбороты.КорСчет
    |                ИНАЧЕ ИСТИНА
    |            КОНЕЦ)
    |            И (ВЫБОР
    |                КОГДА Правила.СтатьяЗатрат <> НЕОПРЕДЕЛЕНО
    |                    ТОГДА Правила.СтатьяЗатрат = ХозрасчетныйОбороты.Субконто2
    |                ИНАЧЕ ИСТИНА
    |            КОНЕЦ)
    |
    |СГРУППИРОВАТЬ ПО
    |    ХозрасчетныйОбороты.Счет,
    |    ХозрасчетныйОбороты.Подразделение,
    |    ХозрасчетныйОбороты.Субконто1
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ХозрасчетныйОборотыИОстатки.Счет,
    |    ХозрасчетныйОборотыИОстатки.Подразделение,
    |    ХозрасчетныйОборотыИОстатки.Субконто1 КАК НоменклатурнаяГруппа,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОборотыИОстатки.СуммаОборотДт, 0)) КАК СуммаОборотДт,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОборотыИОстатки.СуммаНуОборотДт, 0)) КАК СуммаНуОборотДт,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОборотыИОстатки.СуммаПрОборотДт, 0)) КАК СуммаПрОборотДт,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОборотыИОстатки.СуммаВрОборотДт, 0)) КАК СуммаВрОборотДт,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОборотыИОстатки.СуммаОстаток, 0)) КАК СуммаКонечныйОстаток,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОборотыИОстатки.СуммаНуОстаток, 0)) КАК СуммаНуКонечныйОстаток,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОборотыИОстатки.СуммаПрОстаток, 0)) КАК СуммаПрКонечныйОстаток,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОборотыИОстатки.СуммаВрОстаток, 0)) КАК СуммаВрКонечныйОстаток
    |ПОМЕСТИТЬ ВТ_ХозрасчетныйОборотыИОстатки
    |ИЗ
    |    (ВЫБРАТЬ
    |        ХозрасчетныйОбороты.Счет КАК Счет,
    |        ХозрасчетныйОбороты.Подразделение КАК Подразделение,
    |        ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
    |        ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
    |        ХозрасчетныйОбороты.СуммаНуОборотДт КАК СуммаНуОборотДт,
    |        ХозрасчетныйОбороты.СуммаПрОборотДт КАК СуммаПрОборотДт,
    |        ХозрасчетныйОбороты.СуммаВрОборотДт КАК СуммаВрОборотДт,
    |        0 КАК СуммаОстаток,
    |        0 КАК СуммаНуОстаток,
    |        0 КАК СуммаПрОстаток,
    |        0 КАК СуммаВрОстаток
    |    ИЗ
    |        ВТ_ХозрасчетныйОбороты КАК ХозрасчетныйОбороты
    |    
    |    ОБЪЕДИНИТЬ ВСЕ
    |    
    |    ВЫБРАТЬ
    |        ХозрасчетныйОстатки.Счет,
    |        ХозрасчетныйОстатки.Подразделение,
    |        ХозрасчетныйОстатки.Субконто1,
    |        0,
    |        0,
    |        0,
    |        0,
    |        ХозрасчетныйОстатки.СуммаОстаток,
    |        ХозрасчетныйОстатки.СуммаНУОстаток,
    |        ХозрасчетныйОстатки.СуммаПРОстаток,
    |        ХозрасчетныйОстатки.СуммаВРОстаток
    |    ИЗ
    |        РегистрБухгалтерии.Хозрасчетный.Остатки(
    |                &КонГраница,
    |                Счет В
    |                    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                        ВТ_ВыпускПродукцииУслуг.СчетЗатрат
    |                    ИЗ
    |                        ВТ_ВыпускПродукцииУслуг),
    |                &ВидыСубконтоНГиСЗ,
    |                Организация = &Организация
    |                        И (Подразделение, Субконто1) В
    |                            (ВЫБРАТЬ
    |                                Фильтр.Подразделение,
    |                                Фильтр.НоменклатурнаяГруппа
    |                            ИЗ
    |                                Фильтр КАК Фильтр)
    |                    ИЛИ Подразделение ЕСТЬ NULL
    |                        И Субконто1 В
    |                            (ВЫБРАТЬ
    |                                Фильтр.НоменклатурнаяГруппа
    |                            ИЗ
    |                                Фильтр КАК Фильтр)) КАК ХозрасчетныйОстатки) КАК ХозрасчетныйОборотыИОстатки
    |
    |СГРУППИРОВАТЬ ПО
    |    ХозрасчетныйОборотыИОстатки.Счет,
    |    ХозрасчетныйОборотыИОстатки.Подразделение,
    |    ХозрасчетныйОборотыИОстатки.Субконто1
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВыпускПродукцииУслуг.СчетЗатрат КАК СчетЗатрат,
    |    ВыпускПродукцииУслуг.Подразделение КАК Подразделение,
    |    ВыпускПродукцииУслуг.ПодразделениеСписания КАК ПодразделениеСписания,
    |    ВыпускПродукцииУслуг.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    |    ВыпускПродукцииУслуг.Продукция,
    |    ВыпускПродукцииУслуг.СчетСписания,
    |    ВыпускПродукцииУслуг.СубконтоСписания1,
    |    ВыпускПродукцииУслуг.СубконтоСписания2,
    |    ВыпускПродукцииУслуг.СубконтоСписания3,
    |    СУММА(ВыпускПродукцииУслуг.ПлановаяСтоимость) КАК ПлановаяСтоимость,
    |    СУММА(ВыпускПродукцииУслуг.ПлановаяСтоимостьВПроводках) КАК ПлановаяСтоимостьВПроводках,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.СуммаКонечныйОстаток, 0)) КАК ОстатокПрямыхРасходов,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОборотДт, 0)) КАК ВсегоПрямыхРасходов,
    |    СУММА(ВЫБОР
    |            КОГДА ЕСТЬNULL(ХозрасчетныйОстатки2023.СуммаОстаток, 0) - ЕСТЬNULL(ОстаткиНЗП.СуммаБУ, 0) > 0
    |                ТОГДА ЕСТЬNULL(ВыпускПродукцииУслуг.ПлановаяСтоимостьОборот, 0)
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК СписаноРасходов,
    |    СУММА(ЕСТЬNULL(ОстаткиНЗП.СуммаБУ, 0)) КАК СуммаНЗП,
    |    СУММА(ЕСТЬNULL(ОстаткиНЗП.СуммаНУ, 0)) КАК СуммаНЗПНУ,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.СуммаНуКонечныйОстаток, 0) + ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаВРОборотКт, 0) + ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаПРОборотКт, 0)) КАК ОстатокПрямыхРасходовНУ,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.СуммаПрКонечныйОстаток, 0)) КАК ОстатокПрямыхРасходовПР,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.СуммаВрКонечныйОстаток, 0)) КАК ОстатокПрямыхРасходовВР,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.СуммаНуОборотДт, 0)) КАК ВсегоПрямыхРасходовНУ,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.СуммаПрОборотДт, 0)) КАК ВсегоПрямыхРасходовПР,
    |    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.СуммаВрОборотДт, 0)) КАК ВсегоПрямыхРасходовВР,
    |    СУММА(ВЫБОР
    |            КОГДА ЕСТЬNULL(ХозрасчетныйОстатки2023.СуммаНУОстаток, 0) - ЕСТЬNULL(ОстаткиНЗП.СуммаНУ, 0) > 0
    |                    ИЛИ ЕСТЬNULL(ХозрасчетныйОстатки2023.СуммаОстаток, 0) - ЕСТЬNULL(ОстаткиНЗП.СуммаБУ, 0) > 0
    |                ТОГДА ЕСТЬNULL(ВыпускПродукцииУслуг.ПлановаяСтоимостьОборот, 0)
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК СписаноРасходовНУ,
    |    0 КАК СписаноРасходовПР,
    |    0 КАК СписаноРасходовВР
    |ИЗ
    |    ВТ_ВыпускПродукцииУслуг КАК ВыпускПродукцииУслуг
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ХозрасчетныйОборотыИОстатки КАК ХозрасчетныйОстатки
    |        ПО ВыпускПродукцииУслуг.СчетЗатрат = ХозрасчетныйОстатки.Счет
    |            И ВыпускПродукцииУслуг.Подразделение = ХозрасчетныйОстатки.Подразделение
    |            И ВыпускПродукцииУслуг.НоменклатурнаяГруппа = ХозрасчетныйОстатки.НоменклатурнаяГруппа
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            ИнвентаризацияНЗПСостав.Ссылка.СчетЗатрат КАК СчетЗатрат,
    |            ИнвентаризацияНЗПСостав.Ссылка.ПодразделениеОрганизации КАК Подразделение,
    |            ИнвентаризацияНЗПСостав.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    |            СУММА(ИнвентаризацияНЗПСостав.Сумма) КАК СуммаБУ,
    |            СУММА(ИнвентаризацияНЗПСостав.СуммаНУ) КАК СуммаНУ
    |        ИЗ
    |            Документ.ИнвентаризацияНЗП.Состав КАК ИнвентаризацияНЗПСостав
    |                ВНУТРЕННЕЕ СОЕДИНЕНИЕ Фильтр КАК Фильтр
    |                ПО ИнвентаризацияНЗПСостав.Ссылка.ПодразделениеОрганизации = Фильтр.Подразделение
    |                    И ИнвентаризацияНЗПСостав.НоменклатурнаяГруппа = Фильтр.НоменклатурнаяГруппа
    |        ГДЕ
    |            ИнвентаризацияНЗПСостав.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
    |            И ИнвентаризацияНЗПСостав.Ссылка.Организация = &Организация
    |            И НЕ ИнвентаризацияНЗПСостав.Ссылка.ПометкаУдаления
    |        
    |        СГРУППИРОВАТЬ ПО
    |            ИнвентаризацияНЗПСостав.Ссылка.СчетЗатрат,
    |            ИнвентаризацияНЗПСостав.Ссылка.ПодразделениеОрганизации,
    |            ИнвентаризацияНЗПСостав.НоменклатурнаяГруппа) КАК ОстаткиНЗП
    |        ПО (ХозрасчетныйОстатки.Счет = ОстаткиНЗП.СчетЗатрат)
    |            И (ХозрасчетныйОстатки.Подразделение = ОстаткиНЗП.Подразделение)
    |            И (ХозрасчетныйОстатки.НоменклатурнаяГруппа = ОстаткиНЗП.НоменклатурнаяГруппа)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
    |                &НачДата,
    |                &КонДата,
    |                ,
    |                СчетДт В ИЕРАРХИИ (&Счет90),
    |                &ВидыСубконто,
    |                СчетКт В ИЕРАРХИИ (&СчетаЗатрат),
    |                ,
    |                Организация = &Организация
    |                        И (ПодразделениеКт, СубконтоКт1) В
    |                            (ВЫБРАТЬ
    |                                Фильтр.Подразделение,
    |                                Фильтр.НоменклатурнаяГруппа
    |                            ИЗ
    |                                Фильтр КАК Фильтр)
    |                    ИЛИ ПодразделениеКт ЕСТЬ NULL
    |                        И СубконтоКт1 В
    |                            (ВЫБРАТЬ
    |                                Фильтр.НоменклатурнаяГруппа
    |                            ИЗ
    |                                Фильтр КАК Фильтр)) КАК ХозрасчетныйОборотыДтКт
    |        ПО ВыпускПродукцииУслуг.СчетЗатрат = ХозрасчетныйОборотыДтКт.СчетКт
    |            И ВыпускПродукцииУслуг.Подразделение = ХозрасчетныйОборотыДтКт.ПодразделениеКт
    |            И ВыпускПродукцииУслуг.НоменклатурнаяГруппа = ХозрасчетныйОборотыДтКт.СубконтоКт1
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&КонГраница, Счет В ИЕРАРХИИ (&СчетаЗатрат), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы), Организация = &Организация) КАК ХозрасчетныйОстатки2023
    |        ПО ВыпускПродукцииУслуг.СчетЗатрат = ХозрасчетныйОстатки2023.Счет
    |            И ВыпускПродукцииУслуг.НоменклатурнаяГруппа = ХозрасчетныйОстатки2023.Субконто1
    |
    |СГРУППИРОВАТЬ ПО
    |    ВыпускПродукцииУслуг.СчетЗатрат,
    |    ВыпускПродукцииУслуг.Подразделение,
    |    ВыпускПродукцииУслуг.НоменклатурнаяГруппа,
    |    ВыпускПродукцииУслуг.Продукция,
    |    ВыпускПродукцииУслуг.СчетСписания,
    |    ВыпускПродукцииУслуг.СубконтоСписания1,
    |    ВыпускПродукцииУслуг.СубконтоСписания2,
    |    ВыпускПродукцииУслуг.СубконтоСписания3,
    |    ВыпускПродукцииУслуг.ПодразделениеСписания
    |
    |УПОРЯДОЧИТЬ ПО
    |    Подразделение,
    |    СчетЗатрат,
    |    НоменклатурнаяГруппа
    |ИТОГИ
    |    СУММА(ПлановаяСтоимость),
    |    СУММА(ПлановаяСтоимостьВПроводках),
    |    МАКСИМУМ(ОстатокПрямыхРасходов),
    |    СУММА(ВсегоПрямыхРасходов),
    |    СУММА(СписаноРасходов),
    |    МАКСИМУМ(СуммаНЗП),
    |    МАКСИМУМ(СуммаНЗПНУ),
    |    МАКСИМУМ(ОстатокПрямыхРасходовНУ),
    |    МАКСИМУМ(ОстатокПрямыхРасходовПР),
    |    МАКСИМУМ(ОстатокПрямыхРасходовВР),
    |    СУММА(ВсегоПрямыхРасходовНУ),
    |    СУММА(ВсегоПрямыхРасходовПР),
    |    СУММА(ВсегоПрямыхРасходовВР),
    |    СУММА(СписаноРасходовНУ),
    |    СУММА(СписаноРасходовПР),
    |    СУММА(СписаноРасходовВР)
    |ПО
    |    Подразделение,
    |    СчетЗатрат,
    |    НоменклатурнаяГруппа
    |АВТОУПОРЯДОЧИВАНИЕ";
    
    Если ПодразделенияИНоменклатурныеГруппы.Количество() > 0
        И ПодразделенияИНоменклатурныеГруппы[0].НоменклатурнаяГруппа = "Все" Тогда
        
        ТекстЗапросаФильтр =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    Таблица.Подразделение КАК Подразделение
        |ПОМЕСТИТЬ Фильтр
        |ИЗ
        |    &ПодразделенияИНоменклатурныеГруппы КАК Таблица
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Подразделение";
        
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
            "ИЛИ Подразделение ЕСТЬ NULL
            |                    И Субконто1 В
            |                        (ВЫБРАТЬ
            |                            Фильтр.НоменклатурнаяГруппа
            |                        ИЗ
            |                            Фильтр КАК Фильтр)",
            "ИЛИ Подразделение ЕСТЬ NULL");
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
            "ИЛИ Подразделение ЕСТЬ NULL
            |                        И Субконто1 В
            |                            (ВЫБРАТЬ
            |                                Фильтр.НоменклатурнаяГруппа
            |                            ИЗ
            |                                Фильтр КАК Фильтр)",
            "ИЛИ Подразделение ЕСТЬ NULL");
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
            "И ИнвентаризацияНЗПСостав.НоменклатурнаяГруппа = Фильтр.НоменклатурнаяГруппа", "");
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И (ПодразделениеКт, СубконтоКт1) В", "И ПодразделениеКт В");
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
            "ИЛИ ПодразделениеКт ЕСТЬ NULL
            |                        И СубконтоКт1 В
            |                            (ВЫБРАТЬ
            |                                Фильтр.НоменклатурнаяГруппа
            |                            ИЗ
            |                                Фильтр КАК Фильтр)",
            "ИЛИ ПодразделениеКт ЕСТЬ NULL");
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"И (Подразделение, НоменклатурнаяГруппа) В", "И Подразделение В");
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Фильтр.Подразделение,", "Фильтр.Подразделение");
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Фильтр.НоменклатурнаяГруппа", "");
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"И (Подразделение, Субконто1) В", "И Подразделение В");
            
    Иначе
            
        ТекстЗапросаФильтр =
        "ВЫБРАТЬ
        |    Таблица.Подразделение КАК Подразделение,
        |    Таблица.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа
        |ПОМЕСТИТЬ Фильтр
        |ИЗ
        |    &ПодразделенияИНоменклатурныеГруппы КАК Таблица
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Подразделение,
        |    НоменклатурнаяГруппа";
    КонецЕсли;    
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = СтруктураДопПараметров.МенеджерВременныхТаблиц;
    Запрос.УстановитьПараметр("ПодразделенияИНоменклатурныеГруппы", ПодразделенияИНоменклатурныеГруппы);
    Запрос.Текст = ТекстЗапросаФильтр;
    Запрос.Выполнить();
    
    Запрос.Текст = ТекстЗапроса;
    Запрос.УстановитьПараметр("НачДата",               мНачДата);
    Запрос.УстановитьПараметр("КонДата",               мКонДата);
    Запрос.УстановитьПараметр("НачГраница",            мНачГраница);
    Запрос.УстановитьПараметр("КонГраница",            мКонГраница);
    Запрос.УстановитьПараметр("Организация",           СтруктураШапкиДокумента.Организация);
    Запрос.УстановитьПараметр("ЕНВД",                  Перечисления.ВидыДеятельностиДляНалоговогоУчетаЗатрат.ПредпринимательскаяДеятельностьОблагаемаяЕНВД);
    
    СчетаЗатрат = Новый Массив;
    СчетаЗатрат.Добавить(ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_);
    СчетаЗатрат.Добавить(ПланыСчетов.Хозрасчетный.ВспомогательныеПроизводства);
    Запрос.УстановитьПараметр("СчетаЗатрат",        СчетаЗатрат);
    Счета90 = Новый Массив;
    Счета90.Добавить(ПланыСчетов.Хозрасчетный.Продажи_РасходыНаПродажу);
    Счета90.Добавить(ПланыСчетов.Хозрасчетный.Продажи_УправленческиеРасходы);
    Запрос.УстановитьПараметр("Счет90",        Счета90);
    
    ВидыСубконто = Новый Массив;
 &n
27 Sasha_Rapira
 
20.10.14
08:54
(25) ну на новом сервер дума для служб НЕ ? Или проверить и тот вариант и тот. Я думаю это мало-эффективный параметр
28 vde69
 
20.10.14
08:57
29 Ranger_83
 
20.10.14
08:59
(0) Сервер приложений и СУБД на одном сервере?
30 Sasha_Rapira
 
20.10.14
09:18
(29) да конечно.
31 Fragster
 
гуру
20.10.14
15:11
запрос, конечно, хреновый, но вот вопрос - на какую дату рассчитаны итоги?
32 Sasha_Rapira
 
21.10.14
01:03
(31) http://i68.fastpic.ru/big/2014/1021/53/005a952f7a5a45e7952744e0af7be753.png  если я правильно делаю
33 Фокусник
 
21.10.14
01:07
3 минуты закрытие месяца и они не довольны? Стукни бухам чем-нибудь по голове... ;)
34 Sasha_Rapira
 
21.10.14
01:09
(33) подскажи в (32) тут ставится дата расчетов итогов?
35 Feunoir
 
21.10.14
06:59
(3) На 4 гига базы 32 гига оперативы мало? Да ладно. Да ещё и при SSD. Не смешите меня.

"У одной моей подруги" на серваке 24 гига оперативы, сидит два десятка пользователей в терминале, тут же SQL с базой в 50 гигов на SSD. И ничего - тормозов не наблюдается.
36 Fragster
 
гуру
21.10.14
09:17
(32) картинка не грузится
37 Sasha_Rapira
 
21.10.14
09:21
(36) миллион хостингов для картинок и постоянно не работают. http://i065.radikal.ru/1410/03/ec16f9983665.png
Программист всегда исправляет последнюю ошибку.