Имя: Пароль:
1C
1С v8
"Чудная" скорость работы ERP 2.4
0 Marik1274
 
31.10.18
10:40
1с ERP 2.4.5.82 (файловая, тестовая локальная копия) 8.3.12.1529 ОЗУ 16 гб, винт - hdd, cpu - i3 - 4130T 2.9

Ниже запрос из типового общего модуля "УстановкаЦенСервер".
Замер его работы:
Запрос.Выполнить() - 64 сек. 74 %

Ну как так?

ВЫБРАТЬ
    ВременнаяТаблицаТовары.Индекс КАК Индекс,
    ВременнаяТаблицаТовары.НоменклатураПоставщика КАК НоменклатураПоставщика,
    ВременнаяТаблицаТовары.Номенклатура КАК Номенклатура,
    ВременнаяТаблицаТовары.Характеристика КАК Характеристика,
    ВременнаяТаблицаТовары.ВидЦеныПоставщика КАК ВидЦены,
    ВременнаяТаблицаТовары.Упаковка КАК Упаковка,
    ВременнаяТаблицаТовары.Цена КАК Цена
ПОМЕСТИТЬ ВременнаяТаблицаТовары
ИЗ
    &Товары КАК ВременнаяТаблицаТовары

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Характеристика,
    ВидЦены
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВременнаяТаблицаТовары.Индекс КАК Индекс,
    ВременнаяТаблицаТовары.НоменклатураПоставщика КАК НоменклатураПоставщика,
    ВременнаяТаблицаТовары.Номенклатура КАК Номенклатура,
    ВременнаяТаблицаТовары.Характеристика КАК Характеристика,
    ВременнаяТаблицаТовары.ВидЦены КАК ВидЦены,
    ВременнаяТаблицаТовары.Цена КАК Цена,
    ЛОЖЬ КАК ЦенаИзмененаВручную,
    ВЫБОР
        КОГДА ЦеныНоменклатуры.Упаковка = ВременнаяТаблицаТовары.Упаковка
            ТОГДА ЦеныНоменклатуры.Цена
        ИНАЧЕ ЦеныНоменклатуры.Цена / ЕСТЬNULL(ВЫБОР
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес)
                И ЦеныНоменклатуры.Номенклатура.ВесИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ВесЧислитель / ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем)
                И ЦеныНоменклатуры.Номенклатура.ОбъемИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель / ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь)
                И ЦеныНоменклатуры.Номенклатура.ПлощадьИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина)
                И ЦеныНоменклатуры.Номенклатура.ДлинаИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ДлинаЧислитель / ЦеныНоменклатуры.Номенклатура.ДлинаЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА (ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время))
            И ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины
            И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
        ТОГДА
            (ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель)
            /
            (ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.Знаменатель)
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Упаковка)
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.КоличествоШтук)
            ТОГДА 1
        ИНАЧЕ NULL
    КОНЕЦ, 1) * ЕСТЬNULL(ВЫБОР
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес)
                И ВременнаяТаблицаТовары.Номенклатура.ВесИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ВесЧислитель / ВременнаяТаблицаТовары.Номенклатура.ВесЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем)
                И ВременнаяТаблицаТовары.Номенклатура.ОбъемИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ОбъемЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ОбъемЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ОбъемЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ОбъемЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ОбъемЧислитель / ВременнаяТаблицаТовары.Номенклатура.ОбъемЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь)
                И ВременнаяТаблицаТовары.Номенклатура.ПлощадьИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЧислитель / ВременнаяТаблицаТовары.Номенклатура.ПлощадьЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина)
                И ВременнаяТаблицаТовары.Номенклатура.ДлинаИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ДлинаЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ДлинаЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ДлинаЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ДлинаЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ДлинаЧислитель / ВременнаяТаблицаТовары.Номенклатура.ДлинаЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА (ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)
         ИЛИ ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)
         ИЛИ ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)
         ИЛИ ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время))
            И ВременнаяТаблицаТовары.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины
            И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
        ТОГДА
            (ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель)
            /
            (ВременнаяТаблицаТовары.Номенклатура.ЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ЕдиницаИзмерения.Знаменатель)
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Упаковка)
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.КоличествоШтук)
            ТОГДА 1
        ИНАЧЕ NULL
    КОНЕЦ, 1)
    КОНЕЦ КАК ДействующаяЦена,
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА ЦеныНоменклатуры.Цена <> 0
                ТОГДА 100 * (ВременнаяТаблицаТовары.Цена - ВЫБОР
                        КОГДА ЦеныНоменклатуры.Упаковка = ВременнаяТаблицаТовары.Упаковка
                            ТОГДА ЦеныНоменклатуры.Цена
                        ИНАЧЕ ЦеныНоменклатуры.Цена / ЕСТЬNULL(ВЫБОР
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес)
                И ЦеныНоменклатуры.Номенклатура.ВесИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ВесЧислитель / ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем)
                И ЦеныНоменклатуры.Номенклатура.ОбъемИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель / ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь)
                И ЦеныНоменклатуры.Номенклатура.ПлощадьИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина)
                И ЦеныНоменклатуры.Номенклатура.ДлинаИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ДлинаЧислитель / ЦеныНоменклатуры.Номенклатура.ДлинаЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА (ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время))
            И ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины
            И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
        ТОГДА
            (ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель)
            /
            (ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.Знаменатель)
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Упаковка)
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.КоличествоШтук)
            ТОГДА 1
        ИНАЧЕ NULL
    КОНЕЦ, 1) * ЕСТЬNULL(ВЫБОР
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес)
                И ВременнаяТаблицаТовары.Номенклатура.ВесИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ВесЧислитель / ВременнаяТаблицаТовары.Номенклатура.ВесЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем)
                И ВременнаяТаблицаТовары.Номенклатура.ОбъемИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ОбъемЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ОбъемЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ОбъемЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ОбъемЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ОбъемЧислитель / ВременнаяТаблицаТовары.Номенклатура.ОбъемЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь)
                И ВременнаяТаблицаТовары.Номенклатура.ПлощадьИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ПлощадьЧислитель / ВременнаяТаблицаТовары.Номенклатура.ПлощадьЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина)
                И ВременнаяТаблицаТовары.Номенклатура.ДлинаИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ДлинаЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ДлинаЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ДлинаЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ДлинаЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Номенклатура.ДлинаЧислитель / ВременнаяТаблицаТовары.Номенклатура.ДлинаЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА (ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)
         ИЛИ ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)
         ИЛИ ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)
         ИЛИ ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время))
            И ВременнаяТаблицаТовары.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины
            И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
        ТОГДА
            (ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель)
            /
            (ВременнаяТаблицаТовары.Номенклатура.ЕдиницаИзмерения.Числитель / ВременнаяТаблицаТовары.Номенклатура.ЕдиницаИзмерения.Знаменатель)
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Упаковка)
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ(ВременнаяТаблицаТовары.Упаковка.Числитель / ВременнаяТаблицаТовары.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.КоличествоШтук)
            ТОГДА 1
        ИНАЧЕ NULL
    КОНЕЦ, 1)
                    КОНЕЦ) / ВЫБОР
                        КОГДА ЦеныНоменклатуры.Упаковка = ВременнаяТаблицаТовары.Упаковка
                            ТОГДА ЦеныНоменклатуры.Цена
                        ИНАЧЕ ЦеныНоменклатуры.Цена / ЕСТЬNULL(ВЫБОР
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес)
                И ЦеныНоменклатуры.Номенклатура.ВесИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ВесЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ВесЧислитель / ЦеныНоменклатуры.Номенклатура.ВесЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Объем)
                И ЦеныНоменклатуры.Номенклатура.ОбъемИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ОбъемЧислитель / ЦеныНоменклатуры.Номенклатура.ОбъемЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Площадь)
                И ЦеныНоменклатуры.Номенклатура.ПлощадьИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ПлощадьЧислитель / ЦеныНоменклатуры.Номенклатура.ПлощадьЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Длина)
                И ЦеныНоменклатуры.Номенклатура.ДлинаИспользовать
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЧислитель, 0) <> 0
                И ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ДлинаЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ДлинаЕдиницаИзмерения.Знаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))) / (ВЫРАЗИТЬ(ЦеныНоменклатуры.Номенклатура.ДлинаЧислитель / ЦеныНоменклатуры.Номенклатура.ДлинаЗнаменатель КАК ЧИСЛО(15, 7))) КАК ЧИСЛО(15, 7))
        КОГДА (ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Мощность)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Энергия)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.ЭлектрическийЗаряд)
         ИЛИ ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Время))
            И ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины
            И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
        ТОГДА
            (ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель)
            /
            (ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.Числитель / ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения.Знаменатель)
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Упаковка)
                И ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Знаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ(ЦеныНоменклатуры.Упаковка.Числитель / ЦеныНоменклатуры.Упаковка.Знаменатель КАК ЧИСЛО(15, 7))
        КОГДА ЦеныНоменклатуры.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.КоличествоШтук)
            ТОГДА 1
        ИНАЧЕ NULL
    КОНЕЦ, 1) * ЕСТЬNULL(ВЫБОР
        КОГДА ВременнаяТаблицаТовары.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Вес)
                И ВременнаяТаблицаТовары.Номенклатура.ВесИспользовать
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Упаковка.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Числитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЕдиницаИзмерения.Знаменатель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЧислитель, 0) <> 0
                И ЕСТЬNULL(ВременнаяТаблицаТовары.Номенклатура.ВесЗнаменатель, 0) <> 0
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ
1 Marik1274
 
31.10.18
10:44
Собственно из-за этого запроса документ "Регистрация цен номенклатуры поставщиков" открывается больше минуты. Кто-то сталкивался с подобным?
2 Hans
 
31.10.18
10:45
Чудные запросы.
3 Dmitry1c
 
31.10.18
10:47
(1) что хочешь-то?
4 Dmitry1c
 
31.10.18
10:47
жесткий диск не SSD
проц энергосберегающий

во народ
5 Marik1274
 
31.10.18
10:54
(3) См. 1
(4) Сам текст запроса тебя не смущает?
6 Marik1274
 
31.10.18
10:55
На сервере документ открывается порядка 3-х секунд, разве это нормально?
7 мой_ник
 
31.10.18
10:56
(5) мне нравится ЕСТЬNULL(ЦеныНоменклатуры.Номенклатура.ОбъемЕдиницаИзмерения.Числитель, 0)
это сколько там система соединений должна сделать внутри себя
8 мой_ник
 
31.10.18
10:57
причем они вроде бы сами говорили, что так не рекомендуется и типа не оптимально.
9 Галахад
 
гуру
31.10.18
10:59
(7) Гм. И сколько?
10 vis_tmp
 
31.10.18
11:00
(9)Три?
11 мой_ник
 
31.10.18
11:01
(9) одно лишнее, как минимум
12 Галахад
 
гуру
31.10.18
11:04
Это беда?
13 мой_ник
 
31.10.18
11:05
да, если по зернышку получается
Запрос.Выполнить() - 64 сек. 74 %
14 Marik1274
 
31.10.18
11:07
В параметре в таблице источнике 1 строка.
(12) это флагман 1с ) бест блин практикс
15 palsergeich
 
31.10.18
11:08
Данунафиг это реально типовой запрос?
16 NeoVision
 
31.10.18
11:19
Понятие флагмана у 1с не включает корректности кода и сверхпроизводительности. Делайте как все - железо пожирней в продакшн.
17 asady
 
31.10.18
11:47
(0) подтверждаю, установка цен номенклатуры очень тормозной док что в ЕРП что в УТ11

я его стараюсь делать и обслуживать из внешних обработок не юзая форму
18 Marik1274
 
31.10.18
11:59
(17) Значит не я один мучаюсь )
На счет не юзать форму - хорошая идея. Спасибо!
19 Вафель
 
31.10.18
11:59
Разве ЕРП вообще в файле работает?
20 Fragster
 
гуру
31.10.18
12:02
(19) ну может у разработчика
21 Вафель
 
31.10.18
12:02
(20) вряд ли они вообще тестируют ЕРП на файле
22 Fragster
 
гуру
31.10.18
12:02
(0) переделай, добавив еще одну промежуточную временную таблицу с явным соединением с единицами
23 Fragster
 
гуру
31.10.18
12:02
(21) я говорю про конкретного фикс/франча, который на внедрении/сопровождении
24 Marik1274
 
31.10.18
12:06
(19) на сервере тестовых баз не хватает. Порезал до 80 гб и развернул локально. Оказалось работает)
25 shuhard
 
31.10.18
12:31
(14)[это флагман 1с ) бест блин практикс]
и флагман и бэст практик в принципиальных моментах
26 rozer76
 
31.10.18
12:35
(15) ага, 99% тут типовой пересчет упаковок по типу измеряемой величины- он лепится везде где упаковки и в СКД даже запрос модифицируется программно
27 PR
 
31.10.18
12:45
(0) После "файловая" дальше не читал, не могу никак просмеяться
28 asady
 
31.10.18
12:48
(27) тормозит и скульная - открой установку цен номенклатуры и оцени скорость...
вот тогда и посмеемся
29 Marik1274
 
31.10.18
12:54
(28) +100500!
30 Tonik992
 
31.10.18
13:14
(28) Деньги лежат на поверхности, 1Сники создали пласт для заработка
31 Смотрящий
 
31.10.18
13:30
Жрите, жрите кактус!
32 Tonik992
 
31.10.18
13:36
(31) Да это не ERP, а целый техас, наполненный кактусов
33 palsergeich
 
31.10.18
13:42
И эти люди запрещают мне ковыряться в носу (цитата)
34 Garykom
 
гуру
31.10.18
14:09
(0) А какова цель выполнения этого запроса в конфе именно перед/при открытии формы?
35 Marik1274
 
31.10.18
14:12
(34)
// Осуществляет загрузку цен для всех строк табличной части товары
//
Процедура ЗагрузитьТабличнуюЧастьТовары(Форма, КэшДанных) Экспорт
36 Buster007
 
31.10.18
14:21
что мешает оптимизировать?
37 Buster007
 
31.10.18
14:21
+(36) + еще денег с этого заработаете )
38 piter3
 
31.10.18
14:22
(36) обычный холивар на тему,что должно все летать из коробки
39 PR
 
31.10.18
14:30
Открываю типовую ERP 2.4.5.82, открываю общий модуль "УстановкаЦенСервер", не нахожу там такого текста запроса
Вывод: ТС трындит
40 0xFFFFFF
 
31.10.18
14:35
(0) руки рубить за такие запросы
41 asady
 
31.10.18
14:39
(39) там запрос собирается динамически  - ТС привел запрос уже на выходе
а в тексте там вызов двух функций
    Запрос.Текст = СтрЗаменить(Запрос.Текст,
        "&ТекстЗапросаКоэффициентУпаковки1",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
        "ЦеныНоменклатуры.Упаковка",
        "ЦеныНоменклатуры.Номенклатура"));
        
    Запрос.Текст = СтрЗаменить(Запрос.Текст,
        "&ТекстЗапросаКоэффициентУпаковки2",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
        "ВременнаяТаблицаТовары.Упаковка",
        "ВременнаяТаблицаТовары.Номенклатура"));

которые генерят такую простыню
42 PR
 
31.10.18
16:56
(41) Странно, у меня никаких 64 секунд
Мало данных?
43 StanislawJack
 
31.10.18
17:11
(36) Денег заработаете, говорите? Хм, как известно: "Денег нет! А Вы - держите"? )) ERP просто покупать перестанут таким образом.
44 cons24
 
31.10.18
18:42
(42) скорее всего, да.
На прошлом месте работы было дофига типов цен и номенклатуры. Прайс (типовой отчет) и документы установки цен  - тупили безбожно.
На данном месте работы - 3 вида цен. Все летает.
45 cons24
 
31.10.18
18:44
(43) не перестанут. Руководителям не показывают демобазы с миллионами номенклатур и цен - а на обычных демо-базах полупустых все летает.
46 Eiffil123
 
31.10.18
18:54
там еще встречались раньше запросы к реальным таблицам с начала времен, вместо таблиц остатков.

Этож ерп, должна жрать много. А иначе не видно, что система работает.
47 piter3
 
31.10.18
18:55
(43) Ну да,столько лет все не покупают)))
48 Лефмихалыч
 
31.10.18
21:07
"ERP 2.4.5.82 (файловая"
все остальное бессмысленно
49 PR
 
01.11.18
10:20
(44) MS SQL?