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