![]() |
|
Выводятся нулевые остатки в разрезе характеристик | ☑ | ||
---|---|---|---|---|
0
sergqwert
26.06.19
✎
21:59
|
Вывожу в колонку остаток товара на всех складах на дату документа. С учетом остатка в разрезе
характеристик(то есть если указана характеристика в колонке характеристика номенклатуры, то выводится остаток именно этой характеристики). Но этот остаток почему-то нулевой, если выбираешь в колонке характеристику номенклатуры. В чем причина? Процедура ОтобразитьСвободныйОстатокПоСтрокам(ОформлениеСтрок,ДокументОбъект,ИмяКолонки ="СвободныйОстаток" ) Экспорт перем СкладПараметр; Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ЗаказПокупателя") Тогда СкладПараметр = ДокументОбъект.СкладГруппа; ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда СкладПараметр = ДокументОбъект.Склад; Иначе Возврат; КонецЕсли; Если Не ЗначениеЗаполнено(СкладПараметр) ИЛИ ТипЗнч(СкладПараметр) <> Тип("СправочникСсылка.Склады") Тогда Возврат; КонецЕсли; МассивНоменклатур = Новый Массив(); спХарактеристикаНоменклатуры = Новый Массив(); Для каждого ОформлениеСтроки Из ОформлениеСтрок Цикл Если ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.Номенклатура) Тогда МассивНоменклатур.Добавить(ОформлениеСтроки.ДанныеСтроки.Номенклатура); спХарактеристикаНоменклатуры.Добавить(ОформлениеСтроки.ДанныеСтроки.ХарактеристикаНоменклатуры); КонецЕсли; КонецЦикла; Если МассивНоменклатур.Количество() = 0 Тогда Возврат; КонецЕсли; Запрос = новый Запрос; Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоВРезерве, | ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | &Дата, | Склад В (&Склад) | И Номенклатура В (&МассивНоменклатур) | И ХарактеристикаНоменклатуры В (&спХарактеристикаНоменклатуры)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( | &Дата, | Склад В (&Склад) | И Номенклатура В (&МассивНоменклатур) | И ХарактеристикаНоменклатуры В (&спХарактеристикаНоменклатуры)) КАК ТоварыВРезервеНаСкладахОстатки | ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура | И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры"; Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата); Запрос.УстановитьПараметр("Склад",СкладПараметр); Запрос.УстановитьПараметр("спХарактеристикаНоменклатуры", спХарактеристикаНоменклатуры); Запрос.УстановитьПараметр("МассивНоменклатур", МассивНоменклатур); ТаблицаОстатков = Запрос.Выполнить().Выгрузить(); ТаблицаОстатков.Индексы.Добавить("Номенклатура"); Для каждого ОформлениеСтроки Из ОформлениеСтрок Цикл СвободныйОстаток = Формат(0, "ЧН=0"); ТекущаяНоменклатура = ОформлениеСтроки.ДанныеСтроки.Номенклатура; Если ЗначениеЗаполнено(ТекущаяНоменклатура) Тогда НайденнаяСтрока = НайтиСтрокуТабЧасти(ТаблицаОстатков,Новый Структура("Номенклатура",ТекущаяНоменклатура)); Если НайденнаяСтрока<>Неопределено Тогда СвободныйОстаток = Формат(Макс(0,НайденнаяСтрока.КоличествоОстаток - НайденнаяСтрока.КоличествоВРезерве), "ЧЦ=10; ЧДЦ=3; ЧН=0; ЧГ=0"); КонецЕсли; КонецЕсли; ОформлениеСтроки.Ячейки[ИмяКолонки].УстановитьТекст(СвободныйОстаток); КонецЦикла; ТаблицаОстатков = Неопределено; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |