Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:32

1С 8.3. Как оптимизировать данный текст запроса?

Автор gulnyr, 29 июн 2023, 11:41

0 Пользователей и 1 гость просматривают эту тему.

gulnyr

Текст запроса:

Выбрать Первые 100
ЗаказыПокупателейОстатки.Заказ,
МАКСИМУМ(ОстатокТоваровКомпании.Номенклатура) КАК НоменклатураОстИмя,
МАКСИМУМ(ОстатокТоваровКомпании.КоличествоОстаток),
МАКСИМУМ(ЗаказыПокупателейОстатки.Номенклатура) КАК НоменклатураЗаказИмя,
МАКСИМУМ(ЗаказыПокупателейОстатки.ЗаказаноОстаток) КАК ЗаказаноОстаток
ИЗ РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК ОстатокТоваровКомпании 
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
ПО ОстатокТоваровКомпании.Номенклатура.Код = ЗаказыПокупателейОстатки.Номенклатура.Код
ГДЕ ЗаказыПокупателейОстатки.ЗаказаноОстаток>ОстатокТоваровКомпании.КоличествоОстаток
СГРУППИРОВАТЬ ПО ЗаказыПокупателейОстатки.Заказ

Левое соединение по ссылке похоже не получится сделать, т.к. у ОстаткиТоваровКомпании нет ссылки.
Просто по номенклатуре соединять тоже не вариант, т.к. могут попадаться номенклатуры с одинаковыми именами. А код у всех разный, но использовать более одной точки для этой цели, насколько я понял, не оптимально.

Как в целом правильно оптимизировать данный код?

Максим75

gulnyr, да блин, уже не один раз Вам писали, по ССЫЛКЕ соединяйте, Вы все равно лепите то по коду, то по наименованию. Соединяйте остатки просто по номенклатуре.
Зачем лепить такое ПО ОстатокТоваровКомпании.Номенклатура.Код = ЗаказыПокупателейОстатки.Номенклатура.Код?
это для системы лишняя работа, за такое бьют по рукам.

И как это у остатков товаров нет ссылки? а что тогда в регистре хранится? товар там хранится, ни что иное.

И причем номенклатура с одинаковыми номерами? если это разные элементы в справочнике, то для системы это разные товары, даже если они называются одинаково. значит в базе насоздавали одних и тех же товаров. выводите код справочника, чтобы различать.

Afinogen


попробуйте вместо условия "ГДЕ" сделать так

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
ПО ОстатокТоваровКомпании.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура
И ОстатокТоваровКомпании.КоличествоОстаток <ЕСТЬNULL(ЗаказыПокупателейОстатки.ЗаказаноОстаток,0)




Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск