#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Ответственный";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Ответственный";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Организация, КассоваяКнига", Параметры);
КонецПроцедуры
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)";
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ЛистКассовойКниги) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЛистКассовойКниги.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЛистКассовойКниги);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КонецПроцедуры
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ЛистКассовойКниги";
КомандаПечати.Представление = НСтр("ru = 'Лист кассовой книги'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Обложка";
КомандаПечати.Представление = НСтр("ru = 'Титульный лист и последняя страница'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЛистКассовойКниги") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ЛистКассовойКниги",
НСтр("ru='Лист кассовой книги'"),
СформироватьПечатнуюФормуЛистаКассовойКниги(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Обложка") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Обложка",
НСтр("ru='Титульный лист кассовой книги'"),
СформироватьПечатнуюФормуОбложкиИПоследнегоЛистаКассовойКниги(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Функция ПолучитьКоличествоЛистовКассовойКнигиЗаПериодПоОрганизации(Организация, КассоваяКнига, ДатаНач, ДатаКон)
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КассоваяКнигаДокументы.НомерЛиста) КАК КоличествоЛистов
|ИЗ
| Документ.ЛистКассовойКниги КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.ЛистКассовойКниги.КассовыеОрдера КАК КассоваяКнигаДокументы
| ПО
| ДанныеДокумента.Ссылка = КассоваяКнигаДокументы.Ссылка
|ГДЕ
| ДанныеДокумента.Дата МЕЖДУ &ДатаНач И &ДатаКон
| И ДанныеДокумента.Организация = &Организация
| И ДанныеДокумента.КассоваяКнига = &КассоваяКнига
| И ДанныеДокумента.Проведен
|");
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("КассоваяКнига", КассоваяКнига);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.КоличествоЛистов;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Процедура ДобавитьОбороты(РабочаяТаблица, ВалютаРегламентированногоУчета, Валюта, ВалПриход, Приход, ВалРасход, Расход)
СтрокаТаблицы = РабочаяТаблица.Найти(Валюта, "Валюта");
Если СтрокаТаблицы = Неопределено Тогда
НоваяСтрока = РабочаяТаблица.Добавить();
НоваяСтрока.Валюта = Валюта;
Если НоваяСтрока.Валюта = Справочники.Валюты.ПустаяСсылка() Тогда
НоваяСтрока.Валюта = ВалютаРегламентированногоУчета;
КонецЕсли;
НоваяСтрока.ВалютаНаименованиеПолное = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НоваяСтрока.Валюта, "НаименованиеПолное");
НоваяСтрока.ВалОстаток = 0;
НоваяСтрока.Остаток = 0;
НоваяСтрока.ВалПриход = ВалПриход;
НоваяСтрока.Приход = Приход;
НоваяСтрока.ВалРасход = ВалРасход;
НоваяСтрока.Расход = Расход;
Иначе
СтрокаТаблицы.ВалПриход = СтрокаТаблицы.ВалПриход + ?(ВалПриход=null,0,ВалПриход);
СтрокаТаблицы.Приход = СтрокаТаблицы.Приход + ?(Приход=null,0,Приход);
СтрокаТаблицы.ВалРасход = СтрокаТаблицы.ВалРасход + ?(ВалРасход=null,0,ВалРасход);
СтрокаТаблицы.Расход = СтрокаТаблицы.Расход + ?(Расход=null,0,Расход);
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФормуОбложкиИПоследнегоЛистаКассовойКниги(МассивОбъектов, ОбъектыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОбложкаКассовойКниги";
МакетОбложка = УправлениеПечатью.МакетПечатнойФормы("Документ.ЛистКассовойКниги.ПФ_MXL_Обложка");
ОбластьОбложка = МакетОбложка.ПолучитьОбласть("Обложка");
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументКассоваяКнига.Ссылка КАК Ссылка,
| НАЧАЛОПЕРИОДА(ДокументКассоваяКнига.Дата, ГОД) КАК Год,
| ДокументКассоваяКнига.Организация КАК Организация,
| ДокументКассоваяКнига.КассоваяКнига КАК КассоваяКнига,
| ВЫРАЗИТЬ(ДокументКассоваяКнига.КассоваяКнига.СтруктурноеПодразделение КАК СТРОКА(1000)) КАК НаименованиеПодразделения,
| ВЫРАЗИТЬ(ТаблицаОтветственныеЛица.РуководительНаименование КАК СТРОКА(1000)) КАК Руководитель,
| ВЫРАЗИТЬ(ТаблицаОтветственныеЛица.РуководительДолжность КАК СТРОКА(1000)) КАК ДолжностьРуководителя,
| ВЫРАЗИТЬ(ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование КАК СТРОКА(1000)) КАК ГлавныйБухгалтер,
| ДокументКассоваяКнига.Организация.КодПоОКПО КАК КодПоОКПО,
| ПОДСТРОКА(ДокументКассоваяКнига.Организация.НаименованиеПолное, 1, 200) КАК НаименованиеОрганизации
|ИЗ
| Документ.ЛистКассовойКниги КАК ДокументКассоваяКнига
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица
| ПО ДокументКассоваяКнига.Ссылка = ТаблицаОтветственныеЛица.Ссылка
|ГДЕ
| ДокументКассоваяКнига.Ссылка В(&МассивОбъектов)";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
РеквизитыСторон = ДенежныеСредстваСервер.СведенияОПолучателеПлательщикеПоДокументам(МассивОбъектов);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
КоличествоЛистов = ПолучитьКоличествоЛистовКассовойКнигиЗаПериодПоОрганизации(
Выборка.Организация, Выборка.КассоваяКнига,
НачалоГода(Выборка.Год),
КонецГода(Выборка.Год));
ОтборНаименования = Новый Структура("Документ, Признак", Выборка.Ссылка, 5);
СведенияОНаименовании = РеквизитыСторон.НайтиСтроки(ОтборНаименования);
ОбластьОбложка.Параметры.НазваниеОрганизации =
?(СведенияОНаименовании.Количество() > 0, СведенияОНаименовании[0].ЗначениеРеквизита, Выборка.НаименованиеОрганизации);
ОбластьОбложка.Параметры.НазваниеПодразделения = Выборка.НаименованиеПодразделения;
ОбластьОбложка.Параметры.НадписьОбложка = " на "+Формат(Выборка.Год, "ДФ=yyyy") + " г.";
ОбластьОбложка.Параметры.КодОКПО = Выборка.КодПоОКПО;
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабличныйДокумент.Вывести(ОбластьОбложка);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ОбластьПослДеньГода = МакетОбложка.ПолучитьОбласть("ПослДеньГода");
ОбластьПослДеньГода.Параметры.ГлБухгалтер = СокрЛП(Выборка.ГлавныйБухгалтер);
ОбластьПослДеньГода.Параметры.Руководитель = СокрЛП(Выборка.Руководитель);
ОбластьПослДеньГода.Параметры.РуководительДолжность = СокрЛП(Выборка.ДолжностьРуководителя);
ОбластьПослДеньГода.Параметры.ЛистовЗаГод = КоличествоЛистов;
ТабличныйДокумент.Вывести(ОбластьПослДеньГода);
Если ЗначениеЗаполнено(Выборка.КассоваяКнига) Тогда
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(
ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Выборка.КассоваяКнига);
Иначе
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(
ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Выборка.Организация);
КонецЕсли;
КонецЦикла;
ТабличныйДокумент.ОтображатьСетку = Ложь;
ТабличныйДокумент.ОтображатьЗаголовки = Ложь;
Возврат ТабличныйДокумент;
КонецФункции
Функция СформироватьПечатнуюФормуЛистаКассовойКниги(МассивОбъектов, ОбъектыПечати, ПараметрыПечати = Неопределено)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЛистКассовойКниги";
ВыводитьОснования = Ложь;
НаименованияВалют = Новый Соответствие();
ЗапросВалюты = Новый Запрос;
ЗапросВалюты.Текст = "
|ВЫБРАТЬ
| Валюты.Ссылка КАК Ссылка,
| Валюты.Наименование КАК Наименование
|ИЗ
| Справочник.Валюты КАК Валюты";
ВыборкаВалюты = ЗапросВалюты.Выполнить().Выбрать();
Пока ВыборкаВалюты.Следующий() Цикл
НаименованияВалют.Вставить(ВыборкаВалюты.Ссылка, ВыборкаВалюты.Наименование);
КонецЦикла;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументКассоваяКнига.Ссылка КАК Ссылка,
| ДокументКассоваяКнига.ТипЛиста КАК ТипЛиста,
| ДокументКассоваяКнига.КоличествоДокументовНаЛисте КАК КоличествоДокументовНаЛисте,
| ДокументКассоваяКнига.Дата КАК Дата,
| ДокументКассоваяКнига.Организация КАК Организация,
| ДокументКассоваяКнига.КассоваяКнига КАК КассоваяКнига,
| ДокументКассоваяКнига.Ответственный.ФизическоеЛицо КАК Ответственный,
| ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование КАК ГлавныйБухгалтер
|ИЗ
| Документ.ЛистКассовойКниги КАК ДокументКассоваяКнига
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица
| ПО ДокументКассоваяКнига.Ссылка = ТаблицаОтветственныеЛица.Ссылка
|ГДЕ
| ДокументКассоваяКнига.Ссылка В(&МассивДокументов)
| И ДокументКассоваяКнига.Проведен
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Ссылка";
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
Результат = Запрос.Выполнить();
ВыборкаПоДокументамКассоваяКнига = Результат.Выбрать();
Пока ВыборкаПоДокументамКассоваяКнига.Следующий() Цикл
ЛистКассовойКниги = ВыборкаПоДокументамКассоваяКнига.Ссылка;
ДатаНач = НачалоДня(ВыборкаПоДокументамКассоваяКнига.Дата);
ДатаКон = КонецДня(ВыборкаПоДокументамКассоваяКнига.Дата);
ГраницаКон = Новый Граница(ДатаКон, ВидГраницы.Включая);
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Организация = ВыборкаПоДокументамКассоваяКнига.Организация;
КассоваяКнига = ВыборкаПоДокументамКассоваяКнига.КассоваяКнига;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
ВалютаРеглУчетаНаименованиеПолное = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВалютаРегламентированногоУчета, "НаименованиеПолное");
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЛистКассовойКниги.ПФ_MXL_ЛистКассовойКниги");
ОбластьВалОстатокОтчет = Макет.ПолучитьОбласть("ВалОстаток|Отчет");
ОбластьПодвалОтчет = Макет.ПолучитьОбласть("Подвал|Отчет");
ОбластьВТомЧислеОтчет = Макет.ПолучитьОбласть("ВТомЧисле|Отчет");
ОбластьОстатокОтчет = Макет.ПолучитьОбласть("Остаток|Отчет");
ОбластьЛистовЗаМесяцОтчет = Макет.ПолучитьОбласть("ЛистовЗаМесяц|Отчет");
ОбластьЛистовЗаГодОтчет = Макет.ПолучитьОбласть("ЛистовЗаГод|Отчет");
ОбластьВкладнойЛистОтчет = Макет.ПолучитьОбласть("ВкладнойЛист|Отчет");
ОбластьВкладнойЛист373ПОтчет = Макет.ПолучитьОбласть("ВкладнойЛист373П|Отчет");
ОбластьОтчетКассираОтчет = Макет.ПолучитьОбласть("ОтчетКассира|Отчет");
ОбластьОтчетКассира373ПОтчет = Макет.ПолучитьОбласть("ОтчетКассира373П|Отчет");
ОбластьШапкаОтчет = Макет.ПолучитьОбласть("Шапка|Отчет");
ОбластьОстатокНаНДОтчет = Макет.ПолучитьОбласть("ОстатокНаНД|Отчет");
ОбластьКурсовыеРазницыОтчет = Макет.ПолучитьОбласть("КурсовыеРазницы|Отчет");
ОбластьКурсовыеРазницыПоВалютеОтчет = Макет.ПолучитьОбласть("КурсовыеРазницыПоВалюте|Отчет");
ОбластьПереносОтчет = Макет.ПолучитьОбласть("Перенос|Отчет");
ОбластьСтрокаВалШирокаяОтчет = Макет.ПолучитьОбласть("СтрокаВалШирокая|Отчет");
ОбластьСтрокаВалОтчет = Макет.ПолучитьОбласть("СтрокаВал|Отчет");
ОбластьСтрокаШирокаяОтчет = Макет.ПолучитьОбласть("СтрокаШирокая|Отчет");
ОбластьСтрокаОтчет = Макет.ПолучитьОбласть("Строка|Отчет");
ОбластьОборотОтчет = Макет.ПолучитьОбласть("Оборот|Отчет");
ОбластьОборотРубОтчет = Макет.ПолучитьОбласть("ОборотРуб|Отчет");
ОбластьОборотВалОтчет = Макет.ПолучитьОбласть("ОборотВал|Отчет");
ОбластьКурсоваяРазницаОтчет = Макет.ПолучитьОбласть("КурсоваяРазница|Отчет");
ОбластьКурсоваяРазницаПоВалютеОтчет = Макет.ПолучитьОбласть("КурсоваяРазницаПоВалюте|Отчет");
ОбластьКонечныйОстатокОтчет = Макет.ПолучитьОбласть("КонечныйОстаток|Отчет");
ЗапросПоИтогам = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| Кассы.Ссылка КАК Касса
|ПОМЕСТИТЬ Кассы
|ИЗ
| Справочник.Кассы КАК Кассы
|ГДЕ
| Кассы.Владелец = &Организация
| И Кассы.КассоваяКнига = &КассоваяКнига
|;
|
|
|ВЫБРАТЬ
| ДенежныеСредстваНаличныеОстатки.Касса.ВалютаДенежныхСредств КАК Валюта,
| ДенежныеСредстваНаличныеОстатки.Касса.ВалютаДенежныхСредств.НаименованиеПолное КАК ВалютаНаименованиеПолное,
| СУММА(ДенежныеСредстваНаличныеОстатки.СуммаРеглОстаток) КАК СуммаНачальныйОстатокДт,
| СУММА(ВЫБОР КОГДА ДенежныеСредстваНаличныеОстатки.Касса.ВалютаДенежныхСредств = &ВалютаРеглУчета ТОГДА
| 0
| ИНАЧЕ
| ДенежныеСредстваНаличныеОстатки.СуммаОстаток
| КОНЕЦ) КАК ВалютнаяСуммаНачальныйОстатокДт
|ИЗ
| РегистрНакопления.ДенежныеСредстваНаличные.Остатки(
| &ДатаНач,
| Организация = &Организация
| И Касса В (ВЫБРАТЬ Кассы.Касса ИЗ Кассы)) КАК ДенежныеСредстваНаличныеОстатки
|СГРУППИРОВАТЬ ПО
| ДенежныеСредстваНаличныеОстатки.Касса.ВалютаДенежныхСредств
|УПОРЯДОЧИТЬ ПО
| Валюта
|АВТОУПОРЯДОЧИВАНИЕ
|;
|
|
|ВЫБРАТЬ
| ДенежныеСредстваНаличныеОстатки.Касса.ВалютаДенежныхСредств КАК Валюта,
| ДенежныеСредстваНаличныеОстатки.Касса.ВалютаДенежныхСредств.НаименованиеПолное КАК ВалютаНаименованиеПолное,
| СУММА(ДенежныеСредстваНаличныеОстатки.СуммаРеглОстаток) КАК СуммаОстаток,
| СУММА(ВЫБОР КОГДА ДенежныеСредстваНаличныеОстатки.Касса.ВалютаДенежныхСредств = &ВалютаРеглУчета ТОГДА
| 0
| ИНАЧЕ
| ДенежныеСредстваНаличныеОстатки.СуммаОстаток
| КОНЕЦ) КАК ВалютнаяСуммаОстаток
|ИЗ
| РегистрНакопления.ДенежныеСредстваНаличные.Остатки(
| &ГраницаКон,
| Организация = &Организация
| И Касса В (ВЫБРАТЬ Кассы.Касса ИЗ Кассы)) КАК ДенежныеСредстваНаличныеОстатки
|СГРУППИРОВАТЬ ПО
| ДенежныеСредстваНаличныеОстатки.Касса.ВалютаДенежныхСредств
|УПОРЯДОЧИТЬ ПО
| Валюта
|АВТОУПОРЯДОЧИВАНИЕ
|";
ЗапросПоИтогам.Текст = ТекстЗапроса;
ЗапросПоИтогам.УстановитьПараметр("ДатаНач", ДатаНач);
ЗапросПоИтогам.УстановитьПараметр("ДатаКон", ДатаКон);
ЗапросПоИтогам.УстановитьПараметр("ГраницаКон", ГраницаКон);
ЗапросПоИтогам.УстановитьПараметр("Организация", Организация);
ЗапросПоИтогам.УстановитьПараметр("КассоваяКнига", КассоваяКнига);
ЗапросПоИтогам.УстановитьПараметр("ВалютаРеглУчета", ВалютаРегламентированногоУчета);
МассивРезультатов = ЗапросПоИтогам.ВыполнитьПакет();
РезультатЗапросаПоИтогамНаНачало = МассивРезультатов[1];
РезультатЗапросаПоИтогам = МассивРезультатов[2];
ЗапросПоКурсовымРазницам = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| ДенежныеСредства.Касса.ВалютаДенежныхСредств КАК Валюта,
| ДенежныеСредства.Касса.ВалютаДенежныхСредств.НаименованиеПолное КАК ВалютаНаименованиеПолное,
| СУММА(
| ВЫБОР КОГДА ДенежныеСредства.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
| ДенежныеСредства.СуммаРегл
| КОГДА ДенежныеСредства.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| -ДенежныеСредства.СуммаРегл
| КОНЕЦ
| ) КАК СуммаКурсовойРазницы
|ИЗ
| РегистрНакопления.ДенежныеСредстваНаличные КАК ДенежныеСредства
|
|ГДЕ
| ДенежныеСредства.Период МЕЖДУ &ДатаНач И &ДатаКон
| И ДенежныеСредства.Организация = &Организация
| И ДенежныеСредства.Касса.КассоваяКнига = &КассоваяКнига
| И ДенежныеСредства.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КурсовыеРазницыДСПрибыль),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КурсовыеРазницыДСУбыток))
| И ДенежныеСредства.СуммаРегл <> 0
|
|СГРУППИРОВАТЬ ПО
| ДенежныеСредства.Касса.ВалютаДенежныхСредств
|
|УПОРЯДОЧИТЬ ПО
| Валюта
|ИТОГИ
| СУММА(СуммаКурсовойРазницы)
|ПО
| ОБЩИЕ,
| Валюта
|";
ЗапросПоКурсовымРазницам.Текст = ТекстЗапроса;
ЗапросПоКурсовымРазницам.УстановитьПараметр("ДатаНач",ДатаНач);
ЗапросПоКурсовымРазницам.УстановитьПараметр("ДатаКон", ДатаКон);
ЗапросПоКурсовымРазницам.УстановитьПараметр("Организация",Организация);
ЗапросПоКурсовымРазницам.УстановитьПараметр("КассоваяКнига", КассоваяКнига);
РезультатЗапросаПоКурсовымРазницам = ЗапросПоКурсовымРазницам.Выполнить();
ДатаНач = НачалоДня(ВыборкаПоДокументамКассоваяКнига.Дата);
ЗапросПоДокументам = Новый Запрос("
|ВЫБРАТЬ
| КассоваяКнигаДокументы.Документ КАК Документ,
| ЕСТЬNULL(КассоваяКнигаДокументы.Приход, 0) КАК Приход,
| ЕСТЬNULL(КассоваяКнигаДокументы.Расход, 0) КАК Расход,
| КассоваяКнигаДокументы.КорреспондирующийСчет КАК Счет,
| КассоваяКнигаДокументы.НомерЛиста КАК НомерЛиста,
| КассоваяКнигаДокументы.НомерСтроки КАК НомерСтроки,
| ДанныеДокумента.ТипЛиста КАК ТипЛиста,
| КассоваяКнигаДокументы.Валюта КАК Валюта
|ПОМЕСТИТЬ ДанныеКассовойКниги
|ИЗ
| Документ.ЛистКассовойКниги КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЛистКассовойКниги.КассовыеОрдера КАК КассоваяКнигаДокументы
| ПО ДанныеДокумента.Ссылка = КассоваяКнигаДокументы.Ссылка
|ГДЕ
| ДанныеДокумента.Дата МЕЖДУ &ДатаНач И &ДатаКон
| И ДанныеДокумента.Организация = &Организация
| И ДанныеДокумента.Ссылка = &ЛистКассовойКниги
| И ДанныеДокумента.Проведен
| И КассоваяКнигаДокументы.Документ <> НЕОПРЕДЕЛЕНО
|;
|
|
|ВЫБРАТЬ
| ДанныеКассовойКниги.Документ КАК Документ,
| НАЧАЛОПЕРИОДА(ПриходныйКассовыйОрдер.Дата, ДЕНЬ) КАК День,
| ПриходныйКассовыйОрдер.Дата КАК ДатаДок,
| ПриходныйКассовыйОрдер.Номер КАК НомерДок,
| ПриходныйКассовыйОрдер.Валюта КАК Валюта,
| ПОДСТРОКА(ПриходныйКассовыйОрдер.Основание, 1, 200) КАК Основание,
| ПриходныйКассовыйОрдер.ПринятоОт КАК ТекстДок,
| ДанныеКассовойКниги.Приход КАК Приход,
| ДанныеКассовойКниги.Расход КАК Расход,
| ДанныеКассовойКниги.Счет КАК Счет,
| ДанныеКассовойКниги.НомерЛиста КАК НомерЛиста,
| ДанныеКассовойКниги.НомерСтроки КАК НомерСтроки,
| ДанныеКассовойКниги.ТипЛиста КАК ТипЛиста
|ИЗ
| ДанныеКассовойКниги КАК ДанныеКассовойКниги
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
| ПО ДанныеКассовойКниги.Документ = ПриходныйКассовыйОрдер.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеКассовойКниги.Документ,
| НАЧАЛОПЕРИОДА(РасходныйКассовыйОрдер.Дата, ДЕНЬ),
| РасходныйКассовыйОрдер.Дата,
| РасходныйКассовыйОрдер.Номер,
| РасходныйКассовыйОрдер.Валюта,
| ПОДСТРОКА(РасходныйКассовыйОрдер.Основание, 1, 200),
| РасходныйКассовыйОрдер.Выдать,
| ДанныеКассовойКниги.Приход,
| ДанныеКассовойКниги.Расход,
| ДанныеКассовойКниги.Счет,
| ДанныеКассовойКниги.НомерЛиста,
| ДанныеКассовойКниги.НомерСтроки,
| ДанныеКассовойКниги.ТипЛиста
|ИЗ
| ДанныеКассовойКниги КАК ДанныеКассовойКниги
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
| ПО ДанныеКассовойКниги.Документ = РасходныйКассовыйОрдер.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеКассовойКниги.Документ,
| НАЧАЛОПЕРИОДА(Инвентаризация.Дата, ДЕНЬ),
| Инвентаризация.Дата,
| Инвентаризация.Номер,
| ДанныеКассовойКниги.Валюта,
| """",
| &Недостача,
| 0,
| ДанныеКассовойКниги.Расход,
| ДанныеКассовойКниги.Счет,
| ДанныеКассовойКниги.НомерЛиста,
| ДанныеКассовойКниги.НомерСтроки,
| ДанныеКассовойКниги.ТипЛиста
|ИЗ
| ДанныеКассовойКниги КАК ДанныеКассовойКниги
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ИнвентаризацияНаличныхДенежныхСредств КАК Инвентаризация
| ПО ДанныеКассовойКниги.Документ = Инвентаризация.Ссылка
| И (ДанныеКассовойКниги.Расход > 0)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеКассовойКниги.Документ,
| НАЧАЛОПЕРИОДА(Инвентаризация.Дата, ДЕНЬ),
| Инвентаризация.Дата,
| Инвентаризация.Номер,
| ДанныеКассовойКниги.Валюта,
| """",
| &Излишек,
| ДанныеКассовойКниги.Приход,
| 0,
| ДанныеКассовойКниги.Счет,
| ДанныеКассовойКниги.НомерЛиста,
| ДанныеКассовойКниги.НомерСтроки,
| ДанныеКассовойКниги.ТипЛиста
|ИЗ
| ДанныеКассовойКниги КАК ДанныеКассовойКниги
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ИнвентаризацияНаличныхДенежныхСредств КАК Инвентаризация
| ПО ДанныеКассовойКниги.Документ = Инвентаризация.Ссылка
| И (ДанныеКассовойКниги.Приход > 0)
|
|УПОРЯДОЧИТЬ ПО
| День,
| НомерЛиста,
| НомерСтроки
|ИТОГИ
| СУММА(Приход),
| СУММА(Расход),
| МИНИМУМ(НомерЛиста)
|ПО
| День,
| НомерСтроки");
ЗапросПоДокументам.УстановитьПараметр("ДатаНач", ДатаНач);
ЗапросПоДокументам.УстановитьПараметр("ДатаКон", ДатаКон);
ЗапросПоДокументам.УстановитьПараметр("Организация", Организация);
ЗапросПоДокументам.УстановитьПараметр("ЛистКассовойКниги", ВыборкаПоДокументамКассоваяКнига.Ссылка);
ЗапросПоДокументам.УстановитьПараметр("Недостача", НСтр("ru = 'Недостача, выявленная при инвентаризации денежных средств'"));
ЗапросПоДокументам.УстановитьПараметр("Излишек", НСтр("ru = 'Излишки, выявленные при инвентаризации денежных средств'"));
РезультатЗапросаПоДокументам = ЗапросПоДокументам.Выполнить();
ТаблицаДокументы = РезультатЗапросаПоДокументам.Выгрузить();
ТаблицаДокументы.Очистить();
ТаблицаДокументы.Колонки.Добавить("СтрокаСчет");
ТаблицаДокументы.Колонки.Добавить("Валютный");
ТаблицаДокументы.Колонки.Добавить("ВидДокумента");
ТипСумма = ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля();
РабочаяТаблица = Новый ТаблицаЗначений;
РабочаяТаблица.Колонки.Добавить("Валюта",Новый ОписаниеТипов("СправочникСсылка.Валюты"));
РабочаяТаблица.Колонки.Добавить("ВалютаНаименованиеПолное");
РабочаяТаблица.Колонки.Добавить("ВалОстаток",ТипСумма);
РабочаяТаблица.Колонки.Добавить("Остаток", ТипСумма);
РабочаяТаблица.Колонки.Добавить("ВалПриход", ТипСумма);
РабочаяТаблица.Колонки.Добавить("Приход", ТипСумма);
РабочаяТаблица.Колонки.Добавить("ВалРасход", ТипСумма);
РабочаяТаблица.Колонки.Добавить("Расход", ТипСумма);
РабочаяТаблица.Индексы.Добавить("Валюта");
ВыборкаПоВалюте = РезультатЗапросаПоИтогамНаНачало.Выбрать();
Пока ВыборкаПоВалюте.Следующий() Цикл
Строка = РабочаяТаблица.Добавить();
Если ВыборкаПоВалюте.Валюта = ВалютаРегламентированногоУчета Тогда
Строка.Валюта = Справочники.Валюты.ПустаяСсылка();
Иначе
Строка.Валюта = ВыборкаПоВалюте.Валюта;
Строка.ВалютаНаименованиеПолное = ВыборкаПоВалюте.ВалютаНаименованиеПолное
КонецЕсли;
Строка.Остаток = ВыборкаПоВалюте.СуммаНачальныйОстатокДт;
Строка.ВалОстаток = ВыборкаПоВалюте.ВалютнаяСуммаНачальныйОстатокДт;
КонецЦикла;
РабочаяТаблица.Свернуть("Валюта, ВалютаНаименованиеПолное", "ВалОстаток, Остаток, ВалПриход, Приход, ВалРасход, Расход");
РабочаяТаблица.Сортировать("Валюта");
ТаблицаОстатков = Новый ТаблицаЗначений;
ТаблицаОстатков.Колонки.Добавить("Валюта",Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ТаблицаОстатков.Колонки.Добавить("ВалютаНаименованиеПолное");
ТаблицаОстатков.Колонки.Добавить("ВалОстаток",ТипСумма);
ТаблицаОстатков.Колонки.Добавить("Остаток", ТипСумма);
ТаблицаОстатков.Индексы.Добавить("Валюта");
Выборка = РезультатЗапросаПоИтогам.Выбрать();
Пока Выборка.Следующий() Цикл
Строка = ТаблицаОстатков.Добавить();
Если Выборка.Валюта = ВалютаРегламентированногоУчета Тогда
Строка.Валюта = Справочники.Валюты.ПустаяСсылка();
Иначе
Строка.Валюта = Выборка.Валюта;
Строка.ВалютаНаименованиеПолное = Выборка.ВалютаНаименованиеПолное;
КонецЕсли;
Строка.Остаток = Выборка.СуммаОстаток;
Строка.ВалОстаток = Выборка.ВалютнаяСуммаОстаток;
КонецЦикла;
ТаблицаОстатков.Свернуть("Валюта, ВалютаНаименованиеПолное", "ВалОстаток, Остаток");
ТаблицаОстатков.Сортировать("Валюта");
ВыборкаДокументовПоДням = РезультатЗапросаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"День");
ВыборкаДокументовПоДням.Следующий();
ПоДокументам = Истина;
ВывестиПодвал = Ложь;
СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(Организация, КонецДня(ДатаНач));
ТипПКО = Тип("ДокументСсылка.ПриходныйКассовыйОрдер");
ТипРКО = Тип("ДокументСсылка.РасходныйКассовыйОрдер");
Пока ПоДокументам Цикл
ДатаЛиста = ДатаНач;
КоличествоПриходныхДокументов = 0;
КоличествоРасходныхДокументов = 0;
СчетКурсовыхРазниц = "91";
ДатаДействияПриказа373П = Дата('20120101');
Остаток = РабочаяТаблица.Итог("Остаток");
Если ДатаЛиста >= ДатаНач Тогда
Если ДатаЛиста < ДатаДействияПриказа373П Тогда
ЗаголовокЛиста = НСтр("ru='КАССА за'") + " " + Формат(ДатаЛиста, "ДЛФ=D");
ОбластьВкладнойЛистОтчет.Параметры.ЗаголовокЛиста = ЗаголовокЛиста;
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент,
Макет, ОбластьВкладнойЛистОтчет, ВыборкаПоДокументамКассоваяКнига.Ссылка);
ТабличныйДокумент.Вывести(ОбластьВкладнойЛистОтчет);
ОбластьОтчетКассираОтчет.Параметры.ЗаголовокЛиста = ЗаголовокЛиста;
ТабличныйДокумент.Присоединить(ОбластьОтчетКассираОтчет);
ОбластьШапкаОтчет.Параметры.ТекстНомерЛиста = "Лист " + ВыборкаДокументовПоДням.НомерЛиста;
Иначе
ЗаголовокЛиста = НСтр("ru='КАССА за'") + " " + Формат(ДатаЛиста, "ДЛФ=DD");
ТекстНомерЛиста = НСтр("ru='Лист'") + " " + ВыборкаДокументовПоДням.НомерЛиста;
ОбластьВкладнойЛист373ПОтчет.Параметры.ЗаголовокЛиста = ЗаголовокЛиста;
ОбластьВкладнойЛист373ПОтчет.Параметры.ТекстНомерЛиста = ТекстНомерЛиста;
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент,
Макет, ОбластьВкладнойЛист373ПОтчет, ВыборкаПоДокументамКассоваяКнига.Ссылка);
ТабличныйДокумент.Вывести(ОбластьВкладнойЛист373ПОтчет);
ОбластьОтчетКассира373ПОтчет.Параметры.ЗаголовокЛиста = ЗаголовокЛиста;
ОбластьОтчетКассира373ПОтчет.Параметры.ТекстНомерЛиста = ТекстНомерЛиста;
ТабличныйДокумент.Присоединить(ОбластьОтчетКассира373ПОтчет);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьШапкаОтчет);
ТабличныйДокумент.Присоединить(ОбластьШапкаОтчет);
ОбластьОстатокНаНДОтчет.Параметры.ОстатокНачало = Остаток;
ТабличныйДокумент.Вывести(ОбластьОстатокНаНДОтчет);
ТабличныйДокумент.Присоединить(ОбластьОстатокНаНДОтчет);
КонецЕсли;
Если (ДатаЛиста >= ДатаНач) И (Остаток > 0) Тогда
ТабличныйДокумент.Вывести(ОбластьВТомЧислеОтчет);
ТабличныйДокумент.Присоединить(ОбластьВТомЧислеОтчет);
КонецЕсли;
Для Каждого Строка Из РабочаяТаблица Цикл
Валюта = Строка.Валюта;
РубОстаток = Строка.Остаток;
ВалОстаток = Строка.ВалОстаток;
ВалютаНаименованиеПолное = Строка.ВалютаНаименованиеПолное;
Если (Строка.Валюта = ВалютаРегламентированногоУчета) ИЛИ
(Строка.Валюта = Справочники.Валюты.ПустаяСсылка())Тогда
Если ДатаЛиста >= ДатаНач Тогда
ОбластьОстатокОтчет.Параметры.ВалютаРеглУчета = НСтр("ru='национальная валюта ('")
+ ВалютаРеглУчетаНаименованиеПолное + "):";
ОбластьОстатокОтчет.Параметры.РеглОстаток = РубОстаток;
ТабличныйДокумент.Вывести(ОбластьОстатокОтчет);
ТабличныйДокумент.Присоединить(ОбластьОстатокОтчет);
КонецЕсли;
Иначе
Если (РубОстаток <> 0) Или (ВалОстаток <> 0) Тогда
Если ДатаЛиста >= ДатаНач Тогда
ОбластьВалОстатокОтчет.Параметры.ВалютаВалУчета = НСтр("ru='иностранная валюта ('")
+ ВалютаНаименованиеПолное + "):";
ОбластьВалОстатокОтчет.Параметры.ВалОстатокРегл = РубОстаток;
ОбластьВалОстатокОтчет.Параметры.ВалОстатокВал = Формат(ВалОстаток,"ЧДЦ=2; ЧРД==")+" "
+ Строка(НаименованияВалют.Получить(Валюта));
ТабличныйДокумент.Вывести(ОбластьВалОстатокОтчет);
ТабличныйДокумент.Присоединить(ОбластьВалОстатокОтчет);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТаблицаДокументы.Очистить();
Валюты = Новый СписокЗначений;
Если ВыборкаДокументовПоДням.День = ДатаЛиста Тогда
ВыборкаНомеровСтрок = ВыборкаДокументовПоДням.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НомерСтроки");
Пока ВыборкаНомеровСтрок.Следующий() Цикл
ВыборкаДокументов = ВыборкаНомеровСтрок.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
НоваяСтрока = ТаблицаДокументы.Добавить();
НоваяСтрока.ВидДокумента = ?(ТипЗнч(ВыборкаДокументов.Документ) = ТипПКО, "ПриходныйОрдер",
?(ТипЗнч(ВыборкаДокументов.Документ) = ТипРКО, "РасходныйОрдер", "Инвентаризация"));
НоваяСтрока.Документ = ВыборкаДокументов.Документ;
НоваяСтрока.ДатаДок = ВыборкаДокументов.ДатаДок;
НоваяСтрока.День = ВыборкаДокументов.День;
НоваяСтрока.НомерДок = ВыборкаДокументов.НомерДок;
НоваяСтрока.Валюта = ВыборкаДокументов.Валюта;
НоваяСтрока.Приход = ВыборкаДокументов.Приход;
НоваяСтрока.Расход = ВыборкаДокументов.Расход;
НоваяСтрока.Основание = ВыборкаДокументов.Основание;
НоваяСтрока.ТекстДок = ВыборкаДокументов.ТекстДок;
НоваяСтрока.НомерЛиста = ВыборкаДокументов.НомерЛиста;
НоваяСтрока.Валютный = ВыборкаДокументов.Валюта <> ВалютаРегламентированногоУчета;
Если НоваяСтрока.Валютный И Валюты.НайтиПоЗначению(ВыборкаДокументов.Валюта) = Неопределено Тогда
Валюты.Добавить(ВыборкаДокументов.Валюта);
КонецЕсли;
СтрокаСчет = ВыборкаДокументов.Счет;
НоваяСтрока.СтрокаСчет = СтрокаСчет;
КонецЦикла;
КонецЦикла;
КонецЕсли;
СумПриход = 0;
СумРасход = 0;
ПерваяСтрока = 1;
ПредыдущийНомерЛиста = ВыборкаДокументовПоДням.НомерЛиста;
Для Каждого Документ Из ТаблицаДокументы Цикл
Если Документ.ВидДокумента = "ПриходныйОрдер"
Или Документ.ВидДокумента = "РасходныйОрдер"
Или Документ.ВидДокумента = "Инвентаризация"Тогда
ЕстьВалюта = Документ.Валютный;
Иначе
ЕстьВалюта = Ложь;
КонецЕсли;
Если ЕстьВалюта Тогда
Валюта = Документ.Валюта;
СтруктураКурсов = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(Валюта,Документ.ДатаДок, ВалютаРегламентированногоУчета);
Курс = СтруктураКурсов.КурсЧислитель;
Кратность = СтруктураКурсов.КурсЗнаменатель;
Кратность = ?(Кратность = 0, 1, Кратность);
Иначе
Валюта = Справочники.Валюты.ПустаяСсылка();
Курс = 1;
Кратность = 1;
КонецЕсли;
Если Документ.ВидДокумента = "РасходныйОрдер" Тогда
Клиент = НСтр("ru='Выдано'") + " " + СокрЛП(Документ.ТекстДок) + ?(ВыводитьОснования = 1, " "
+ СокрЛП(Документ.Основание), "");
КоличествоРасходныхДокументов = КоличествоРасходныхДокументов + 1;
ВалРасход = Документ.Расход;
Расход = Окр(?(Документ.Расход=null,0,Документ.Расход)*Курс/Кратность,2,1);
ВалПриход = 0;
Приход = 0;
ИначеЕсли Документ.ВидДокумента = "Инвентаризация" Тогда
Клиент = СокрЛП(Документ.ТекстДок);
Если Документ.Расход <> 0 Тогда
КоличествоРасходныхДокументов = КоличествоРасходныхДокументов + 1;
ВалРасход = Документ.Расход;
Расход = Окр(?(Документ.Расход = null, 0, Документ.Расход) * Курс / Кратность, 2, 1);
ВалПриход = 0;
Приход = 0;
Иначе
КоличествоПриходныхДокументов = КоличествоПриходныхДокументов + 1;
ВалПриход = Документ.Приход;
Приход = Окр(?(Документ.Приход = null, 0, Документ.Приход) * Курс / Кратность, 2, 1);
ВалРасход = 0;
Расход = 0;
КонецЕсли;
Иначе
Клиент = НСтр("ru='Принято от'") + " " + СокрЛП(Документ.ТекстДок) + ?(ВыводитьОснования = 1, " "
+ СокрЛП(Документ.Основание), "");
КоличествоПриходныхДокументов = КоличествоПриходныхДокументов + 1;
ВалПриход = Документ.Приход;
Приход = Окр(?(Документ.Приход=null,0,Документ.Приход)*Курс/Кратность,2,1);
ВалРасход = 0;
Расход = 0;
КонецЕсли;
НомерДокПечатнойФормы = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(
Документ.НомерДок,
Ложь,
Истина);
КоррСчет = Документ.СтрокаСчет;
Если ПредыдущийНомерЛиста <> Документ.НомерЛиста Тогда
ПриходЗаДень = РабочаяТаблица.Итог("Приход");
РасходЗаДень = РабочаяТаблица.Итог("Расход");
Если ДатаЛиста >= ДатаНач Тогда
ОбластьПереносОтчет.Параметры.ПриходЗаДень = ПриходЗаДень;
ОбластьПереносОтчет.Параметры.РасходЗаДень = РасходЗаДень;
ТабличныйДокумент.Вывести(ОбластьПереносОтчет);
ТабличныйДокумент.Присоединить(ОбластьПереносОтчет);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ОбластьШапкаОтчет.Параметры.ТекстНомерЛиста = НСтр("ru='Лист'") + " " + Документ.НомерЛиста;
ТабличныйДокумент.Вывести(ОбластьШапкаОтчет);
ТабличныйДокумент.Присоединить(ОбластьШапкаОтчет);
КонецЕсли;
ПредыдущийНомерЛиста = Документ.НомерЛиста;
КонецЕсли;
Если ДатаЛиста >= ДатаНач Тогда
Если ЕстьВалюта Тогда
НаименованиеВалюты = НаименованияВалют.Получить(Валюта);
Если ВыводитьОснования Тогда
ОбластьСтрокаВалШирокаяОтчет.Параметры.НомерДокПечатнойФормы = НомерДокПечатнойФормы;
ОбластьСтрокаВалШирокаяОтчет.Параметры.Контрагент = Клиент;
ОбластьСтрокаВалШирокаяОтчет.Параметры.КоррСчет = КоррСчет;
ОбластьСтрокаВалШирокаяОтчет.Параметры.Приход = Приход;
ОбластьСтрокаВалШирокаяОтчет.Параметры.Расход = Расход;
Если Число(ВалПриход) > 0 Тогда
ОбластьСтрокаВалШирокаяОтчет.Параметры.ВалПриход = Формат(ВалПриход,"ЧДЦ=2; ЧРД==")+" "
+ Строка(НаименованиеВалюты);
Иначе
ОбластьСтрокаВалШирокаяОтчет.Параметры.ВалПриход = "";
КонецЕсли;
Если Число(ВалРасход) > 0 Тогда
ОбластьСтрокаВалШирокаяОтчет.Параметры.ВалРасход = Формат(ВалРасход,"ЧДЦ=2; ЧРД==")+" "
+ Строка(НаименованиеВалюты);
Иначе
ОбластьСтрокаВалШирокаяОтчет.Параметры.ВалРасход = "";
КонецЕсли;
ОбластьСтрокаВалШирокаяОтчет.Параметры.Документ = Документ.Документ;
ТабличныйДокумент.Вывести(ОбластьСтрокаВалШирокаяОтчет);
ТабличныйДокумент.Присоединить(ОбластьСтрокаВалШирокаяОтчет);
Иначе
ОбластьСтрокаВалОтчет.Параметры.НомерДокПечатнойФормы = НомерДокПечатнойФормы;
ОбластьСтрокаВалОтчет.Параметры.Контрагент = Клиент;
ОбластьСтрокаВалОтчет.Параметры.КоррСчет = КоррСчет;
ОбластьСтрокаВалОтчет.Параметры.Приход = Приход;
ОбластьСтрокаВалОтчет.Параметры.Расход = Расход;
Если Число(ВалПриход) > 0 Тогда
ОбластьСтрокаВалОтчет.Параметры.ВалПриход = Формат(ВалПриход,"ЧДЦ=2; ЧРД==")+" "
+ Строка(НаименованиеВалюты);
Иначе
ОбластьСтрокаВалОтчет.Параметры.ВалПриход = "";
КонецЕсли;
Если Число(ВалРасход) > 0 Тогда
ОбластьСтрокаВалОтчет.Параметры.ВалРасход = Формат(ВалРасход,"ЧДЦ=2; ЧРД==")+" "
+ Строка(НаименованиеВалюты);
Иначе
ОбластьСтрокаВалОтчет.Параметры.ВалРасход = "";
КонецЕсли;
ОбластьСтрокаВалОтчет.Параметры.Документ = Документ.Документ;
ТабличныйДокумент.Вывести(ОбластьСтрокаВалОтчет);
ТабличныйДокумент.Присоединить(ОбластьСтрокаВалОтчет);
КонецЕсли;
Иначе
Если ВыводитьОснования Тогда
ОбластьСтрокаШирокаяОтчет.Параметры.НомерДокПечатнойФормы = НомерДокПечатнойФормы;
ОбластьСтрокаШирокаяОтчет.Параметры.Контрагент = Клиент;
ОбластьСтрокаШирокаяОтчет.Параметры.КоррСчет = КоррСчет;
ОбластьСтрокаШирокаяОтчет.Параметры.Приход = Приход;
ОбластьСтрокаШирокаяОтчет.Параметры.Расход = Расход;
ОбластьСтрокаШирокаяОтчет.Параметры.Документ = Документ.Документ;
ТабличныйДокумент.Вывести(ОбластьСтрокаШирокаяОтчет);
ТабличныйДокумент.Присоединить(ОбластьСтрокаШирокаяОтчет);
Иначе
ОбластьСтрокаОтчет.Параметры.НомерДокПечатнойФормы = НомерДокПечатнойФормы;
ОбластьСтрокаОтчет.Параметры.Контрагент = Клиент;
ОбластьСтрокаОтчет.Параметры.КоррСчет = КоррСчет;
ОбластьСтрокаОтчет.Параметры.Приход = Приход;
ОбластьСтрокаОтчет.Параметры.Расход = Расход;
ОбластьСтрокаОтчет.Параметры.Документ = Документ.Документ;
ТабличныйДокумент.Вывести(ОбластьСтрокаОтчет);
ТабличныйДокумент.Присоединить(ОбластьСтрокаОтчет);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ДобавитьОбороты(РабочаяТаблица, ВалютаРегламентированногоУчета, Валюта, ВалПриход, Приход, ВалРасход, Расход);
КонецЦикла;
ВыборкаПоКурсовымРазницам = РезультатЗапросаПоКурсовымРазницам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Валюта");
Пока ВыборкаПоКурсовымРазницам.Следующий() Цикл
Если (ВыборкаПоКурсовымРазницам.Валюта = Справочники.Валюты.ПустаяСсылка())
ИЛИ ПустаяСтрока(ВыборкаПоКурсовымРазницам.Валюта) Тогда
Продолжить;
КонецЕсли;
Если ПерваяСтрока = 1 Тогда
ТабличныйДокумент.Вывести(ОбластьКурсовыеРазницыОтчет);
ТабличныйДокумент.Присоединить(ОбластьКурсовыеРазницыОтчет);
ПерваяСтрока = 0;
КонецЕсли;
ОбластьКурсовыеРазницыПоВалютеОтчет.Параметры.НадписьКРВалюта = НСтр("ru='по'") + " " + ВыборкаПоКурсовымРазницам.Валюта;
ОбластьКурсовыеРазницыПоВалютеОтчет.Параметры.КоррСчет = "";
Если ВыборкаПоКурсовымРазницам.СуммаКурсовойРазницы > 0 Тогда
Приход = ВыборкаПоКурсовымРазницам.СуммаКурсовойРазницы;
Расход = 0;
Иначе
Приход = 0;
Расход = -ВыборкаПоКурсовымРазницам.СуммаКурсовойРазницы;
КонецЕсли;
ОбластьКурсовыеРазницыПоВалютеОтчет.Параметры.Приход = Приход;
ОбластьКурсовыеРазницыПоВалютеОтчет.Параметры.Расход = Расход;
ТабличныйДокумент.Вывести(ОбластьКурсовыеРазницыПоВалютеОтчет);
ТабличныйДокумент.Присоединить(ОбластьКурсовыеРазницыПоВалютеОтчет);
КонецЦикла;
РабочаяТаблица.Свернуть("Валюта, ВалютаНаименованиеПолное", "ВалОстаток, Остаток, ВалПриход, Приход, ВалРасход, Расход");
ПриходЗаДень = РабочаяТаблица.Итог("Приход");
РасходЗаДень = РабочаяТаблица.Итог("Расход");
Если ДатаЛиста >= ДатаНач Тогда
ОбластьОборотОтчет.Параметры.ПриходЗаДень = ПриходЗаДень;
ОбластьОборотОтчет.Параметры.РасходЗаДень = РасходЗаДень;
ТабличныйДокумент.Вывести(ОбластьОборотОтчет);
ТабличныйДокумент.Присоединить(ОбластьОборотОтчет);
Для Каждого Строка Из РабочаяТаблица Цикл
Валюта = Строка.Валюта;
ВалютаНаименованиеПолное = Строка.ВалютаНаименованиеПолное;
ВалПриходЗаДень = Строка.ВалПриход;
РубПриходЗаДень = Строка.Приход;
ВалРасходЗаДень = Строка.ВалРасход;
РубРасходЗаДень = Строка.Расход;
Если (Строка.Валюта = ВалютаРегламентированногоУчета) ИЛИ
(Строка.Валюта = Справочники.Валюты.ПустаяСсылка()) Тогда
ОбластьОборотРубОтчет.Параметры.РеглПриходЗаДень = РубПриходЗаДень;
ОбластьОборотРубОтчет.Параметры.РеглРасходЗаДень = РубРасходЗаДень;
ОбластьОборотРубОтчет.Параметры.ВалютаРеглУчета =
НСтр("ru='национальная валюта ('") + ВалютаРеглУчетаНаименованиеПолное + "):";
ТабличныйДокумент.Вывести(ОбластьОборотРубОтчет);
ТабличныйДокумент.Присоединить(ОбластьОборотРубОтчет);
Иначе
Если (ВалПриходЗаДень <> 0) Или (РубПриходЗаДень <> 0) Или
(ВалРасходЗаДень <> 0) Или (РубРасходЗаДень <> 0) Тогда
ОбластьОборотВалОтчет.Параметры.ВалютаВалУчета = НСтр("ru='иностранная валюта ('") +
ВалютаНаименованиеПолное + "):";
ОбластьОборотВалОтчет.Параметры.ВалПриходЗаДеньРегл = РубПриходЗаДень;
ОбластьОборотВалОтчет.Параметры.ВалРасходЗаДеньРегл = РубРасходЗаДень;
Если Число(ВалПриход) > 0 Тогда
ОбластьСтрокаВалОтчет.Параметры.ВалПриход = Формат(ВалПриход,"ЧДЦ=2; ЧРД==")+" "
+ Строка(НаименованияВалют.Получить(Валюта));
Иначе
ОбластьСтрокаВалОтчет.Параметры.ВалПриход = "";
КонецЕсли;
Если Число(ВалПриходЗаДень) > 0 Тогда
ОбластьОборотВалОтчет.Параметры.ВалПриходЗаДеньВал = Формат(ВалПриходЗаДень,"ЧДЦ=2; ЧРД==")+" "+Валюта;
Иначе
ОбластьОборотВалОтчет.Параметры.ВалПриходЗаДеньВал = "";
КонецЕсли;
Если Число(ВалРасходЗаДень) > 0 Тогда
ОбластьОборотВалОтчет.Параметры.ВалРасходЗаДеньВал = Формат(ВалРасходЗаДень,"ЧДЦ=2; ЧРД==")+" "+Валюта;
Иначе
ОбластьОборотВалОтчет.Параметры.ВалРасходЗаДеньВал = "";
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьОборотВалОтчет);
ТабличныйДокумент.Присоединить(ОбластьОборотВалОтчет);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПерваяСтрока = Истина;
Остаток = ТаблицаОстатков.Итог("Остаток");
Если ДатаЛиста >= ДатаНач Тогда
ОбластьКонечныйОстатокОтчет.Параметры.ОстатокКонец = Остаток;
ТабличныйДокумент.Вывести(ОбластьКонечныйОстатокОтчет);
ТабличныйДокумент.Присоединить(ОбластьКонечныйОстатокОтчет);
Если Остаток > 0 Тогда
ТабличныйДокумент.Вывести(ОбластьВТомЧислеОтчет);
ТабличныйДокумент.Присоединить(ОбластьВТомЧислеОтчет);
КонецЕсли;
Для Каждого Строка Из ТаблицаОстатков Цикл
Валюта = Строка.Валюта;
РубОстаток = Строка.Остаток;
ВалОстаток = Строка.ВалОстаток;
ВалютаНаименованиеПолное = Строка.ВалютаНаименованиеПолное;
Если (Строка.Валюта = ВалютаРегламентированногоУчета) ИЛИ
(Строка.Валюта = Справочники.Валюты.ПустаяСсылка())Тогда
Если ДатаЛиста >= ДатаНач Тогда
ОбластьОстатокОтчет.Параметры.ВалютаРеглУчета = НСтр("ru='национальная валюта ('")+
ВалютаРеглУчетаНаименованиеПолное + "):";
ОбластьОстатокОтчет.Параметры.РеглОстаток = РубОстаток;
ТабличныйДокумент.Вывести(ОбластьОстатокОтчет);
ТабличныйДокумент.Присоединить(ОбластьОстатокОтчет);
КонецЕсли;
Иначе
Если (РубОстаток <> 0) Или (ВалОстаток <> 0) Тогда
Если ДатаЛиста >= ДатаНач Тогда
ОбластьВалОстатокОтчет.Параметры.ВалютаВалУчета = НСтр("ru='иностранная валюта ('")+
ВалютаНаименованиеПолное + "):";
ОбластьВалОстатокОтчет.Параметры.ВалОстатокРегл = РубОстаток;
ОбластьВалОстатокОтчет.Параметры.ВалОстатокВал = Формат(ВалОстаток,"ЧДЦ=2; ЧРД==")+" "+
Строка(НаименованияВалют.Получить(Валюта));
ТабличныйДокумент.Вывести(ОбластьВалОстатокОтчет);
ТабличныйДокумент.Присоединить(ОбластьВалОстатокОтчет);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ОбластьПодвалОтчет.Параметры.НадписьКолПриходныхРасходных=?(КоличествоПриходныхДокументов>0,
ЧислоПрописью(КоличествоПриходныхДокументов,"НД=Ложь",",,,,,,,,0")," - ")+ НСтр("ru='приходных и'") + " "+
?(КоличествоРасходныхДокументов>0,ЧислоПрописью(КоличествоРасходныхДокументов,"НД=Ложь",",,,,,,,,0")," - ")
+ НСтр("ru='расходных получил.'");
ОбластьПодвалОтчет.Параметры.ГлБухгалтер = ВыборкаПоДокументамКассоваяКнига.ГлавныйБухгалтер;
ОбластьПодвалОтчет.Параметры.Кассир =
ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(
ВыборкаПоДокументамКассоваяКнига.Ответственный,
ВыборкаПоДокументамКассоваяКнига.Дата);
ТабличныйДокумент.Вывести(ОбластьПодвалОтчет);
ТабличныйДокумент.Присоединить(ОбластьПодвалОтчет);
КонецЕсли;
ПоДокументам = ВыборкаДокументовПоДням.Следующий();
ВывестиПодвал = Истина;
КонецЦикла;
Если ВывестиПодвал Тогда
Если ВыборкаПоДокументамКассоваяКнига.ТипЛиста = Перечисления.ТипыЛистовКассовойКниги.ПоследнийВМесяце Тогда
КоличествоЛистов = ПолучитьКоличествоЛистовКассовойКнигиЗаПериодПоОрганизации(
ВыборкаПоДокументамКассоваяКнига.Организация, ВыборкаПоДокументамКассоваяКнига.КассоваяКнига,
НачалоМесяца(ВыборкаПоДокументамКассоваяКнига.Дата),
КонецМесяца(ВыборкаПоДокументамКассоваяКнига.Дата));
ОбластьЛистовЗаМесяцОтчет.Параметры.НадписьЛистовЗаМесяц = НСтр("ru='Количество листов кассовой книги за месяц:'") + " " +
КоличествоЛистов;
ТабличныйДокумент.Вывести(ОбластьЛистовЗаМесяцОтчет);
ТабличныйДокумент.Присоединить(ОбластьЛистовЗаМесяцОтчет);
КонецЕсли;
Если ВыборкаПоДокументамКассоваяКнига.ТипЛиста = Перечисления.ТипыЛистовКассовойКниги.ПоследнийВГоду Тогда
КоличествоЛистов = ПолучитьКоличествоЛистовКассовойКнигиЗаПериодПоОрганизации(
ВыборкаПоДокументамКассоваяКнига.Организация, ВыборкаПоДокументамКассоваяКнига.КассоваяКнига,
НачалоГода(ВыборкаПоДокументамКассоваяКнига.Дата),
КонецГода(ВыборкаПоДокументамКассоваяКнига.Дата));
ОбластьЛистовЗаГодОтчет.Параметры.НадписьЛистовЗаГод = НСтр("ru='Количество листов кассовой книги за год:'") + " " +
КоличествоЛистов;
ТабличныйДокумент.Вывести(ОбластьЛистовЗаГодОтчет);
ТабличныйДокумент.Присоединить(ОбластьЛистовЗаГодОтчет);
КонецЕсли;
КонецЕсли;
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(
ТабличныйДокумент,
НомерСтрокиНачало,
ОбъектыПечати,
ВыборкаПоДокументамКассоваяКнига.Ссылка);
КонецЦикла;
ТабличныйДокумент.ТолькоПросмотр = Истина;
Возврат ТабличныйДокумент;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли