HelpF.pro

Реализация алгоритмов «FIFO» и «LIFO»

Для реализации алгоритмов «FIFO» и «LIFO» (FIFO (первый пришел – первый ушел), LIFO (последний пришел – первый ушел)) необходимо добавить на счет учета ТМЦ субконто «Партии». Тогда определяется текущая стоимость товара и текущий остаток первой (последней) партии товара. Их отношение дает нам цену партии товара. Если остаток по партии товара меньше, чем реализуется, тогда выбираем следующую партию товаров и так далее.

Код 1C v 7.x
 	БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто("ЦенныеБумаги",ЦБ,2);
БИ.ИспользоватьСубконто("ПартииЦБ");
БИ.ВыполнитьЗапрос(,ТекущийДокумент(),"58.6");

Если Константа.МетодОпределенияСебестоимости = Перечисление.МетодыОпределенияСебестоимости.ФИФО Тогда
БИ.ВыбратьСубконто(2,,,,,,0);
Иначе
БИ.ВыбратьСубконто(2,,,,,,1);
КонецЕсли;

Кол=Количество;
Пока БИ.ПолучитьСубконто(2)=1 Цикл
Сум=БИ.СКД(1);
Ост=БИ.СКД(3);
Если Ост<=Кол Тогда
// списываем весь остаток по партии
СумСпис=Сум;
КолСпис=Ост;
ИначеЕсли Ост>Кол Тогда
// списываем требуемое количество
ЦенаСпис=Сум/Ост;
КолСпис=Кол;
СумСпис=Окр(КолСпис*ЦенаСпис,2);
Иначе
Продолжить;
КонецЕсли;

Операция.НоваяПроводка();
Операция.Дебет.Счет=Сч91_2;
Операция.Кредит.Счет=Сч58_6;
Операция.Кредит.ЦенныеБумаги=ЦБ;
Операция.Кредит.ПартииЦБ=БИ.Субконто(2);
Операция.Сумма=СумСпис;
Операция.Количество=КолСпис;
Кол=Кол-КолСпис;
Если Кол=0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Если Кол>0 Тогда
Сообщить("Остаток меньше нуля");
НеПроводитьДокумент();
КонецЕсли;

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq7/view/198.html