Всем добрый день!) По задаче требуется реализовать списание товара со складов с учетом приоритета: чем больше на складе остатков товара, тем выше его приоритет. При этом в шапке документа есть реквизит "Склад", на котором, если пользователь его заполнил, запрос должен в первую очередь искать остатки, а потом на остальных. Запрос уже создан, но требуется только исправить или доработать условие для списания в правильном порядке.
Условие
ВЫБОР
КОГДА ТоварыНаСкладахОстатки.Склад = &Склад
ТОГДА -1
ИНАЧЕ 1
КОНЕЦ КАК ПриоритетСкладаПоОстаткам
пока оставила с "иначе 1", но все равно списание происходит не так, как нужно.
Что-то вообще не пойму, как можно было бы списывать остатки путем нахождения количества(( Помогите плиз.. :(
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
| СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
| РасходнаяНакладная.Контрагент КАК Контрагент
|ПОМЕСТИТЬ ВТ_ТоварыРасход
|ИЗ
| Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная
| ПО РасходнаяНакладнаяСписокНоменклатуры.Ссылка = РасходнаяНакладная.Ссылка
|ГДЕ
| РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
| РасходнаяНакладная.Контрагент
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_ТоварыРасход.Номенклатура КАК Номенклатура,
| ВТ_ТоварыРасход.Количество КАК Количество,
| ТоварыНаСкладахОстатки.Склад КАК Склад,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ВЫБОР
| КОГДА ТоварыНаСкладахОстатки.Склад = &Склад
| ТОГДА -1
| ИНАЧЕ 1
| КОНЕЦ КАК ПриоритетСкладаПоОстаткам
|ИЗ
| ВТ_ТоварыРасход КАК ВТ_ТоварыРасход
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ
| ВТ_ТоварыРасход.Номенклатура КАК Номенклатура
| ИЗ
| ВТ_ТоварыРасход КАК ВТ_ТоварыРасход)) КАК ТоварыНаСкладахОстатки
| ПО ВТ_ТоварыРасход.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| ПриоритетСкладаПоОстаткам
|ИТОГИ
| МАКСИМУМ(Количество),
| СУММА(КоличествоОстаток)
|ПО
| Номенклатура";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Показать