0
Lancer666
14.11.13
✎
13:00
|
Здравствуйте, есть следующая задача. Собирается план номенклатуры по периодам, дальше в зависимости от имеющихся остатков этой номенклатуры план должен гаситься по месяцам, например:
Номенклатура: Лопата
План: Январь:10, Февраль:15, Март:30, Апрель:15
Остаток номенклатуры:35
В этом случае план должен измениться следующим образом:
Январь:0, Февраль:0, Март:20, Апрель:15
То есть по тем первым месяцам по которым хватает текущим остатков на складе должно значение стать 0 или недостающее количество.
Вопрос можно ли отработать такой отчет на СКД, избегая программной обработки данных после формирования отчета? Заранее спасибо за помощь.
|
|
2
Lancer666
14.11.13
✎
15:55
|
(1) Спасибо большое, по аналогии решил вопрос. Если кому то понадобится, код следующий:
ВЫБРАТЬ
ПланыПотребностейОбороты.Номенклатура КАК Номенклатура,
МАКСИМУМ(ПланыПотребностейОбороты.КоличествоОборот) КАК КоличествоПотребностьПлан,
МАКСИМУМ(ПланыПотребностейОбороты.СуммаОборот) КАК СуммаОборот,
СУММА(ЕСТЬNULL(ПланыПотребностейОбороты1.КоличествоОборот, 0)) КАК КоличествоПотребностьДоПериода,
ПланыПотребностейОбороты.Период КАК Период
ПОМЕСТИТЬ ВтПотребностьОбороты
ИЗ
РегистрНакопления.ПланыПотребностей.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПланыПотребностейОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПланыПотребностей.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПланыПотребностейОбороты1
ПО ПланыПотребностейОбороты.Номенклатура = ПланыПотребностейОбороты1.Номенклатура
И ПланыПотребностейОбороты.Период > ПланыПотребностейОбороты1.Период
СГРУППИРОВАТЬ ПО
ПланыПотребностейОбороты.Период,
ПланыПотребностейОбороты.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВтПотребностьОбороты.Номенклатура КАК Номенклатура,
ВтПотребностьОбороты.КоличествоПотребностьПлан,
ВтПотребностьОбороты.СуммаОборот,
ВтПотребностьОбороты.КоличествоПотребностьДоПериода,
ВтПотребностьОбороты.Период КАК Период,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокНаСкладе,
ВЫБОР
КОГДА ВтПотребностьОбороты.КоличествоПотребностьДоПериода + ВтПотребностьОбороты.КоличествоПотребностьПлан <= ТоварыНаСкладахОстатки.КоличествоОстаток
ТОГДА 0
ИНАЧЕ ВЫБОР
КОГДА ВтПотребностьОбороты.КоличествоПотребностьДоПериода < ТоварыНаСкладахОстатки.КоличествоОстаток
ТОГДА ВтПотребностьОбороты.КоличествоПотребностьПлан - (ТоварыНаСкладахОстатки.КоличествоОстаток - ВтПотребностьОбороты.КоличествоПотребностьДоПериода)
ИНАЧЕ ВтПотребностьОбороты.КоличествоПотребностьПлан
КОНЕЦ
КОНЕЦ КАК КоличествоПотребностьФакт
ИЗ
ВтПотребностьОбороты КАК ВтПотребностьОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ПО ВтПотребностьОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
УПОРЯДОЧИТЬ ПО
Номенклатура,
Период
АВТОУПОРЯДОЧИВАНИЕ
|
|