Цитата(reneval @ 31.01.13, 13:18) необходимо зарегистрироваться для просмотра ссылки
какой еще отрицетельный остаток по партии? Нет товара - нет партии.
Хорошо, тогда без партии.
Цитата(Vofka @ 31.01.13, 12:58) необходимо зарегистрироваться для просмотра ссылки
Честно говоря, я до сих пор не пойму, что вам надо

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