![]() |
![]() |
![]() |
|
Остатки | ☑ | ||
---|---|---|---|---|
0
ALL_EG
22.04.16
✎
21:06
|
Доброго времени суток! помогите разобраться:
В модуле документа получаю остатки из регистра накопления. Остатки нулевые. Что делаю не так? Процедура ОбработкаПроведения(Отказ, РежимПроведения) //Проверка на наличие остатка на складе Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | РасходнаяНакладнаяСостав.Номенклатура, | СУММА(РасходнаяНакладнаяСостав.Количество * РасходнаяНакладнаяСостав.ЕдиницаИзмерения.Кратность) КАК Количество |ПОМЕСТИТЬ ВТ_док |ИЗ | Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав |ГДЕ | РасходнаяНакладнаяСостав.Номенклатура.Услуга = ЛОЖЬ | И РасходнаяНакладнаяСостав.Ссылка = &ДокументТекущий | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяСостав.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток |ПОМЕСТИТЬ ВТ_Остатки |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | &Период, | Номенклатура В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ВТ.Номенклатура | ИЗ | ВТ_Док КАК ВТ) | И Склад = &Склад) КАК ТоварыНаСкладахОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СебестоимостьТоваровОстатки.Номенклатура, | ВЫБОР | КОГДА СебестоимостьТоваровОстатки.КоличествоОстаток = 0 | ТОГДА 0 | ИНАЧЕ ВЫРАЗИТЬ(СебестоимостьТоваровОстатки.СтоимостьОстаток / СебестоимостьТоваровОстатки.КоличествоОстаток КАК ЧИСЛО(15, 2)) | КОНЕЦ КАК Себестоимость |ПОМЕСТИТЬ ВТ_Сб |ИЗ | РегистрНакопления.СебестоимостьТоваров.Остатки( | &Период, | Номенклатура В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ВТ.Номенклатура | ИЗ | ВТ_Док КАК ВТ)) КАК СебестоимостьТоваровОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_док.Номенклатура, | ВТ_док.Количество, | ЕСТЬNULL(ВТ_Остатки.КоличествоОстаток, 0) КАК Остаток, | ЕСТЬNULL(ВТ_Сб.Себестоимость, 0) КАК Себестоимость |ИЗ | ВТ_док КАК ВТ_док | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки | ПО ВТ_док.Номенклатура = ВТ_Остатки.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Сб КАК ВТ_Сб | ПО ВТ_док.Номенклатура = ВТ_Сб.Номенклатура"; Запрос.УстановитьПараметр("ДокументТекущий",Ссылка); Запрос.УстановитьПараметр("Период",Новый Граница(Ссылка.Дата,ВидГраницы.Включая)); Запрос.УстановитьПараметр("Склад",Ссылка.Склад); Движения.СебестоимостьТоваров.Записывать=Истина; Движения.ТоварыНаСкладах.Записывать=Истина; Выборка=Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Количество>Выборка.Остаток Тогда Сообщить("Не списано со склада "+Строка(Ссылка.Склад)+" остатка товара: "+Строка(Выборка.Номенклатура)+" в количестве: "+Формат(Выборка.Количество-Выборка.Остаток,"ЧЦ=15; ЧДЦ=3; ЧН=0")); Отказ=Истина; Иначе НовСтрокаТнС=Движения.ТоварыНаСкладах.Добавить(); НовСтрокаТнС.ВидДвижения=ВидДвиженияНакопления.Расход; НовСтрокаТнС.Регистратор=Ссылка; НовСтрокаТнС.Период=Ссылка.Дата; НовСтрокаТнС.Активность=Истина; НовСтрокаТнС.Склад=Ссылка.Склад; НовСтрокаТнС.Номенклатура=Выборка.Номенклатура; НовСтрокаТнС.Количество=Выборка.Количество; НовСтрокаСб=Движения.СебестоимостьТоваров.Добавить(); НовСтрокаСб.ВидДвижения=ВидДвиженияНакопления.Расход; НовСтрокаСб.Регистратор=Ссылка; НовСтрокаСб.Период=Ссылка.Дата; НовСтрокаСб.Активность=Истина; НовСтрокаСб.Номенклатура=Выборка.Номенклатура; НовСтрокаСб.Количество=Выборка.Количество; НовСтрокаСб.Стоимость=Выборка.Количество*Выборка.Себестоимость; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
ALL_EG
22.04.16
✎
21:07
|
Две вложенные таблицы-пустые почему-то, хотя в регистрах накопления остатки есть.
Делал отчет на СКД - остатки показывает. |
|||
2
Лефмихалыч
22.04.16
✎
21:16
|
документ поди проведен?
|
|||
3
GROOVY
22.04.16
✎
21:23
|
Грохай старые движения при перепроведении.
|
|||
4
Лефмихалыч
22.04.16
✎
21:25
|
+(3) еще можно ВидГраницы.Исключая, но передавать при этом момент времени (3)
|
|||
5
RomanYS
22.04.16
✎
21:26
|
Запрос.УстановитьПараметр("Период",Новый Граница(Ссылка.Дата,ВидГраницы.Включая));
заменить на Запрос.УстановитьПараметр("Период", МоментВремени()); |
|||
6
Лефмихалыч
22.04.16
✎
21:27
|
(5) граница нужна и с моментом, но другая
|
|||
7
ALL_EG
22.04.16
✎
21:28
|
Документ не проведен!
Ставил-и МоментВремени(), и вообще ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток |ПОМЕСТИТЬ ВТ_Остатки |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | ) КАК ТоварыНаСкладахОстатки без результатно |
|||
8
RomanYS
22.04.16
✎
21:29
|
(6) почему другая, в данном контексте МоментВремени() эквивалентно Граница(МоментВремени(), исключая)? Что и нужно.
|
|||
9
ALL_EG
22.04.16
✎
21:30
|
такое ощущение, что не работают вложенные таблицы
|
|||
10
RomanYS
22.04.16
✎
21:33
|
(9) извини конечно, но у тебя номенклатура в ТЧ и в регистрах одного типа? приход в регистрах есть?
|
|||
11
ALL_EG
22.04.16
✎
21:34
|
(10) Да, проверил, уже, неоднократно
|
|||
12
ALL_EG
22.04.16
✎
21:37
|
(10) приход в регистрах есть.
|
|||
13
RomanYS
22.04.16
✎
21:42
|
Пихать запрос в консоль и проверить результат на каждом шаге (каждую ВТ).
В контексте объекта применение Ссылка.Дата и Ссылка.Склад выглядит противоестественным. Это так, придирки к вопросу отношения не имеющие. |
|||
14
Лефмихалыч
22.04.16
✎
21:54
|
(8) нет
|
|||
15
Лефмихалыч
22.04.16
✎
21:54
|
(9) период - момент времени, а граница - исключая
|
|||
16
RomanYS
22.04.16
✎
22:01
|
(14) что нет?
приведи пример, когда результаты остатки(Момент) и остатки(ГраницаМоментИсключая) дадут разные результаты |
|||
17
Лефмихалыч
28.04.16
✎
21:50
|
(16) да, ты прав - Остатки() момент времени исключают
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |