Процедура ОбновитьОтчет()
Если НЕ ЗначениеЗаполнено(ДатаНач) Или НЕ ЗначениеЗаполнено(ДатаКон) Тогда
Предупреждение("Не выбран период!");
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Склад) Тогда
Предупреждение("Не выбран склад!");
Возврат;
КонецЕсли;
мТабДок = ЭлементыФормы.ДокументРезультат;
мТабДок.Очистить();
Макет = ЭтотОбъект.ПолучитьМакет("Макет");
// Выведем заголовок.
СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Организация, ДатаКон);
ВыбМОЛ = РегистрыСведений.ОтветственныеЛица.ПолучитьПоследнее(КонецДня(ДатаКон), Новый Структура("СтруктурнаяЕдиница", Склад)).ФизическоеЛицо;
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ОрганизацияПредставление = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе);
ОбластьМакета.Параметры.ДатаСоставления = РабочаяДата;
ОбластьМакета.Параметры.ДатаНачала = ДатаНач;
ОбластьМакета.Параметры.ДатаКонца = ДатаКон;
ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОПокупателе.КодПоОКПО;
ОбластьМакета.Параметры.МОЛ = ?(НЕ ЗначениеЗаполнено(ВыбМОЛ), "", ВыбМОЛ);
ОбластьМакета.Параметры.МОЛТабельныйНомер = ?(НЕ ЗначениеЗаполнено(ВыбМОЛ), "", ВыбМОЛ.Код);
ОбластьМакета.Параметры.Номер = НомерОтчета;
ВысотаЗаголовка = ОбластьМакета.ВысотаТаблицы;
мТабДок.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ПовторятьПриПечатиСтроки = мТабДок.Область(1 + ВысотаЗаголовка, ,2 + ВысотаЗаголовка);
мТабДок.Вывести(ОбластьМакета);
МассивСчетов = Новый Массив;
МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахАТТ);
МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахНТТ);
МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТараПодТоваромИПорожняя);
МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ТорговаяНаценкаНТТ)//дав
МассивСчетов41 = Новый Массив;
МассивСчетов41.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахАТТ);
МассивСчетов41.Добавить(ПланыСчетов.Хозрасчетный.ТоварыВРозничнойТорговлеВПродажныхЦенахНТТ);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата1", НачалоДня(ДатаНач));
Запрос.УстановитьПараметр("Дата2", КонецДня(ДатаКон));
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("ВидСубконто", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Счета", МассивСчетов);
Запрос.УстановитьПараметр("Счета41", МассивСчетов41);
Запрос.УстановитьПараметр("СчетТары", ПланыСчетов.Хозрасчетный.ТараПодТоваромИПорожняя);
//дав
Запрос.УстановитьПараметр("СчетНаценки", ПланыСчетов.Хозрасчетный.ТорговаяНаценкаНТТ);
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ХозрасчетныйОстаткиИОбороты.Период КАК ДатаДок,
| ХозрасчетныйОстаткиИОбороты.Регистратор КАК Док,
| ДанныеПервичныхДокументов.НомерРегистратора КАК НомерДок,
| СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ПризнакПрихода,
| СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК ПризнакРасхода,
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет В (&Счета41)
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт
| ИНАЧЕ 0
| КОНЕЦ) КАК НачОст,
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетТары
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт
| ИНАЧЕ 0
| КОНЕЦ) КАК НачОстТары,
//дав+
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетНаценки
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт
| ИНАЧЕ 0
| КОНЕЦ) КАК НачОстБух42,
//дав-
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет В (&Счета41)
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотДт
| ИНАЧЕ 0
| КОНЕЦ) КАК Приход,
//дав+
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетНаценки
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
| ИНАЧЕ 0
| КОНЕЦ) КАК Приход42,
//дав-
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетТары
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотДт
| ИНАЧЕ 0
| КОНЕЦ) КАК ПриходТары,
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет В (&Счета41)
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
| ИНАЧЕ 0
| КОНЕЦ) КАК Расход,
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетТары
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
| ИНАЧЕ 0
| КОНЕЦ) КАК РасходТары,
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет В (&Счета41)
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт
| ИНАЧЕ 0
| КОНЕЦ) КАК КонОст,
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетТары
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт - ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт
| ИНАЧЕ 0
| КОНЕЦ) КАК КонОстТары,
//дав+
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОстаткиИОбороты.Счет = &СчетНаценки
| ТОГДА ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт
| ИНАЧЕ 0
| КОНЕЦ) КАК КонОстБух42
//дав-
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Счет В (&Счета), &ВидСубконто, Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
| ПО (ДанныеПервичныхДокументов.Организация = &Организация)
| И ХозрасчетныйОстаткиИОбороты.Регистратор = ДанныеПервичныхДокументов.Документ
|ГДЕ
| ХозрасчетныйОстаткиИОбороты.Субконто1 = &Склад
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстаткиИОбороты.Период,
| ХозрасчетныйОстаткиИОбороты.Регистратор,
| ДанныеПервичныхДокументов.НомерРегистратора
|
|УПОРЯДОЧИТЬ ПО
| ДатаДок";
РезультатЗапроса = Запрос.Выполнить();
ТЗОстатки = РезультатЗапроса.Выгрузить();
Если ТЗОстатки.Количество() = 0 Тогда
НачОст = 0;
КонОст = 0;
НачОстТары = 0;
КонОстТары = 0;
НачОстБух42 = 0;
КонОстБух42 = 0;
Иначе
НачОст = ТЗОстатки[0].НачОст;
КонОст = ТЗОстатки[ТЗОстатки.Количество() - 1].КонОст;
НачОстТары = ТЗОстатки[0].НачОстТары;
КонОстТары = ТЗОстатки[ТЗОстатки.Количество() - 1].КонОстТары;
НачОстБух42 = ТЗОстатки[0].НачОстБух42;
КонОстБух42 = ТЗОстатки[ТЗОстатки.Количество() - 1].КонОстБух42;
КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть("ОстатокНачала");
ОбластьМакета.Параметры.ДатаНачала = "Остаток на " + Формат(ДатаНач, "ДЛФ=Д");
ОбластьМакета.Параметры.НачСтоимостьВсего = ОбщегоНазначения.ФорматСумм(НачОст);
ОбластьМакета.Параметры.НачСтоимостьТара = ОбщегоНазначения.ФорматСумм(НачОстТары);
ОбластьМакета.Параметры.НачСтоимостьБух42 = ОбщегоНазначения.ФорматСумм(НачОстБух42);
ОбластьМакета.Параметры.НачСтоимостьБух60 = ОбщегоНазначения.ФорматСумм(НачОст-НачОстБух42);
мТабДок.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Приход");
мТабДок.Вывести(ОбластьМакета);
ТЗПриходы = ОтобратьСтрокиПоКритериям(РезультатЗапроса, Новый Структура("ПризнакПрихода", 0),
Новый Структура("ПризнакПрихода", ВидСравнения.НеРавно)).Выгрузить();
ТЗПриходы.Сортировать("ДатаДок Возр");
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаПрихода Из ТЗПриходы Цикл
ОбластьМакета.Параметры.Докум = СтрокаПрихода.Док;
ОбластьМакета.Параметры.Контрагент = СтрокаПрихода.Док.Контрагент;
ОбластьМакета.Параметры.Расшифровка = СтрокаПрихода.Док;
ОбластьМакета.Параметры.ДатаДокумента = СтрокаПрихода.ДатаДок;
ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаПрихода.Док);
ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход);
ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.ПриходТары);
ОбластьМакета.Параметры.Суммабух60 = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход-СтрокаПрихода.Приход42);//дав
ОбластьМакета.Параметры.Суммабух42 = ОбщегоНазначения.ФорматСумм(СтрокаПрихода.Приход42);//дав
мТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Приход = ТЗПриходы.Итог("Приход");
ПриходТары = ТЗПриходы.Итог("ПриходТары");
Приход42 = ТЗПриходы.Итог("Приход42");
Приход60 = Приход-Приход42;
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоПриход");
ОбластьМакета.Параметры.ПрихСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Приход);
ОбластьМакета.Параметры.ПрихСтоимостьТара = ОбщегоНазначения.ФорматСумм(ПриходТары);
ОбластьМакета.Параметры.ИтогоПрих42 = ОбщегоНазначения.ФорматСумм(Приход42);
ОбластьМакета.Параметры.ИтогоПрих60 = ОбщегоНазначения.ФорматСумм(Приход60);
мТабДок.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("ВсегоПриход");
ОбластьМакета.Параметры.ПриходСОстатком = ОбщегоНазначения.ФорматСумм(Приход + НачОст);
ОбластьМакета.Параметры.ПриходСОстаткомТара = ОбщегоНазначения.ФорматСумм(ПриходТары + НачОстТары);
ОбластьМакета.Параметры.ВсегоПриход42 = ОбщегоНазначения.ФорматСумм(Приход42 + НачОстБух42);
ОбластьМакета.Параметры.ВсегоПриход60 = ОбщегоНазначения.ФорматСумм(Приход60 + (НачОст-НачОстБух42));
мТабДок.Вывести(ОбластьМакета);
мТабДок.ВывестиГоризонтальныйРазделительСтраниц();
ОбластьМакета = Макет.ПолучитьОбласть("Расход");
мТабДок.Вывести(ОбластьМакета);
ТЗРасходы = ОтобратьСтрокиПоКритериям(РезультатЗапроса, Новый Структура("ПризнакРасхода", 0),
Новый Структура("ПризнакРасхода", ВидСравнения.НеРавно)).Выгрузить();
ТЗРасходы = ОтобратьСтрокиПоКритериям(ТЗРасходы, Новый Структура("ПризнакПрихода", 0),
Новый Структура("ПризнакПрихода", ВидСравнения.Равно)).Выгрузить();
ТЗРасходы.Сортировать("ДатаДок Возр");
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаРасхода Из ТЗРасходы Цикл
ОбластьМакета.Параметры.Докум = СтрокаРасхода.Док;
ОбластьМакета.Параметры.Контрагент = СтрокаПрихода.Док.Контрагент;
ОбластьМакета.Параметры.Расшифровка = СтрокаРасхода.Док;
ОбластьМакета.Параметры.ДатаДокумента = СтрокаРасхода.ДатаДок;
ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаРасхода.Док);
ОбластьМакета.Параметры.СуммаТовара = ОбщегоНазначения.ФорматСумм(СтрокаРасхода.Расход);
ОбластьМакета.Параметры.СуммаТары = ОбщегоНазначения.ФорматСумм(СтрокаРасхода.РасходТары);
мТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Расход = ТЗРасходы.Итог("Расход");
РасходТары = ТЗРасходы.Итог("РасходТары");
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоРасход");
ОбластьМакета.Параметры.РасхСтоимостьВсего = ОбщегоНазначения.ФорматСумм(Расход);
ОбластьМакета.Параметры.РасхСтоимостьТара = ОбщегоНазначения.ФорматСумм(РасходТары);
мТабДок.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("ОстатокКонец");
ОбластьМакета.Параметры.ДатаКонца = "Остаток на " + Формат(ДатаКон, "ДЛФ=Д");
ОбластьМакета.Параметры.КонСтоимостьВсего = ОбщегоНазначения.ФорматСумм(КонОст);
ОбластьМакета.Параметры.КонСтоимостьТара = ОбщегоНазначения.ФорматСумм(КонОстТары);
мТабДок.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
мТабДок.Вывести(ОбластьМакета);
мТабДок.ПовторятьПриПечатиСтроки = ПовторятьПриПечатиСтроки;
НомерОтчета = НомерОтчета + 1;
КонецПроцедуры// ОбновитьОтчет()
|