Недостаточно памяти для выполнения запроса
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК Код,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул КАК Артикул,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Производитель КАК Производитель,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель КАК Родитель,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
БазЦена.Цена КАК БазоваяЦена,
ПеремещениеТоваровТовары.Количество КАК КоличествоПеремещения,
ПараметрыНоменклатуры.МинимальноеКратноеКоличество КАК ТОП,
ЗакупЦена.ЗакупочнаяЦена
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.БазовыеЦены)) КАК БазЦена
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = БазЦена.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПеремещениеТоваровТовары.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатуры КАК ПараметрыНоменклатуры
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПараметрыНоменклатуры.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
ПоступлениеТоваровУслугТовары.Цена КАК ЗакупочнаяЦена,
ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары) КАК ЗакупЦена
[1C-CODE] ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЗакупЦена.Номенклатура
ПоказатьЧто делаю не так и как правильно написать запрос?
Прикрепленные файлы:
По теме из базы знаний
- Зачем запросу план и кто его выполняет?
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Заметки эксперта. Расследование длительного выполнения отчета “Движение ТМЦ и затрат в производстве” (1С:ERP 2)
- MS SQL Server: изучаем планы запросов
- Регистрация объектов в плане обмена по нескольким видам метаданным (УФ)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Вы же понимаете, что выгружаете в память все строки всех документов поступление товаров и скорее всего перемещений.
Попробуйте использовать временные таблицы и уничтожать их чтобы освобождать память
Попробуйте использовать временные таблицы и уничтожать их чтобы освобождать память
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТоварыНаСкладахОстатки.Склад КАК Склад,
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстатки.КоличествоОстаток
ПОМЕСТИТЬ ВтОстатки
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ИНДЕКСИРОВАТЬ ПО
Склад,
Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
ВтОстатки.Склад,
ВтОстатки.Номенклатура,
ЕСТЬNULL(МестаХраненияНоменклатуры.Приоритет, 0) КАК Приоритет,
ЕСТЬNULL(МестаХраненияНоменклатуры.МестоХранения, ЗНАЧЕНИЕ(Справочник.МестаХранения.ПустаяСсылка)) КАК МестоХранения,
ВтОстатки.КоличествоОстаток КАК Остаток,
ВЫБОР
КОГДА ЕСТЬNULL(МестаХраненияНоменклатуры.МестоХранения, ЗНАЧЕНИЕ(Справочник.МестаХранения.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.МестаХранения.ПустаяСсылка)
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК ЕстьМестоХранения
ПОМЕСТИТЬ ВтМХ
ИЗ
ВтОстатки КАК ВтОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
ПО ВтОстатки.Склад = МестаХраненияНоменклатуры.Склад
И ВтОстатки.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВтОстатки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВтМХ.Склад,
ВтМХ.Номенклатура,
ВтМХ.Приоритет,
ВтМХ.МестоХранения,
ВтМХ.Остаток,
ВтМХ.ЕстьМестоХранения,
МАКСИМУМ(Штрихкоды.Штрихкод) КАК Штрихкод
ПОМЕСТИТЬ ВтШК
ИЗ
ВтМХ КАК ВтМХ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
ПО ВтМХ.Номенклатура = Штрихкоды.Владелец
СГРУППИРОВАТЬ ПО
ВтМХ.Склад,
ВтМХ.Номенклатура,
ВтМХ.Приоритет,
ВтМХ.МестоХранения,
ВтМХ.Остаток,
ВтМХ.ЕстьМестоХранения
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВтМХ
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВтШК.Склад,
ВтШК.Номенклатура,
ВтШК.Приоритет,
ВтШК.МестоХранения,
ВтШК.Остаток,
ВтШК.ЕстьМестоХранения,
ВтШК.Штрихкод,
МАКСИМУМ(Штрихкоды.Штрихкод) КАК Штрихкод1
ПОМЕСТИТЬ ВтШК1
ИЗ
ВтШК КАК ВтШК
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
ПО ВтШК.Номенклатура = Штрихкоды.Владелец
И (НЕ Штрихкоды.Штрихкод В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
ВтШК.Штрихкод
ИЗ
ВтШК КАК ВтШК))
СГРУППИРОВАТЬ ПО
ВтШК.Склад,
ВтШК.Номенклатура,
ВтШК.Приоритет,
ВтШК.МестоХранения,
ВтШК.Остаток,
ВтШК.ЕстьМестоХранения,
ВтШК.Штрихкод
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВтШК
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВтШК1.Склад,
ВтШК1.Номенклатура,
ВтШК1.Приоритет,
ВтШК1.МестоХранения,
ВтШК1.Остаток КАК Количество,
ВтШК1.ЕстьМестоХранения,
ВтШК1.Штрихкод,
ВтШК1.Штрихкод1,
Штрихкоды.Штрихкод КАК Штрихкод2,
"Остаток" КАК Остаток
ИЗ
ВтШК1 КАК ВтШК1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
ПО ВтШК1.Номенклатура = Штрихкоды.Владелец
И (НЕ Штрихкоды.Штрихкод В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
ВтШК1.Штрихкод
ИЗ
ВтШК1 КАК ВтШК1))
И (НЕ Штрихкоды.Штрихкод В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
ВтШК1.Штрихкод1
ИЗ
ВтШК1 КАК ВтШК1))
Показать
(9) Уничтожать временные таблицы чтобы не тратить память это сильное заявление. Временные таблицы лежат на диске в базе tempdb mssql и аналогичных в других СУБД.
Проблема автора запроса даже не в кривом запросе,а что, что он делает именно то что написано. Перемножает строки остатков на строки перемещений на строки приходов итд. Результат тупо в память не входит. Причем скуль это все таки вычисляет и свопит на диск, но 1С всосать уже не может
Проблема автора запроса даже не в кривом запросе,а что, что он делает именно то что написано. Перемножает строки остатков на строки перемещений на строки приходов итд. Результат тупо в память не входит. Причем скуль это все таки вычисляет и свопит на диск, но 1С всосать уже не может
(12)Например ты соединяешься с документом Поступления.
Тебе действительно нужны все поступления за всё время работы базы? Врядли.
Скорее всего нужны документы за день. Тогда нужно сначала во временную таблицу поместить данные поступлений, отобрав их по условию "ГДЕ ..."
Затем полученный результат нужно сгруппировать по Номенклатуре, раз ты по ней соединяешься. Тогда эта таблица на каждую номенклатуру будет содержать максимум одну строку. Потом можешь соединять.
Так нужно со всеми таблицами сделать, которые присоединяешь справа к основной. Если там могут быть дубли - сначала избавляемся от дублей.
Кстати "ВЫБРАТЬ РАЗЛИЧНЫЕ" не особо помогает, нужно именно группировать по Номенклатуре, а остальные поля получать как СУММА, СРЕДНЕЕ, МАКСИМУМ итд.
После этих действий запрос заработает. Хотя по-прежнему будет образцом "как не надо" но уже с точки зрения скорости выполнения.
Тебе действительно нужны все поступления за всё время работы базы? Врядли.
Скорее всего нужны документы за день. Тогда нужно сначала во временную таблицу поместить данные поступлений, отобрав их по условию "ГДЕ ..."
Затем полученный результат нужно сгруппировать по Номенклатуре, раз ты по ней соединяешься. Тогда эта таблица на каждую номенклатуру будет содержать максимум одну строку. Потом можешь соединять.
Так нужно со всеми таблицами сделать, которые присоединяешь справа к основной. Если там могут быть дубли - сначала избавляемся от дублей.
Кстати "ВЫБРАТЬ РАЗЛИЧНЫЕ" не особо помогает, нужно именно группировать по Номенклатуре, а остальные поля получать как СУММА, СРЕДНЕЕ, МАКСИМУМ итд.
После этих действий запрос заработает. Хотя по-прежнему будет образцом "как не надо" но уже с точки зрения скорости выполнения.
(13) Смысла их освобождать почти никогда нет. Запрос сам по окончании выполнения убъет все времянки. Если МВТ не определен. Если определен то по факту обнуления МВТ, который редко живёт дольше серверного вызова.
Уничтожение ВТ носит по сути информационный характер, чтобы дать следующему разработчику понять, что эти данные дальше не используются.
Уничтожение ВТ носит по сути информационный характер, чтобы дать следующему разработчику понять, что эти данные дальше не используются.
(1) Масса ошибок. Просто классический пример как не надо. Я его возьму стажерам показывать.
Почему он именно не работает? Потому что левое соединение может увеличить число строк в результате. А много соединений могут добавить строк на много порядков больше чем хотелось
Почему он именно не работает? Потому что левое соединение может увеличить число строк в результате. А много соединений могут добавить строк на много порядков больше чем хотелось
(17)Из РН "ТоварыНаСкладахОстаткиИОбороты" нужно получить начальный и конечный остаток, приход и расход и другие данные по каждой номенклатуре в базе.
Из РС "ПараметрыНоменклатуры"- нужно получить кратность сколько можно заказать.
Документ Перемещение используется здесь:
Из временной таблицы "БазЦена" получаю определенную цену номенклатуры.
Из временной таблицы "ЗакупЦена" получаю закупочную цену номенклатуры.
Но каждой номенклатуре нужно брать только одну базовую и одну закупочную цену каждый номенклатуры.Скорее всего лучше брать последнюю цену. Закупочную цену не беру из РС "ЦеныНоменклатуры" , потому что там нет закупочной цены.
в итоге нужно брать полную информацию по каждой номенклатуре, сколько весит, сколько пришло, ушло, осталось, цены и т.д.
Из РС "ПараметрыНоменклатуры"- нужно получить кратность сколько можно заказать.
Документ Перемещение используется здесь:
ВЫБОР
КОГДА ПеремещениеТоваровТовары.Количество <> 0
ТОГДА (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
КОНЕЦ
Из временной таблицы "БазЦена" получаю определенную цену номенклатуры.
Из временной таблицы "ЗакупЦена" получаю закупочную цену номенклатуры.
Но каждой номенклатуре нужно брать только одну базовую и одну закупочную цену каждый номенклатуры.Скорее всего лучше брать последнюю цену. Закупочную цену не беру из РС "ЦеныНоменклатуры" , потому что там нет закупочной цены.
в итоге нужно брать полную информацию по каждой номенклатуре, сколько весит, сколько пришло, ушло, осталось, цены и т.д.
(25) сделайте, чтобы остаток и цена показывались в момент выбора - ускорение будет огромным...
Если же есть желание смотреть именно все и сразу - начинать выбор нужно НЕ с регистров а со справочника Номеклатура и уже Номенклатуру искать в регистрах, а не пытаться там найти не знамо что...
Если же есть желание смотреть именно все и сразу - начинать выбор нужно НЕ с регистров а со справочника Номеклатура и уже Номенклатуру искать в регистрах, а не пытаться там найти не знамо что...
(32)понимаю., что ошибок там много, но этот запрос корректно выводил данные и не так уж медленно
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК Код,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул КАК Артикул,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Производитель КАК Производитель,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель КАК Родитель,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Объем КАК Объем,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Вес КАК Вес,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Паллетизация КАК Паллетизация,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Набор,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК Фасовка,
БазЦена.Цена КАК БазоваяЦена,
ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток <> 0
ТОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
КОНЕЦ КАК МестНачальныйОстаток,
ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <> 0
ТОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
КОНЕЦ КАК МестКонечныйОстаток,
ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход <> 0
ТОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
КОНЕЦ КАК МестПриход,
ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход <> 0
ТОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
КОНЕЦ КАК МестРасход,
ВЫБОР
КОГДА ПеремещениеТоваровТовары.Количество <> 0
ТОГДА (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
КОНЕЦ КАК МестПеремещения,
ПеремещениеТоваровТовары.Количество КАК КоличествоПеремещения,
ВЫБОР
КОГДА ПараметрыНоменклатуры.MML = ИСТИНА
ТОГДА "MML"
ИНАЧЕ ""
КОНЕЦ КАК MML,
ВЫБОР
КОГДА ПараметрыНоменклатуры.Вывод = ИСТИНА
ТОГДА "Вывод"
ИНАЧЕ ""
КОНЕЦ КАК Вывод,
ПараметрыНоменклатуры.МинимальноеКратноеКоличество КАК ТОП
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , , ) КАК ТоварыНаСкладахОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.БазовыеЦены)) КАК БазЦена
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = БазЦена.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПеремещениеТоваровТовары.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатуры КАК ПараметрыНоменклатуры
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПараметрыНоменклатуры.Номенклатура
Показать
(33)
тот что тормозит
тот что, по вашим словам, работает и не так уж медленно
Найдите ключевое отличие и сделайте вывод
Если вы не сможете анализировать код и делать выводы, то еще не поздно подать заявку в Дом-2
тот что тормозит
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ),
КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
тот что, по вашим словам, работает и не так уж медленно
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ),
КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , , ) КАК ТоварыНаСкладахОстаткиИОбороты
Найдите ключевое отличие и сделайте вывод
Если вы не сможете анализировать код и делать выводы, то еще не поздно подать заявку в Дом-2
это автор создает темы уже 3 месяца и пока что не обучаем,
я буду вести наблюдение и если замечу, что базовый прогресс есть, то вмешаюсь с советами.
пока что можно читать авторские темы только с целью исследования на тему "куда могут привести заблуждения и упрямство если нет базовых знаний"
я буду вести наблюдение и если замечу, что базовый прогресс есть, то вмешаюсь с советами.
пока что можно читать авторские темы только с целью исследования на тему "куда могут привести заблуждения и упрямство если нет базовых знаний"
(42)полный код
отчет на СКД делаю
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК Код,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул КАК Артикул,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Производитель КАК Производитель,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель КАК Родитель,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
БазЦена.Цена КАК БазоваяЦена,
ПеремещениеТоваровТовары.Количество КАК КоличествоПеремещения,
ПараметрыНоменклатуры.МинимальноеКратноеКоличество КАК ТОП,
ЗакупЦена.ЗакупочнаяЦена
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.БазовыеЦены)) КАК БазЦена
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = БазЦена.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПеремещениеТоваровТовары.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатуры КАК ПараметрыНоменклатуры
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПараметрыНоменклатуры.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
ПоступлениеТоваровУслугТовары.Цена КАК ЗакупочнаяЦена,
ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары) КАК ЗакупЦена
[1C-CODE] ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЗакупЦена.Номенклатура
Показатьотчет на СКД делаю
(48)сделал так и не выдает ошибку.Запрос корректный?)
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход
ПОМЕСТИТЬ Таб1
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ТоварыНаСкладахОстаткиИОбороты.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Таб1.Номенклатура,
СУММА(ПеремещениеТоваровТовары.Количество) КАК Количество,
СУММА(Таб1.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
СУММА(Таб1.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
СУММА(Таб1.КоличествоПриход) КАК КоличествоПриход,
СУММА(Таб1.КоличествоРасход) КАК КоличествоРасход
ПОМЕСТИТЬ Таб2
ИЗ
Таб1 КАК Таб1
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
ПО Таб1.Номенклатура = ПеремещениеТоваровТовары.Номенклатура
СГРУППИРОВАТЬ ПО
Таб1.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Таб2.Номенклатура,
МИНИМУМ(ПоступлениеТоваровУслугТовары.Цена) КАК Цена,
СУММА(Таб2.Количество) КАК Количество,
СУММА(Таб2.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
СУММА(Таб2.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
СУММА(Таб2.КоличествоПриход) КАК КоличествоПриход,
СУММА(Таб2.КоличествоРасход) КАК КоличествоРасход
ПОМЕСТИТЬ Таб3
ИЗ
Таб2 КАК Таб2
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ПО Таб2.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура
СГРУППИРОВАТЬ ПО
Таб2.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Таб3.Номенклатура,
МИНИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК БазоваяЦена,
МИНИМУМ(Таб3.Цена) КАК Цена,
СУММА(Таб3.Количество) КАК Количество,
СУММА(Таб3.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
СУММА(Таб3.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
СУММА(Таб3.КоличествоПриход) КАК КоличествоПриход,
СУММА(Таб3.КоличествоРасход) КАК КоличествоРасход
ПОМЕСТИТЬ Таб4
ИЗ
Таб3 КАК Таб3
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО Таб3.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
ЦеныНоменклатурыСрезПоследних.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.БазовыеЦены)
СГРУППИРОВАТЬ ПО
Таб3.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Таб4.Номенклатура,
МАКСИМУМ(ПараметрыНоменклатуры.МинимальноеКратноеКоличество) КАК МинимальноеКратноеКоличество,
МИНИМУМ(Таб4.БазоваяЦена) КАК БазоваяЦена,
МИНИМУМ(Таб4.Цена) КАК Цена,
СУММА(Таб4.Количество) КАК Количество,
СУММА(Таб4.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
СУММА(Таб4.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
СУММА(Таб4.КоличествоПриход) КАК КоличествоПриход,
СУММА(Таб4.КоличествоРасход) КАК КоличествоРасход
ИЗ
Таб4 КАК Таб4
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатуры КАК ПараметрыНоменклатуры
ПО Таб4.Номенклатура = ПараметрыНоменклатуры.Номенклатура
СГРУППИРОВАТЬ ПО
Таб4.Номенклатура
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот