Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 03:32

Расчет суммы остатков

Автор Андрей Бутенко, 08 сен 2022, 11:28

0 Пользователей и 1 гость просматривают эту тему.

Андрей Бутенко

Доброго времени суток! У меня есть база где рассчитываются остатки на складах. Товар приходит по партиям. В регистре накопления есть измерение партия. Я хочу сделать так, чтобы сумма товара рассчитывалась по партиям и списывалась по принципу первый пришел первый ушел. Процедура ОбработкаПроведения(Отказ, Режим)

Движения.ОстаткиТоваров.Записывать = Истина;
// Создаем новый менеджерВременныхТаблиц
МенеджерВТ = Новый МенеджерВременныхТаблиц;

Запрос = Новый Запрос;

Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос.Текст = "ВЫБРАТЬ
| РасходнаяНакладнаяТоварыИУслуги.Номенклатура,
| СУММА(РасходнаяНакладнаяТоварыИУслуги.Количество) КАК КоличествоВДокументе,
| СУММА(РасходнаяНакладнаяТоварыИУслуги.Сумма) КАК СуммаВДокументе
|ПОМЕСТИТЬ НоменклатураДокумента
|ИЗ
| Документ.РасходнаяНакладная.ТоварыИУслуги КАК РасходнаяНакладнаяТоварыИУслуги
|ГДЕ
| РасходнаяНакладнаяТоварыИУслуги.Ссылка = &Ссылка
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТоварыИУслуги.Номенклатура";


Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
//#КонецОбласти

Запрос2 = Новый Запрос;
Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос2.Текст = "ВЫБРАТЬ
                | НоменклатураДокумента.Номенклатура,
                | НоменклатураДокумента.КоличествоВДокументе КАК Количество,
                | НоменклатураДокумента.СуммаВДокументе КАК Сумма,
                | ЕСТЬNULL(ОстаткиТоваровОстатки.СтоимостьОстаток, 0) КАК Стоимость,
                | ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстаток, 0) КАК Остаток,
                | ОстаткиТоваровОстатки.Партия
                |ИЗ
                | НоменклатураДокумента КАК НоменклатураДокумента
                | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
                | &ДатаДокумента,
                | Номенклатура В
                | (ВЫБРАТЬ
                | НоменклатураДокумента.Номенклатура
                | ИЗ
                | НоменклатураДокумента)
                | И Склад = &Склад) КАК ОстаткиТоваровОстатки
                | ПО НоменклатураДокумента.Номенклатура = ОстаткиТоваровОстатки.Номенклатура
|СГРУППИРОВАТЬ ПО НоменклатураДокумента.Номенклатура, НоменклатураДокумента.КоличествоВДокументе";

Движения.ОстаткиТоваров.Записать();
Запрос2.УстановитьПараметр("ДатаДокумента", Дата);
Запрос2.УстановитьПараметр("Склад", Склад);   //
//
РезультатЗапроса = Запрос2.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество > ВыборкаДетальныеЗаписи.Остаток Тогда
Отказ = Истина;
Нужда = ВыборкаДетальныеЗаписи.Количество - ВыборкаДетальныеЗаписи.Остаток;
Сообщить ("На складе не хватает"+ВыборкаДетальныеЗаписи.Номенклатура + "в количестве - "+ Нужда);
Иначе
//СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость/
//ВыборкаДетальныеЗаписи.Количество;

Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Количество = ВыборкаДетальныеЗаписи.Количество;

Если ВыборкаДетальныеЗаписи.Количество = ВыборкаДетальныеЗаписи.Остаток Тогда
//Движение.Стоимость = ОстаткиТоваровОстатки.СтоимостьОстаток;
Движение.Стоимость = ВыборкаДетальныеЗаписи.Стоимость;
Иначе
//Движение.Стоимость = ВыборкаДетальныеЗаписи.Количество*(ВыборкаДетальныеЗаписи.Стоимость/
//ВыборкаДетальныеЗаписи.Количество);
?????????????????
КонецЕсли;
КонецЕсли;

КонецЦикла;

КонецПроцедуры

alexandr_ll

Андрей Бутенко,
                Движение.Стоимость = ВыборкаДетальныеЗаписи.Количество*(ВыборкаДетальныеЗаписи.Стоимость/
                ВыборкаДетальныеЗаписи.Остаток);

Андрей Бутенко

alexandr_ll, А там не надо делать группировку в запросе, чтобы корректно считалась стоимость?

cast

Тебе в запросе нужно, потом в нете найдёшь как дальше

Теги: Запрос 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск