helpf.pro
Регистрация
 0 
Распечатать

1С 7.x : Реализация алгоритмов «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 Тогда
Сообщить("Остаток меньше нуля");
НеПроводитьДокумент();
КонецЕсли;
Разместил:   Версии: | 7.x |  Дата:   Прочитано: 21119
 0 
Распечатать
Возможно, вас также заинтересует
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Временный расчет регистров 0
Временный расчет регистров требуется, если нужно выбрать итоги или движения на определенную дату. По умолчанию итоги регистров выдаются на Точку актуальности. Формулировка 1С - Метод ВременныйРасчет устанавливает флаг участия регистра во временном р
Запись движений в оборотный регистр 0
Методы доступны только при проведении документа в предопределенной процедуре ОбработкаПроведения. Метод Движение - Выполнить запись движения в оборотный регистр по параметрам. Регистр.Товары.Движение (ПоступившийТовар, ТекСклад, КолвоПоНакладной,
Итог оборотного регистра 0
// Пример 1 Функция ПолучитьИтог(Товар, Склад, Год); Регистр.ОборотыТоваров.ИспользоватьПериод(Год); Возврат Регистр.ОборотыТоваров.Итог(Товар, Склад, " ОборотТовара" ); КонецФункции // Пример 2
Итоги оборотного регистра 0
// Пример 1 Регистр.ОборотыТоваров.ИспользоватьПериод(Год); Регистр.ОборотыТоваров.Итоги(Товар, Склад); ОбТов = Регистр.ОборотыТоваров.ОборотТовара; // Пример 2 РегДоходы = СоздатьОбъект(" Регистр.Доходы" ); //установить период выборки " 3
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.