Имеем стандартную конфигурация УТ 10.3 Крутится это все дело под 1С Сервером и Постгресе.
С некоторого времени стал медленно формироваться прайс лист от 5 до 7 минут.
Если запустить в файловом варианте, то все работает хорошо. Прайс формируется за 15 секунд.
Кто нибудь сталкивался с подобной проблемой???
С некоторого времени стал медленно формироваться прайс лист от 5 до 7 минут.
Если запустить в файловом варианте, то все работает хорошо. Прайс формируется за 15 секунд.
Кто нибудь сталкивался с подобной проблемой???
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) spezc,
Вот эта процедура.
Ну а конкретнее РезультатЗапроса = ПостроительОтчета.Результат; Эта строка.
Я так понимаю что копать надо постгреса.
Функция ВыполнитьЗапрос(СлужебныеПоля)
Настройки = ПостроительОтчета.ПолучитьНастройки();
Для Каждого Поле Из СлужебныеПоля Цикл
ПостроительОтчета.ДоступныеПоля[Поле.Ключ].Поле = Истина;
ПостроительОтчета.ВыбранныеПоля.Добавить(Поле.Ключ);
КонецЦикла;
УправлениеОтчетами.ЗадатьПараметрыОтбораПоКатегориям(ПостроительОтчета, ОбщийОтчет.мСтруктураДляОтбораПоКатегориям);
РезультатЗапроса = ПостроительОтчета.Результат;
ПостроительОтчета.УстановитьНастройки(Настройки);
Для Каждого Поле Из СлужебныеПоля Цикл
ПостроительОтчета.ДоступныеПоля[Поле.Ключ].Поле = Ложь;
КонецЦикла;
Возврат РезультатЗапроса;
КонецФункции // ВыполнитьЗапрос()
ПоказатьВот эта процедура.
Ну а конкретнее РезультатЗапроса = ПостроительОтчета.Результат; Эта строка.
Я так понимаю что копать надо постгреса.
(8) KroVladS, (9) spezc,
ВЫБРАТЬ РАЗРЕШЕННЫЕ //РАЗЛИЧНЫЕ
НЕ ЕСТЬNULL(ЗапросПрайс.Номенклатура.ВестиУчетПоХарактеристикам, ИСТИНА) КАК НетХарактеристик,
ЗапросПрайс.ТипЦен.ПорядокОкругления КАК ПорядокОкругления,
ЗапросПрайс.ТипЦен.ОкруглятьВБольшуюСторону КАК ОкруглятьВБольшуюСторону,
ЗапросПрайс.ТипЦен,
ЗапросПрайс.ТипЦен.Представление КАК ТипЦенПредставление,
ЗапросПрайс.ЦеноваяГруппа,
ЗапросПрайс.ЦеноваяГруппа.Представление КАК ЦеноваяГруппаПредставление,
ЗапросПрайс.Номенклатура,
ЗапросПрайс.Номенклатура.Представление КАК НоменклатураПредставление,
ЗапросПрайс.ХарактеристикаНоменклатуры,
ЗапросПрайс.ХарактеристикаНоменклатуры.Представление КАК ХарактеристикаНоменклатурыПредставление,
Остатки.Остаток,
МестаХранения.МестоХранения КАК Стеллаж,
МестаХранения.МестоХранения.Представление КАК СтеллажПредставление,
Штрихкоды.Штрихкод КАК ШтрихКод,
ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
ЗапросПрайс.ЕдиницаИзмерения.Представление
ИНАЧЕ
&ПустаяСтрока
КОНЕЦ КАК ЕдиницаИзмерения,
ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
ЗапросПрайс.ВалютаПрайса.Представление
ИНАЧЕ
&ПустаяСтрока
КОНЕЦ КАК Валюта,
ВЫБОР КОГДА ЗапросПрайс.Валюта = ЗапросПрайс.ВалютаПрайса
ИЛИ ЗапросПрайс.Цена = 0 ТОГДА
ЗапросПрайс.Цена
ИНАЧЕ
ЗапросПрайс.Цена * ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс = 0 ТОГДА
1
ИНАЧЕ
КурсыВалютСрезПоследних.Курс КОНЕЦ
* ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Кратность = 0 ТОГДА
1
ИНАЧЕ
КурсыВалютСрезПоследнихОтчет.Кратность КОНЕЦ
/ ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Курс = 0 ТОГДА
1
ИНАЧЕ
КурсыВалютСрезПоследнихОтчет.Курс КОНЕЦ
/ ВЫБОР КОГДА КурсыВалютСрезПоследних.Кратность = 0 ТОГДА
1
ИНАЧЕ
КурсыВалютСрезПоследних.Кратность КОНЕЦ
КОНЕЦ КАК Цена,
ЗапросПрайс.Номенклатура.ДатаВвода
//СВОЙСТВА
//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
ИЗ
(ВЫБРАТЬ
ЦеныБазовые.ТипЦен КАК ТипЦен,
ВЫБОР КОГДА &ВВалютеОтчета = ЛОЖЬ ТОГДА
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ЦеныБазовые.ТипЦен.ВалютаЦены
ИНАЧЕ
МИНИМУМ(
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
ЦеныБазовые.Валюта
ИНАЧЕ
ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
ЦеныРасчетные.Валюта
ИНАЧЕ
ЦеныБазовые.ВалютаДиапазона
КОНЕЦ
КОНЕЦ
ИНАЧЕ
ЦеныБазовые.Валюта
КОНЕЦ
)
КОНЕЦ
ИНАЧЕ
&ВалютаОтчета
КОНЕЦ КАК ВалютаПрайса,
ЦеныБазовые.ЦеноваяГруппа,
ЦеныБазовые.Номенклатура,
ЦеныБазовые.ХарактеристикаНоменклатуры,
МИНИМУМ(
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ЦеныРасчетные.ЕдиницаИзмерения
ИНАЧЕ
ЦеныБазовые.ЕдиницаИзмерения
КОНЕЦ
) КАК ЕдиницаИзмерения,
МИНИМУМ(
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
ЦеныБазовые.Валюта
ИНАЧЕ
ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
ЦеныРасчетные.Валюта
ИНАЧЕ
ЦеныБазовые.ВалютаДиапазона
КОНЕЦ
КОНЕЦ
ИНАЧЕ
ЦеныБазовые.Валюта
КОНЕЦ
) КАК Валюта,
МИНИМУМ(
ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
ВЫБОР КОГДА ЦеныРасчетные.Цена ЕСТЬ NULL ТОГДА
0
ИНАЧЕ
ЦеныРасчетные.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценки / 100)
КОНЕЦ
ИНАЧЕ
ЦеныБазовые.ЦенаДиапазона
КОНЕЦ
ИНАЧЕ
ЦеныБазовые.Цена
КОНЕЦ
) КАК Цена
ИЗ
(ВЫБРАТЬ
СписокНоменклатуры.Номенклатура КАК Номенклатура,
СписокНоменклатуры.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
СписокНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
СпрТипЦен.ТипЦен КАК ТипЦен,
ЦеныНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена,
ВЫБОР КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL ТОГДА
СпрТипЦен.ПроцентСкидкиНаценки
ИНАЧЕ
ЕСТЬNULL(ЦеныНоменклатуры.ПроцентСкидкиНаценки, ЦеныНоменклатуры.ТипЦен.ПроцентСкидкиНаценки)
КОНЕЦ КАК ПроцентСкидкиНаценки,
ВЫБОР КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL ТОГДА
СпрТипЦен.СпособРасчетаЦены
ИНАЧЕ
ЕСТЬNULL(ЦеныНоменклатуры.СпособРасчетаЦены, ЦеныНоменклатуры.ТипЦен.СпособРасчетаЦены)
КОНЕЦ КАК СпособРасчетаЦены,
ЕСТЬNULL(ШкалыДиапазонов.Цена, 0) КАК ЦенаДиапазона,
ЕСТЬNULL(ШкалыДиапазонов.ВерхняяГраница, 0) КАК ВерхняяГраница,
ЕСТЬNULL(ЦеныНоменклатуры.Валюта, СпрТипЦен.Валюта) КАК Валюта,
ШкалыДиапазонов.Валюта КАК ВалютаДиапазона
ИЗ
(ВЫБРАТЬ
СпрХарактеристики.Владелец КАК Номенклатура,
СпрХарактеристики.Ссылка КАК ХарактеристикаНоменклатуры
ИЗ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
{ГДЕ СпрХарактеристики.Владелец.* КАК Номенклатура,
СпрХарактеристики.Владелец.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
СпрНоменклатура.Ссылка,
ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
ИЗ Справочник.Номенклатура КАК СпрНоменклатура
{ГДЕ СпрНоменклатура.Ссылка.* КАК Номенклатура,
СпрНоменклатура.Ссылка.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
) КАК СписокНоменклатуры
СОЕДИНЕНИЕ
(ВЫБРАТЬ
СправочникЦен.Ссылка КАК ТипЦен,
СправочникЦен.ВалютаЦены КАК Валюта,
СправочникЦен.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
СправочникЦен.СпособРасчетаЦены КАК СпособРасчетаЦены
ИЗ
Справочник.ТипыЦенНоменклатуры КАК СправочникЦен
{ГДЕ СправочникЦен.Ссылка.* КАК ТипЦен}
) КАК СпрТипЦен
ПО НЕ СписокНоменклатуры.Номенклатура.ЭтоГруппа
И НЕ СписокНоменклатуры.Номенклатура.Набор
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа, ТипЦен.* КАК ТипЦен}) КАК ЦеныНоменклатуры
ПО ЦеныНоменклатуры.Номенклатура = СписокНоменклатуры.Номенклатура
И ЦеныНоменклатуры.ТипЦен = СпрТипЦен.ТипЦен
И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = СписокНоменклатуры.ХарактеристикаНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
ДиапазоныЦен.ТипЦен,
ДиапазоныЦен.ВерхняяГраница,
ДиапазоныЦен.Цена,
ДиапазоныЦен.Валюта,
ДиапазоныЦен.ПЕРИОД КАК Период
ИЗ
РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата,
{ТипЦен.* КАК ТипЦен}) КАК ДиапазоныЦен
СОЕДИНЕНИЕ
(ВЫБРАТЬ
ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен,
МАКСИМУМ(ДиапазоныЦенДляНаценкиСрезПоследних.ПЕРИОД) КАК Период
ИЗ
РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата,
{ТипЦен.* КАК ТипЦен}) КАК ДиапазоныЦенДляНаценкиСрезПоследних
СГРУППИРОВАТЬ ПО
ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен
) КАК МаксДиапазоныЦен
ПО ДиапазоныЦен.ТипЦен = МаксДиапазоныЦен.ТипЦен
И ДиапазоныЦен.Период = МаксДиапазоныЦен.Период
) КАК ШкалыДиапазонов
ПО ШкалыДиапазонов.ТипЦен = СпрТипЦен.ТипЦен
И СпрТипЦен.ТипЦен.Рассчитывается
) КАК ЦеныБазовые
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК ЦеныРасчетные
ПО ЦеныБазовые.Номенклатура = ЦеныРасчетные.Номенклатура
И ЦеныБазовые.ХарактеристикаНоменклатуры = ЦеныРасчетные.ХарактеристикаНоменклатуры
И ЦеныБазовые.ТипЦен.БазовыйТипЦен = ЦеныРасчетные.ТипЦен
ГДЕ
НЕ ЦеныБазовые.ТипЦен.Рассчитывается
ИЛИ ЦеныБазовые.СпособРасчетаЦены <> &СпособДиапазон
ИЛИ (ЦеныБазовые.СпособРасчетаЦены = &СпособДиапазон И ЦеныРасчетные.Цена МЕЖДУ 0.000001 И ЦеныБазовые.ВерхняяГраница-0.000001)
СГРУППИРОВАТЬ ПО
ЦеныБазовые.ТипЦен,
ЦеныБазовые.ЦеноваяГруппа,
ЦеныБазовые.Номенклатура,
ЦеныБазовые.ХарактеристикаНоменклатуры
) КАК ЗапросПрайс
СОЕДИНЕНИЕ
(ВЫБРАТЬ
НесвернутыеОстатки.Номенклатура КАК НоменклатураОст,
НесвернутыеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыОст,
Сумма(НесвернутыеОстатки.Остаток) КАК Остаток
ИЗ
(ВЫБРАТЬ
Ост.Номенклатура.Ссылка КАК Номенклатура,
Ост.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
Ост.КоличествоОстаток КАК Остаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, {Склад.* КАК Склад,
Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК Ост
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НТТ.Номенклатура.Ссылка КАК Номенклатура,
НТТ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
НТТ.КоличествоОстаток КАК Остаток
ИЗ
РегистрНакопления.ТоварыВНТТ.Остатки(&Дата, {Склад.* КАК Склад,
Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК НТТ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Розница.Номенклатура.Ссылка КАК Номенклатура,
Розница.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
Розница.КоличествоОстаток КАК Остаток
ИЗ
РегистрНакопления.ТоварыВРознице.Остатки(&Дата, {Склад.* КАК Склад,
Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК Розница
) КАК НесвернутыеОстатки
СГРУППИРОВАТЬ ПО
НесвернутыеОстатки.Номенклатура,
НесвернутыеОстатки.ХарактеристикаНоменклатуры
) КАК Остатки
ПО
ЗапросПрайс.Номенклатура = Остатки.НоменклатураОст
И ЗапросПрайс.ХарактеристикаНоменклатуры = Остатки.ХарактеристикаНоменклатурыОст
СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалютСрезПоследних
ПО ЗапросПрайс.Валюта = КурсыВалютСрезПоследних.Валюта
И ЗапросПрайс.Цена <> 0
СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалютСрезПоследнихОтчет
ПО ЗапросПрайс.ВалютаПрайса = КурсыВалютСрезПоследнихОтчет.Валюта
{
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
МестаХраненияНоменклатуры.Номенклатура КАК НоменклатураХранения,
МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения
ИЗ
РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
СОЕДИНЕНИЕ
(ВЫБРАТЬ
МестаХраненияНоменклатуры.Номенклатура КАК Номенклатура,
МИНИМУМ(МестаХраненияНоменклатуры.Приоритет) КАК Приоритет
ИЗ
РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
СГРУППИРОВАТЬ ПО
Номенклатура
) КАК МинПриоритет
ПО МестаХраненияНоменклатуры.Номенклатура = МинПриоритет.Номенклатура
И МестаХраненияНоменклатуры.Приоритет = МинПриоритет.Приоритет
) КАК МестаХранения
ПО ЗапросПрайс.Номенклатура = МестаХранения.НоменклатураХранения
}
{
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
Штрихкоды.ШтрихКод КАК ШтрихКод,
Штрихкоды.Владелец КАК Владелец,
Штрихкоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыШтрихКода
ИЗ
РегистрСведений.Штрихкоды КАК Штрихкоды
) КАК ШтрихКоды
ПО ЗапросПрайс.Номенклатура = Штрихкоды.Владелец
И ЗапросПрайс.ХарактеристикаНоменклатуры = Штрихкоды.ХарактеристикаНоменклатурыШтрихКода
}
//СОЕДИНЕНИЯ
{ГДЕ
ИСТИНА КАК СвойстваИКатегории
//СВОЙСТВА
//КАТЕГОРИИ
}
УПОРЯДОЧИТЬ ПО
ЗапросПрайс.ТипЦен,
ЗапросПрайс.ЦеноваяГруппа.Порядок,
ЗапросПрайс.Номенклатура,
ЗапросПрайс.ХарактеристикаНоменклатуры
ИТОГИ МАКСИМУМ(Цена), МИНИМУМ(Валюта), МИНИМУМ(ЕдиницаИзмерения), МИНИМУМ(Остаток),
МИНИМУМ(Стеллаж) , МИНИМУМ(СтеллажПредставление), МИНИМУМ(ШтрихКод),
МИНИМУМ(НетХарактеристик), МИНИМУМ(ЦеноваяГруппа)
//ИТОГИ
ПО
ЗапросПрайс.ТипЦен,
ЗапросПрайс.ЦеноваяГруппа,
ЗапросПрайс.Номенклатура,
ЗапросПрайс.ХарактеристикаНоменклатуры
//ОБЩИЕ_СВОЙСТВА
АВТОУПОРЯДОЧИВАНИЕ
Показать
на постгресе есть какой-то аналог ms sql профайлера?
если есть, то посмотрите, какой запрос выполняет субд и нет ли где-нибудь table scan по большой таблице(ам)?
возможно не хвататет какого-то индекса или нужно обновить/перестроить существующие индексы и статистику
если есть, то посмотрите, какой запрос выполняет субд и нет ли где-нибудь table scan по большой таблице(ам)?
возможно не хвататет какого-то индекса или нужно обновить/перестроить существующие индексы и статистику
попробуйте что-то типа этого:
ВЫБРАТЬ
ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен КАК ТипЦен,
МАКСИМУМ(ДиапазоныЦенДляНаценкиСрезПоследних.Период) КАК Период
ПОМЕСТИТЬ МаксДиапазоныЦен
ИЗ
РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата, {(ТипЦен).* КАК ТипЦен}) КАК ДиапазоныЦенДляНаценкиСрезПоследних
СГРУППИРОВАТЬ ПО
ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДиапазоныЦен.ТипЦен КАК ТипЦен,
ДиапазоныЦен.ВерхняяГраница КАК ВерхняяГраница,
ДиапазоныЦен.Цена КАК Цена,
ДиапазоныЦен.Валюта КАК Валюта,
ДиапазоныЦен.Период КАК Период
ПОМЕСТИТЬ ШкалыДиапазонов
ИЗ
РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата, {(ТипЦен).* КАК ТипЦен}) КАК ДиапазоныЦен
ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксДиапазоныЦен КАК МаксДиапазоныЦен
ПО ДиапазоныЦен.ТипЦен = МаксДиапазоныЦен.ТипЦен
И ДиапазоныЦен.Период = МаксДиапазоныЦен.Период
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СправочникЦен.Ссылка КАК ТипЦен,
СправочникЦен.ВалютаЦены КАК Валюта,
СправочникЦен.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
СправочникЦен.СпособРасчетаЦены КАК СпособРасчетаЦены
ПОМЕСТИТЬ СпрТипЦен
ИЗ
Справочник.ТипыЦенНоменклатуры КАК СправочникЦен
{ГДЕ
СправочникЦен.Ссылка.* КАК ТипЦен}
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СпрХарактеристики.Владелец КАК Номенклатура,
СпрХарактеристики.Ссылка КАК ХарактеристикаНоменклатуры
ПОМЕСТИТЬ СписокНоменклатуры
ИЗ
Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
{ГДЕ
СпрХарактеристики.Владелец.* КАК Номенклатура,
СпрХарактеристики.Владелец.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
СпрНоменклатура.Ссылка,
ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
{ГДЕ
СпрНоменклатура.Ссылка.* КАК Номенклатура,
СпрНоменклатура.Ссылка.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
МестаХраненияНоменклатуры.Номенклатура КАК НоменклатураХранения,
МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения
ПОМЕСТИТЬ МинПриоритет
ИЗ
РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
МестаХраненияНоменклатуры.Номенклатура КАК Номенклатура,
МИНИМУМ(МестаХраненияНоменклатуры.Приоритет) КАК Приоритет
ИЗ
РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
СГРУППИРОВАТЬ ПО
МестаХраненияНоменклатуры.Номенклатура) КАК МинПриоритет
ПО МестаХраненияНоменклатуры.Номенклатура = МинПриоритет.Номенклатура
И МестаХраненияНоменклатуры.Приоритет = МинПриоритет.Приоритет
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
МестаХраненияНоменклатуры.Номенклатура КАК НоменклатураХранения,
МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения
ПОМЕСТИТЬ МестаХранения
ИЗ
РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры,
МинПриоритет КАК МинПриоритет
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Ост.Номенклатура.Ссылка КАК Номенклатура,
Ост.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
Ост.КоличествоОстаток КАК Остаток
ПОМЕСТИТЬ НесвернутыеОстатки
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, {(Склад).* КАК Склад, (Склад.ВидСклада).* КАК ВидСклада, (Номенклатура).* КАК Номенклатура, (Номенклатура.ЦеноваяГруппа).* КАК ЦеноваяГруппа}) КАК Ост
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НТТ.Номенклатура.Ссылка,
НТТ.ХарактеристикаНоменклатуры,
НТТ.КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыВНТТ.Остатки(&Дата, {(Склад).* КАК Склад, (Склад.ВидСклада).* КАК ВидСклада, (Номенклатура).* КАК Номенклатура, (Номенклатура.ЦеноваяГруппа).* КАК ЦеноваяГруппа}) КАК НТТ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Розница.Номенклатура.Ссылка,
Розница.ХарактеристикаНоменклатуры,
Розница.КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыВРознице.Остатки(&Дата, {(Склад).* КАК Склад, (Склад.ВидСклада).* КАК ВидСклада, (Номенклатура).* КАК Номенклатура, (Номенклатура.ЦеноваяГруппа).* КАК ЦеноваяГруппа}) КАК Розница
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
НесвернутыеОстатки.Номенклатура,
НесвернутыеОстатки.ХарактеристикаНоменклатуры,
СУММА(НесвернутыеОстатки.Остаток) КАК Остаток
ПОМЕСТИТЬ Остатки
ИЗ
НесвернутыеОстатки КАК НесвернутыеОстатки
СГРУППИРОВАТЬ ПО
НесвернутыеОстатки.Номенклатура,
НесвернутыеОстатки.ХарактеристикаНоменклатуры
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СписокНоменклатуры.Номенклатура КАК Номенклатура,
СписокНоменклатуры.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
СписокНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
СпрТипЦен.ТипЦен КАК ТипЦен,
ЦеныНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена,
ВЫБОР
КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL
ТОГДА СпрТипЦен.ПроцентСкидкиНаценки
ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.ПроцентСкидкиНаценки, ЦеныНоменклатуры.ТипЦен.ПроцентСкидкиНаценки)
КОНЕЦ КАК ПроцентСкидкиНаценки,
ВЫБОР
КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL
ТОГДА СпрТипЦен.СпособРасчетаЦены
ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.СпособРасчетаЦены, ЦеныНоменклатуры.ТипЦен.СпособРасчетаЦены)
КОНЕЦ КАК СпособРасчетаЦены,
ЕСТЬNULL(ШкалыДиапазонов.Цена, 0) КАК ЦенаДиапазона,
ЕСТЬNULL(ШкалыДиапазонов.ВерхняяГраница, 0) КАК ВерхняяГраница,
ЕСТЬNULL(ЦеныНоменклатуры.Валюта, СпрТипЦен.Валюта) КАК Валюта,
ШкалыДиапазонов.Валюта КАК ВалютаДиапазона
ПОМЕСТИТЬ ЦеныБазовые
ИЗ
СписокНоменклатуры КАК СписокНоменклатуры
ВНУТРЕННЕЕ СОЕДИНЕНИЕ СпрТипЦен КАК СпрТипЦен
ПО (НЕ СписокНоменклатуры.Номенклатура.ЭтоГруппа)
И (НЕ СписокНоменклатуры.Номенклатура.Набор)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {(Номенклатура).* КАК Номенклатура, (Номенклатура.ЦеноваяГруппа).* КАК ЦеноваяГруппа, (ТипЦен).* КАК ТипЦен}) КАК ЦеныНоменклатуры
ПО (ЦеныНоменклатуры.Номенклатура = СписокНоменклатуры.Номенклатура)
И (ЦеныНоменклатуры.ТипЦен = СпрТипЦен.ТипЦен)
И (ЦеныНоменклатуры.ХарактеристикаНоменклатуры = СписокНоменклатуры.ХарактеристикаНоменклатуры)
ЛЕВОЕ СОЕДИНЕНИЕ ШкалыДиапазонов КАК ШкалыДиапазонов
ПО (ШкалыДиапазонов.ТипЦен = СпрТипЦен.ТипЦен)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЦеныБазовые.ТипЦен КАК ТипЦен,
ВЫБОР
КОГДА &ВВалютеОтчета = ЛОЖЬ
ТОГДА ВЫБОР
КОГДА ЦеныБазовые.ТипЦен.Рассчитывается
ТОГДА ЦеныБазовые.ТипЦен.ВалютаЦены
ИНАЧЕ МИНИМУМ(ВЫБОР
КОГДА ЦеныБазовые.ТипЦен.Рассчитывается
ТОГДА ВЫБОР
КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL
ТОГДА ЦеныБазовые.Валюта
ИНАЧЕ ВЫБОР
КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка
ТОГДА ЦеныРасчетные.Валюта
ИНАЧЕ ЦеныБазовые.ВалютаДиапазона
КОНЕЦ
КОНЕЦ
ИНАЧЕ ЦеныБазовые.Валюта
КОНЕЦ)
КОНЕЦ
ИНАЧЕ &ВалютаОтчета
КОНЕЦ КАК ВалютаПрайса,
ЦеныБазовые.ЦеноваяГруппа КАК ЦеноваяГруппа,
ЦеныБазовые.Номенклатура КАК Номенклатура,
ЦеныБазовые.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
МИНИМУМ(ВЫБОР
КОГДА ЦеныБазовые.ТипЦен.Рассчитывается
ТОГДА ЦеныРасчетные.ЕдиницаИзмерения
ИНАЧЕ ЦеныБазовые.ЕдиницаИзмерения
КОНЕЦ) КАК ЕдиницаИзмерения,
МИНИМУМ(ВЫБОР
КОГДА ЦеныБазовые.ТипЦен.Рассчитывается
ТОГДА ВЫБОР
КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL
ТОГДА ЦеныБазовые.Валюта
ИНАЧЕ ВЫБОР
КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка
ТОГДА ЦеныРасчетные.Валюта
ИНАЧЕ ЦеныБазовые.ВалютаДиапазона
КОНЕЦ
КОНЕЦ
ИНАЧЕ ЦеныБазовые.Валюта
КОНЕЦ) КАК Валюта,
МИНИМУМ(ВЫБОР
КОГДА ЦеныБазовые.ТипЦен.Рассчитывается
ТОГДА ВЫБОР
КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка
ТОГДА ВЫБОР
КОГДА ЦеныРасчетные.Цена ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ ЦеныРасчетные.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценки / 100)
КОНЕЦ
ИНАЧЕ ЦеныБазовые.ЦенаДиапазона
КОНЕЦ
ИНАЧЕ ЦеныБазовые.Цена
КОНЕЦ) КАК Цена
ПОМЕСТИТЬ ЗапросПрайс
ИЗ
ЦеныБазовые КАК ЦеныБазовые
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {(Номенклатура).* КАК Номенклатура, (Номенклатура.ЦеноваяГруппа).* КАК ЦеноваяГруппа}) КАК ЦеныРасчетные
ПО ЦеныБазовые.Номенклатура = ЦеныРасчетные.Номенклатура
И ЦеныБазовые.ХарактеристикаНоменклатуры = ЦеныРасчетные.ХарактеристикаНоменклатуры
И ЦеныБазовые.ТипЦен.БазовыйТипЦен = ЦеныРасчетные.ТипЦен
ГДЕ
(НЕ ЦеныБазовые.ТипЦен.Рассчитывается
ИЛИ ЦеныБазовые.СпособРасчетаЦены <> &СпособДиапазон
ИЛИ ЦеныБазовые.СпособРасчетаЦены = &СпособДиапазон
И (ЦеныРасчетные.Цена МЕЖДУ 0.000001 И ЦеныБазовые.ВерхняяГраница - 0.000001))
СГРУППИРОВАТЬ ПО
ЦеныБазовые.ТипЦен,
ЦеныБазовые.ЦеноваяГруппа,
ЦеныБазовые.Номенклатура,
ЦеныБазовые.ХарактеристикаНоменклатуры,
ЦеныБазовые.ТипЦен.Рассчитывается,
ЦеныБазовые.ТипЦен.ВалютаЦены
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
НЕ ЕСТЬNULL(ЗапросПрайс.Номенклатура.ВестиУчетПоХарактеристикам, ИСТИНА) КАК НетХарактеристик,
ЗапросПрайс.ТипЦен.ПорядокОкругления КАК ПорядокОкругления,
ЗапросПрайс.ТипЦен.ОкруглятьВБольшуюСторону КАК ОкруглятьВБольшуюСторону,
ЗапросПрайс.ТипЦен КАК ТипЦен,
ЗапросПрайс.ТипЦен.Представление КАК ТипЦенПредставление,
ЗапросПрайс.ЦеноваяГруппа КАК ЦеноваяГруппа,
ЗапросПрайс.ЦеноваяГруппа.Представление КАК ЦеноваяГруппаПредставление,
ЗапросПрайс.Номенклатура КАК Номенклатура,
ЗапросПрайс.Номенклатура.Представление КАК НоменклатураПредставление,
ЗапросПрайс.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
ЗапросПрайс.ХарактеристикаНоменклатуры.Представление КАК ХарактеристикаНоменклатурыПредставление,
Остатки.Остаток КАК Остаток,
МестаХранения.МестоХранения КАК Стеллаж,
МестаХранения.МестоХранения.Представление КАК СтеллажПредставление,
Штрихкоды.Штрихкод КАК ШтрихКод,
ВЫБОР
КОГДА ЗапросПрайс.Цена <> 0
ТОГДА ЗапросПрайс.ЕдиницаИзмерения.Представление
ИНАЧЕ &ПустаяСтрока
КОНЕЦ КАК ЕдиницаИзмерения,
ВЫБОР
КОГДА ЗапросПрайс.Цена <> 0
ТОГДА ЗапросПрайс.ВалютаПрайса.Представление
ИНАЧЕ &ПустаяСтрока
КОНЕЦ КАК Валюта,
ВЫБОР
КОГДА ЗапросПрайс.Валюта = ЗапросПрайс.ВалютаПрайса
ИЛИ ЗапросПрайс.Цена = 0
ТОГДА ЗапросПрайс.Цена
ИНАЧЕ ЗапросПрайс.Цена * ВЫБОР
КОГДА КурсыВалютСрезПоследних.Курс = 0
ТОГДА 1
ИНАЧЕ КурсыВалютСрезПоследних.Курс
КОНЕЦ * ВЫБОР
КОГДА КурсыВалютСрезПоследнихОтчет.Кратность = 0
ТОГДА 1
ИНАЧЕ КурсыВалютСрезПоследнихОтчет.Кратность
КОНЕЦ / ВЫБОР
КОГДА КурсыВалютСрезПоследнихОтчет.Курс = 0
ТОГДА 1
ИНАЧЕ КурсыВалютСрезПоследнихОтчет.Курс
КОНЕЦ / ВЫБОР
КОГДА КурсыВалютСрезПоследних.Кратность = 0
ТОГДА 1
ИНАЧЕ КурсыВалютСрезПоследних.Кратность
КОНЕЦ
КОНЕЦ КАК Цена,
ЗапросПрайс.Номенклатура.Код КАК ДатаВвода
ИЗ
ЗапросПрайс КАК ЗапросПрайс
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних
ПО ЗапросПрайс.Валюта = КурсыВалютСрезПоследних.Валюта
И (ЗапросПрайс.Цена <> 0)
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследнихОтчет
ПО ЗапросПрайс.ВалютаПрайса = КурсыВалютСрезПоследнихОтчет.Валюта
{ЛЕВОЕ СОЕДИНЕНИЕ МестаХранения КАК МестаХранения
ПО ЗапросПрайс.Номенклатура = МестаХранения.НоменклатураХранения}
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
ПО ЗапросПрайс.Номенклатура = Штрихкоды.Владелец
И ЗапросПрайс.ХарактеристикаНоменклатуры = Штрихкоды.ХарактеристикаНоменклатуры,
Остатки КАК Остатки
{ГДЕ
(ИСТИНА) КАК СвойстваИКатегории}
УПОРЯДОЧИТЬ ПО
ЗапросПрайс.ТипЦен,
ЗапросПрайс.ЦеноваяГруппа.Порядок,
ЗапросПрайс.Номенклатура,
ЗапросПрайс.ХарактеристикаНоменклатуры
ИТОГИ
МИНИМУМ(НетХарактеристик),
МИНИМУМ(ЦеноваяГруппа),
МИНИМУМ(Остаток),
МИНИМУМ(Стеллаж),
МИНИМУМ(СтеллажПредставление),
МИНИМУМ(ШтрихКод),
МИНИМУМ(ЕдиницаИзмерения),
МИНИМУМ(Валюта),
МАКСИМУМ(Цена)
ПО
ТипЦен,
ЦеноваяГруппа,
Номенклатура,
ХарактеристикаНоменклатуры
АВТОУПОРЯДОЧИВАНИЕ
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот