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

СГРУППИРОВАТЬ ПО
    ПланыПотребностейОбороты.Период,
    ПланыПотребностейОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтПотребностьОбороты.Номенклатура КАК Номенклатура,
    ВтПотребностьОбороты.КоличествоПотребностьПлан,
    ВтПотребностьОбороты.СуммаОборот,
    ВтПотребностьОбороты.КоличествоПотребностьДоПериода,
    ВтПотребностьОбороты.Период КАК Период,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокНаСкладе,
    ВЫБОР
        КОГДА ВтПотребностьОбороты.КоличествоПотребностьДоПериода + ВтПотребностьОбороты.КоличествоПотребностьПлан <= ТоварыНаСкладахОстатки.КоличествоОстаток
            ТОГДА 0
        ИНАЧЕ ВЫБОР
                КОГДА ВтПотребностьОбороты.КоличествоПотребностьДоПериода < ТоварыНаСкладахОстатки.КоличествоОстаток
                    ТОГДА ВтПотребностьОбороты.КоличествоПотребностьПлан - (ТоварыНаСкладахОстатки.КоличествоОстаток - ВтПотребностьОбороты.КоличествоПотребностьДоПериода)
                ИНАЧЕ ВтПотребностьОбороты.КоличествоПотребностьПлан
            КОНЕЦ
    КОНЕЦ КАК КоличествоПотребностьФакт
ИЗ
    ВтПотребностьОбороты КАК ВтПотребностьОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО ВтПотребностьОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура

УПОРЯДОЧИТЬ ПО
    Номенклатура,
    Период
АВТОУПОРЯДОЧИВАНИЕ