#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ДатаПоступления = НачалоДня(ТекущаяДатаСеанса());
ТекущаяДатаНачалоДня = ДатаПоступления;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКПоступлениюОстаткиИОбороты.Период КАК Период,
| ТоварыКПоступлениюОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ТоварыКПоступлениюОстаткиИОбороты.Характеристика КАК Характеристика,
| ТоварыКПоступлениюОстаткиИОбороты.КОформлениюОрдеровКонечныйОстаток - ТоварыКПоступлениюОстаткиИОбороты.ПринимаетсяКонечныйОстаток КАК Ожидается
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты(
| ,
| ,
| Регистратор,
| Движения,
| ДокументПоступления = &Распоряжение
| И Склад = &Склад) КАК ТоварыКПоступлениюОстаткиИОбороты
|ГДЕ
| ТоварыКПоступлениюОстаткиИОбороты.КОформлениюОрдеровКонечныйОстаток - ТоварыКПоступлениюОстаткиИОбороты.ПринимаетсяКонечныйОстаток > 0
| И ТоварыКПоступлениюОстаткиИОбороты.Регистратор <> &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| Период УБЫВ
|ИТОГИ ПО
| Номенклатура,
| Характеристика";
Запрос.УстановитьПараметр("Распоряжение", Параметры.Распоряжение);
Запрос.УстановитьПараметр("ТекущийДокумент", Параметры.ТекущийДокумент);
Запрос.УстановитьПараметр("Склад", Параметры.Склад);
ВыборкаПоНоменклатуре = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ДатыПоступлений = Новый Соответствие;
Пока ВыборкаПоНоменклатуре.Следующий() Цикл
ВыборкаПоХарактеристикам = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоХарактеристикам.Следующий() Цикл
ВыборкаПоДатам = ВыборкаПоХарактеристикам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПерваяДатаПоступления = Неопределено;
Пока ВыборкаПоДатам.Следующий() Цикл
Если ВыборкаПоДатам.Ожидается <= 0 Тогда
Прервать;
КонецЕсли;
ПерваяДатаПоступления = НачалоДня(ВыборкаПоДатам.Период);
Если ДатыПоступлений.Получить(ПерваяДатаПоступления) = Неопределено Тогда
ДатыПоступлений.Вставить(ПерваяДатаПоступления,0);
КонецЕсли;
КонецЦикла;
Если ПерваяДатаПоступления <> Неопределено Тогда
ДатыПоступлений[ПерваяДатаПоступления] = ДатыПоступлений[ПерваяДатаПоступления] + 1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для Каждого КлючЗначение Из ДатыПоступлений Цикл
Элементы.ДатаПоступления.СписокВыбора.Добавить(КлючЗначение.Ключ,Формат(КлючЗначение.Значение,"ЧН=0; ЧГ="));
КонецЦикла;
Элементы.ДатаПоступления.СписокВыбора.СортироватьПоЗначению(НаправлениеСортировки.Возр);
НарастающийИтог = 0;
МассивУдаляемыхЗначений = Новый Массив;
НужноДобавитьТекущуюДату = Ложь;
ЧислоПозицийНаТекущуюДату = 0;
Для Каждого СтрСп Из Элементы.ДатаПоступления.СписокВыбора Цикл
НарастающийИтог = НарастающийИтог + Число(СтрСп.Представление);
Если СтрСп.Значение <= ДатаПоступления Тогда
МассивУдаляемыхЗначений.Добавить(СтрСп);
НужноДобавитьТекущуюДату = Истина;
Иначе
Если НужноДобавитьТекущуюДату Тогда
ЧислоПозицийНаТекущуюДату = НарастающийИтог;
НужноДобавитьТекущуюДату = Ложь;
КонецЕсли;
ПредставлениеДатыПоступления = НСтр("ru = '%Дата% (%Количество% поз.)'");
ПредставлениеДатыПоступления = СтрЗаменить(ПредставлениеДатыПоступления,"%Дата%",Формат(СтрСп.Значение,"ДЛФ=D"));
ПредставлениеДатыПоступления = СтрЗаменить(ПредставлениеДатыПоступления,"%Количество%",НарастающийИтог);
СтрСп.Представление = ПредставлениеДатыПоступления;
КонецЕсли;
КонецЦикла;
Если НужноДобавитьТекущуюДату Тогда
ЧислоПозицийНаТекущуюДату = НарастающийИтог;
КонецЕсли;
Если ЧислоПозицийНаТекущуюДату <> 0 Тогда
ПредставлениеДатыПоступления = НСтр("ru = '%Дата% (%Количество% поз.)'");
ПредставлениеДатыПоступления = СтрЗаменить(ПредставлениеДатыПоступления,"%Дата%",Формат(ДатаПоступления,"ДЛФ=D"));
ПредставлениеДатыПоступления = СтрЗаменить(ПредставлениеДатыПоступления,"%Количество%",ЧислоПозицийНаТекущуюДату);
Элементы.ДатаПоступления.СписокВыбора.Вставить(0, НачалоДня(ДатаПоступления), ПредставлениеДатыПоступления);
КонецЕсли;
Для Каждого СтрМас Из МассивУдаляемыхЗначений Цикл
Элементы.ДатаПоступления.СписокВыбора.Удалить(СтрМас);
КонецЦикла;
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОК(Команда)
Если ДатаПоступления < ТекущаяДатаНачалоДня Тогда
ТекстПредупреждения = НСтр("ru = 'Укажите дату, не меньше текущей даты (%Дата%).'");
ТекстПредупреждения = СтрЗаменить(ТекстПредупреждения, "%Дата%", Формат(ТекущаяДатаНачалоДня,"ДЛФ=D"));
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
Закрыть(ДатаПоступления);
КонецПроцедуры
&НаКлиенте
Процедура Отмена(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти