|
Списание по партиям | ☑ | ||
---|---|---|---|---|
0
skupidom
21.08.19
✎
11:52
|
Коллеги, что не правильно в реализации, прошу Вашей критики:
ДвиженияРН = РегистрыНакопления.ПартииТоваров.СоздатьНаборЗаписей(); ДвиженияРН.Отбор.Регистратор.Установить(Ссылка); ДвиженияРН.Очистить(); ДвиженияРН.Записывать = Истина; ЗапросРН = Новый Запрос; ЗапросРН.Текст = "ВЫБРАТЬ | РТУТовары.Номенклатура КАК Номенклатура, | МАКСИМУМ(РТУТовары.Количество) КАК Количество, | МАКСИМУМ(РТУТовары.Сумма) КАК Сумма |ПОМЕСТИТЬ ПартияРТУ |ИЗ | Документ.РТУ.Товары КАК РТУТовары |ГДЕ | РТУТовары.Ссылка = &РТУ | |СГРУППИРОВАТЬ ПО | РТУТовары.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ПартииТоваровОстатки.Номенклатура КАК Номенклатура, | ПартииТоваровОстатки.Партия КАК Партия, | СУММА(ПартииТоваровОстатки.КоличествоОстаток) КАК КоличествоОстаток, | СУММА(ПартииТоваровОстатки.СуммаОстаток) КАК СуммаОстаток, | МАКСИМУМ(ПартияРТУ.Количество) КАК КоличествоРТУ, | МАКСИМУМ(ПартияРТУ.Сумма) КАК СуммаРТУ |ИЗ | РегистрНакопления.ПартииТоваров.Остатки( | &ТекДата, | Номенклатура В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ПартияРТУ.Номенклатура КАК Номенклатура | ИЗ | ПартияРТУ КАК ПартияРТУ)) КАК ПартииТоваровОстатки | ЛЕВОЕ СОЕДИНЕНИЕ ПартияРТУ КАК ПартияРТУ | ПО ПартииТоваровОстатки.Номенклатура = ПартияРТУ.Номенклатура | |СГРУППИРОВАТЬ ПО | ПартииТоваровОстатки.Номенклатура, | ПартииТоваровОстатки.Партия | |УПОРЯДОЧИТЬ ПО | ПартииТоваровОстатки.Партия.МоментВремени |ИТОГИ | СУММА(КоличествоОстаток), | СУММА(СуммаОстаток), | СУММА(КоличествоРТУ), | СУММА(СуммаРТУ) |ПО | Номенклатура, | Партия"; ЗапросРН.УстановитьПараметр("РТУ",Ссылка); ЗапросРН.УстановитьПараметр("ТекДата",Ссылка.МоментВремени()); ВыборкаНоменклатура = ЗапросРН.Выполнить().Выбрать(); // ВыборкаНоменклатура Пока ВыборкаНоменклатура.Следующий() Цикл Если ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.КоличествоРТУ Тогда Возврат; КонецЕсли; ИтогКолВоНомен = ВыборкаНоменклатура.КоличествоОстаток; ВыборкаПартия = ВыборкаНоменклатура.Выбрать(); Пока ВыборкаПартия.Следующий() Цикл ОстатокКоличествоРН = ВыборкаПартия.КоличествоОстаток; Если НЕ ОстатокКоличествоРН > 0 Тогда Продолжить; КонецЕсли; КоличествоСписатьПоРТУ = ВыборкаПартия.КоличествоРТУ; Если КоличествоСписатьПоРТУ > ВыборкаПартия.КоличествоОстаток Тогда КолВоСписываем = ВыборкаПартия.КоличествоОстаток; СуммаСписания = (ВыборкаПартия.СуммаРТУ / ВыборкаПартия.КоличествоРТУ) * ВыборкаПартия.КоличествоОстаток; Иначе КолВоСписываем = КоличествоСписатьПоРТУ; СуммаСписания = ВыборкаПартия.СуммаРТУ; КонецЕсли; НовоеДвижениеРасход = ДвиженияРН.ДобавитьРасход(); НовоеДвижениеРасход.Период = Ссылка.МоментВремени(); НовоеДвижениеРасход.Партия = Ссылка; НовоеДвижениеРасход.Регистратор = Ссылка; НовоеДвижениеРасход.Номенклатура = ВыборкаПартия.Номенклатура; НовоеДвижениеРасход.Количество = КолВоСписываем; НовоеДвижениеРасход.Сумма = СуммаСписания; ИтогКолВоНомен = ИтогКолВоНомен - КолВоСписываем; КонецЦикла; ДвиженияРН.Записать(); КонецЦикла; |
|||
1
RomanYS
21.08.19
✎
11:58
|
(0) За что глаз зацепился
ДвиженияРН.Записывать = Истина; //зачем??? Это же не проведение документа ДвиженияРН.Записать(); //в цикле??? |
|||
2
skupidom
21.08.19
✎
12:08
|
согласен, а еще есть ?
|
|||
3
RomanYS
21.08.19
✎
12:16
|
(2) содержательную часть даже читать лень.
Но многократное использование "МАКСИМУМ" сильно напрягает. |
|||
4
skupidom
21.08.19
✎
12:23
|
согласен
|
|||
5
skupidom
21.08.19
✎
12:24
|
в целом логика не нарушена, все корректно ?
|
|||
6
RomanYS
21.08.19
✎
12:31
|
(5) все корректно ? Конечно, нет!
НовоеДвижениеРасход.Партия = Ссылка; //бред |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |