Имя: Пароль:
1C
 
Выводятся нулевые остатки в разрезе характеристик
0 sergqwert
 
26.06.19
21:59
Вывожу в колонку остаток товара на всех складах на дату документа. С учетом остатка в разрезе
характеристик(то есть если указана характеристика в колонке характеристика номенклатуры, то выводится остаток именно этой характеристики). Но этот остаток почему-то нулевой, если выбираешь в колонке характеристику номенклатуры. В чем причина?

Процедура ОтобразитьСвободныйОстатокПоСтрокам(ОформлениеСтрок,ДокументОбъект,ИмяКолонки ="СвободныйОстаток" ) Экспорт
перем СкладПараметр;

Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ЗаказПокупателя") Тогда
СкладПараметр = ДокументОбъект.СкладГруппа;
ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
СкладПараметр = ДокументОбъект.Склад;
Иначе
Возврат;
КонецЕсли;

Если Не ЗначениеЗаполнено(СкладПараметр)
ИЛИ ТипЗнч(СкладПараметр) <> Тип("СправочникСсылка.Склады") Тогда
Возврат;
КонецЕсли;

МассивНоменклатур = Новый Массив();
спХарактеристикаНоменклатуры = Новый Массив();

Для каждого ОформлениеСтроки Из ОформлениеСтрок Цикл
Если ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.Номенклатура) Тогда
МассивНоменклатур.Добавить(ОформлениеСтроки.ДанныеСтроки.Номенклатура);
спХарактеристикаНоменклатуры.Добавить(ОформлениеСтроки.ДанныеСтроки.ХарактеристикаНоменклатуры);
КонецЕсли;
КонецЦикла;

Если МассивНоменклатур.Количество() = 0 Тогда
Возврат;
КонецЕсли;

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

Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата);
Запрос.УстановитьПараметр("Склад",СкладПараметр);

Запрос.УстановитьПараметр("спХарактеристикаНоменклатуры", спХарактеристикаНоменклатуры);

Запрос.УстановитьПараметр("МассивНоменклатур", МассивНоменклатур);

ТаблицаОстатков = Запрос.Выполнить().Выгрузить();
ТаблицаОстатков.Индексы.Добавить("Номенклатура");

Для каждого ОформлениеСтроки Из ОформлениеСтрок Цикл

СвободныйОстаток = Формат(0, "ЧН=0");
ТекущаяНоменклатура = ОформлениеСтроки.ДанныеСтроки.Номенклатура;

Если ЗначениеЗаполнено(ТекущаяНоменклатура) Тогда

НайденнаяСтрока = НайтиСтрокуТабЧасти(ТаблицаОстатков,Новый Структура("Номенклатура",ТекущаяНоменклатура));

Если НайденнаяСтрока<>Неопределено Тогда
СвободныйОстаток = Формат(Макс(0,НайденнаяСтрока.КоличествоОстаток - НайденнаяСтрока.КоличествоВРезерве), "ЧЦ=10; ЧДЦ=3; ЧН=0; ЧГ=0");
КонецЕсли;

КонецЕсли;

ОформлениеСтроки.Ячейки[ИмяКолонки].УстановитьТекст(СвободныйОстаток);

КонецЦикла;

ТаблицаОстатков = Неопределено;
КонецПроцедуры
Ошибка? Это не ошибка, это системная функция.