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