Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

"Чудная" скорость работы ERP 2.4

"Чудная" скорость работы ERP 2.4
Я
   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
            ТОГДА ВЫРАЗИТЬ((ВЫРАЗИТЬ
 
 
   Marik1274
 
1 - 31.10.18 - 10:44
Собственно из-за этого запроса документ "Регистрация цен номенклатуры поставщиков" открывается больше минуты. Кто-то сталкивался с подобным?
   Hans
 
2 - 31.10.18 - 10:45
Чудные запросы.
   Dmitry1c
 
3 - 31.10.18 - 10:47
(1) что хочешь-то?
   Dmitry1c
 
4 - 31.10.18 - 10:47
жесткий диск не SSD 
проц энергосберегающий

во народ
   Marik1274
 
5 - 31.10.18 - 10:54
(3) См. 1
(4) Сам текст запроса тебя не смущает?
   Marik1274
 
6 - 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) Гм. И сколько?
   vis_tmp
 
10 - 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 %
   Marik1274
 
14 - 31.10.18 - 11:07
В параметре в таблице источнике 1 строка.
(12) это флагман 1с ) бест блин практикс
   palsergeich
 
15 - 31.10.18 - 11:08
Данунафиг это реально типовой запрос?
   NeoVision
 
16 - 31.10.18 - 11:19
Понятие флагмана у 1с не включает корректности кода и сверхпроизводительности. Делайте как все - железо пожирней в продакшн.
   asady
 
17 - 31.10.18 - 11:47
(0) подтверждаю, установка цен номенклатуры очень тормозной док что в ЕРП что в УТ11

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

//
Процедура ЗагрузитьТабличнуюЧастьТовары(Форма, КэшДанных) Экспорт
   Buster007
 
36 - 31.10.18 - 14:21
что мешает оптимизировать?
   Buster007
 
37 - 31.10.18 - 14:21
+(36) + еще денег с этого заработаете )
   piter3
 
38 - 31.10.18 - 14:22
(36) обычный холивар на тему,что должно все летать из коробки
   PR
 
39 - 31.10.18 - 14:30
Открываю типовую ERP 2.4.5.82, открываю общий модуль "УстановкаЦенСервер", не нахожу там такого текста запроса
Вывод: ТС трындит
   0
 
40 - 31.10.18 - 14:35
(0) руки рубить за такие запросы
   asady
 
41 - 31.10.18 - 14:39
(39) там запрос собирается динамически  - ТС привел запрос уже на выходе
а в тексте там вызов двух функций 
    Запрос.Текст = СтрЗаменить(Запрос.Текст,
        "&ТекстЗапросаКоэффициентУпаковки1",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
        "ЦеныНоменклатуры.Упаковка",
        "ЦеныНоменклатуры.Номенклатура"));
        
    Запрос.Текст = СтрЗаменить(Запрос.Текст,
        "&ТекстЗапросаКоэффициентУпаковки2",
        Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
        "ВременнаяТаблицаТовары.Упаковка",
        "ВременнаяТаблицаТовары.Номенклатура"));

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует