Здесь будет записана методика списания
// Здесь будет записана методика списания по-среднему
КонецЕсли;
КонецПроцедуры
Начнем описание методик с FIFO;
Заместо строки "// Здесь будет записана методика списания по FIFO" напишем:
// Здесь будет записана методика списания по FIFO
ТабЗн1=СоздатьОбъект("ТаблицаЗначений");
// временная таблица
ТабЗн2=СоздатьОбъект("ТаблицаЗначений");
// еще одна временная таблица
ТабЗн2.НоваяКолонка("Партия","Документ.ПриходнаяНакладная");
ТабЗн2.НоваяКолонка("КоличествоП","Число",14,2);
ТабЗн2.НоваяКолонка("СуммаП","Число",19,2);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
КолВыб=КолО;
РегОст.УстановитьФильтр(Склад,Товар,Сорт);
РегОст.ВыгрузитьИтоги(ТабЗн1,1,1);
// см. операцию подбора
ТабЗн1.Свернуть("4","5,6");
// а здесь интересно: Структура ТабЗн1 после выгрузки будет аналогична
// структуре регистра. Реквизит "Партия" в регистре стоит на 4-ой
// позиции, значит и колонка "Партия" – 4-ая, Колонки "Количество"
// и "СуммаП" – соответственно 5-ая и 6-ая
ТабЗн1.ВыбратьСтроки();
Пока ТабЗн1.ПолучитьСтроку()=1 Цикл
Прт=ТабЗн1.Партия;
Ост=ТабЗн1.Количество;
Сум=ТабЗн1.СуммаП;
Если Ост>0 Тогда // есть что проверять
ТабЗн2.НоваяСтрока();
ТабЗн2.Партия=Прт;
ТабЗн2.КоличествоП=Ост;
ТабЗн2.СуммаП=Сум;
КонецЕсли;
КонецЦикла;
// Заполняем промежуточную таблицу
ТабЗн1.Очистить();
// Удаляем все записи и колонки из ТабЗн1
ТабЗн2.Сортировать("1+",1);
// Сортируем по документам в порядке возрастания даты (FIFO)
// Более ранние партии вверху
ТабЗн2.ВыбратьСтроки();
Пока ТабЗн2.ПолучитьСтроку()=1 Цикл
Ост=ТабЗн2.КоличествоП;
Сум=ТабЗн2.СуммаП;
Содержание Назад Вперед