Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. КонецПроцедуры Процедура ТестНажатие(Элемент) Печать(); КонецПроцедуры Функция Печать() Экспорт Если ТипЗнч(СсылкаНаОбъект)<>Тип("ДокументСсылка.АвансовыйОтчет") Тогда Возврат Неопределено; КонецЕсли; Макет = ПолучитьМакет("АвансовыйОтчет"); мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета"); // Запрос по Шапке. Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.Текст =" |ВЫБРАТЬ | Номер, | Дата КАК ДатаДокумента, | ФизЛицо КАК ПодотчетноеЛицо, | ФизЛицо.Представление КАК ПредставлениеПодотчетногоЛица, | Организация КАК Руководители, | Организация.Ссылка КАК Организация, | НазначениеАванса, | Подразделение, | Подразделение.Представление КАК ПредставлениеПодразделения, | Подразделение.Код КАК КодПодразделения, | ВалютаДокумента, | УчитыватьНДС, | СуммаВключаетНДС, | ВалютаДокумента, | КурсДокумента, | КратностьДокумента, | КоличествоДокументов, | КоличествоЛистов, | ВалютаДокумента.Представление КАК ПредставлениеВалюты, | СуммаДокумента КАК СуммаДокумента |ИЗ | Документ.АвансовыйОтчет КАК АвансовыйОтчет | |ГДЕ | АвансовыйОтчет.Ссылка = &ТекущийДокумент"; Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий(); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АвансовыйОтчет_АвансовыйОтчет"; // ТИТУЛЬНЫЙ ЛИСТ Если СсылкаНаОбъект.ОтражатьВУправленческомУчете Тогда //Заполним по данным управленческого учета // Получаем все остатки авансов, выданных этому подотчетнику по органиации и в валюте этого авансового отчета, на момент отчета Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация); Запрос.УстановитьПараметр("Валюта" , СсылкаНаОбъект.ВалютаДокумента); Запрос.УстановитьПараметр("ФизЛицо" , СсылкаНаОбъект.ФизЛицо); Запрос.УстановитьПараметр("ДатаОстатка", Новый Граница(СсылкаНаОбъект.МоментВремени(), ВидГраницы.Исключая)); Запрос.УстановитьПараметр("ОтражатьВБухУчете", СсылкаНаОбъект.ОтражатьВБухгалтерскомУчете); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЕСТЬNULL(ВзаиморасчетыСПодотчетнымиЛицамиОстатки.СуммаВзаиморасчетовОстаток, 0) КАК СуммаВзаиморасчетов |ИЗ | РегистрНакопления.ВзаиморасчетыСПодотчетнымиЛицами.Остатки( | &ДатаОстатка, | Организация = &Организация | И Валюта = &Валюта | И ФизЛицо = &ФизЛицо | И ВЫБОР | КОГДА &ОтражатьВБухУчете | ТОГДА РасчетныйДокумент.ОтражатьВБухгалтерскомУчете | ИЛИ РасчетныйДокумент ССЫЛКА Документ.ВыдачаДенежныхДокументов | ИНАЧЕ ИСТИНА | КОНЕЦ) КАК ВзаиморасчетыСПодотчетнымиЛицамиОстатки"; ПредыдущиеАвансы = Запрос.Выполнить().Выгрузить(); СуммаДоДокумента = ПредыдущиеАвансы.Итог("СуммаВзаиморасчетов"); // Отнимем сумму документов аванса с первой закладки // (только в случае если раньше суммы по этим документам не были включены в другой авансовый отчет! - // проверяем, чтобы сумма взаиморасчетов по документу равнялась остатку по регистру) Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация); Запрос.УстановитьПараметр("Валюта" , СсылкаНаОбъект.ВалютаДокумента); Запрос.УстановитьПараметр("ФизЛицо" , СсылкаНаОбъект.ФизЛицо); Запрос.УстановитьПараметр("ДатаОстатка", Новый Граница(СсылкаНаОбъект.Дата, ВидГраницы.Исключая)); Запрос.Текст = "ВЫБРАТЬ | ЗапросПоДокументам.ПолученоИзКассы КАК ПолученоИзКассы, | ЗапросПоДокументам.ПолученоПоБанковскимКартам КАК ПолученоПоБанковскимКартам |ИЗ |(ВЫБРАТЬ | Док.Ссылка КАК ДокументАванса, | СУММА(Док.СуммаВзаиморасчетов) КАК ПолученоИзКассы, | 0 КАК ПолученоПоБанковскимКартам |ИЗ | Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК Док |ГДЕ | Док.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Док.ДокументАванса ИЗ Документ.АвансовыйОтчет.ВыданныеАвансы КАК Док ГДЕ Док.Ссылка = &ТекущийДокумент И Док.ДокументАванса ССЫЛКА Документ.РасходныйКассовыйОрдер) |СГРУППИРОВАТЬ ПО | Док.Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Док.Ссылка, | 0, | СУММА(Док.СуммаВзаиморасчетов) |ИЗ | Документ.ПлатежноеПоручениеИсходящее.РасшифровкаПлатежа КАК Док |ГДЕ | Док.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Док.ДокументАванса ИЗ Документ.АвансовыйОтчет.ВыданныеАвансы КАК Док ГДЕ Док.Ссылка = &ТекущийДокумент И Док.ДокументАванса ССЫЛКА Документ.ПлатежноеПоручениеИсходящее) |СГРУППИРОВАТЬ ПО | Док.Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Док.Ссылка, | 0, | СУММА(Док.СуммаВзаиморасчетов) |ИЗ | Документ.ПлатежныйОрдерСписаниеДенежныхСредств.РасшифровкаПлатежа КАК Док |ГДЕ | Док.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Док.ДокументАванса ИЗ Документ.АвансовыйОтчет.ВыданныеАвансы КАК Док ГДЕ Док.Ссылка = &ТекущийДокумент И Док.ДокументАванса ССЫЛКА Документ.ПлатежныйОрдерСписаниеДенежныхСредств) |СГРУППИРОВАТЬ ПО | Док.Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Док.Ссылка, | Док.СуммаДокумента, | 0 |ИЗ | Документ.ВыдачаДенежныхДокументов КАК Док |ГДЕ | Док.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Док.ДокументАванса ИЗ Документ.АвансовыйОтчет.ВыданныеАвансы КАК Док ГДЕ Док.Ссылка = &ТекущийДокумент И Док.ДокументАванса ССЫЛКА Документ.ВыдачаДенежныхДокументов)) КАК ЗапросПоДокументам | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ | РегистрНакопления.ВзаиморасчетыСПодотчетнымиЛицами.Остатки( | &ДатаОстатка, | Валюта = &Валюта | И Организация = &Организация | И ФизЛицо = &ФизЛицо) КАК ВзаиморасчетыСПодотчетнымиЛицамиОстатки | ПО ВзаиморасчетыСПодотчетнымиЛицамиОстатки.РасчетныйДокумент = ЗапросПоДокументам.ДокументАванса |ГДЕ | ВзаиморасчетыСПодотчетнымиЛицамиОстатки.СуммаВзаиморасчетовОстаток = ЗапросПоДокументам.ПолученоИзКассы | ИЛИ ВзаиморасчетыСПодотчетнымиЛицамиОстатки.СуммаВзаиморасчетовОстаток = ЗапросПоДокументам.ПолученоПоБанковскимКартам"; ТаблицаПолученныхАвансов = Запрос.Выполнить().Выгрузить(); ПолученоИзКассы = ТаблицаПолученныхАвансов.Итог("ПолученоИзКассы"); ПолученоПоБанковскимКартам = ТаблицаПолученныхАвансов.Итог("ПолученоПоБанковскимКартам"); ИтогоПолучено = ПолученоИзКассы + ПолученоПоБанковскимКартам; ПолученоИзКассыВВалюте = ПолученоИзКассы; ПолученоПоБанковскимКартамВВалюте = ПолученоПоБанковскимКартам; ДанныеВал = МодульВалютногоУчета.ПолучитьКурсВалюты(СсылкаНаОбъект.ВалютаДокумента, СсылкаНаОбъект.Дата); Если НЕ (СсылкаНаОбъект.ВалютаДокумента = мВалютаРегламентированногоУчета) Тогда ПолученоИзКассы = ?(СсылкаНаОбъект.КратностьДокумента <> 0, ПолученоИзКассы * СсылкаНаОбъект.КурсДокумента / СсылкаНаОбъект.КратностьДокумента, 0); ПолученоПоБанковскимКартам = ?(СсылкаНаОбъект.КратностьДокумента <> 0, ПолученоПоБанковскимКартам * СсылкаНаОбъект.КурсДокумента / СсылкаНаОбъект.КратностьДокумента, 0); ИтогоПолучено = ПолученоИзКассы + ПолученоПоБанковскимКартам; КонецЕсли; СуммаДоДокумента = СуммаДоДокумента - ПолученоИзКассы - ПолученоПоБанковскимКартам; Иначе //получим данные по регистру бухгалтерии Запрос = Новый Запрос(); Если НЕ (СсылкаНаОбъект.ВалютаДокумента = мВалютаРегламентированногоУчета) Тогда Запрос.УстановитьПараметр("Счет71", ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицамиВал); Иначе Запрос.УстановитьПараметр("Счет71", ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами); КонецЕсли; Запрос.УстановитьПараметр("Сотрудник", Шапка.ПодотчетноеЛицо); Запрос.УстановитьПараметр("Организация",Шапка.Организация); Запрос.УстановитьПараметр("ДатаИтогов", СсылкаНаОбъект.МоментВремени()); Запрос.Текст = " |ВЫБРАТЬ | ХозрасчетныйОстатки.Счет, | ХозрасчетныйОстатки.СуммаОстатокДт, | ХозрасчетныйОстатки.СуммаОстатокКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаИтогов, Счет В ИЕРАРХИИ (&Счет71), , | Организация = &Организация И Субконто1 = &Сотрудник) КАК ХозрасчетныйОстатки"; ПредыдущийАванс = Запрос.Выполнить().Выбрать(); ПредыдущийАванс.Следующий(); Перерасход = ?(ПредыдущийАванс.СуммаОстатокДт = Null, 0, ПредыдущийАванс.СуммаОстатокКт); Остаток = ?(ПредыдущийАванс.СуммаОстатокКт = Null, 0, ПредыдущийАванс.СуммаОстатокДт); ДанныеВал = МодульВалютногоУчета.ПолучитьКурсВалюты(СсылкаНаОбъект.ВалютаДокумента, СсылкаНаОбъект.Дата); СуммаДоДокумента = 0; Если НЕ ЗначениеЗаполнено(Перерасход) Тогда Перерасход = 0; Иначе СуммаДоДокумента = - Число(Перерасход); КонецЕсли; Если НЕ ЗначениеЗаполнено(Остаток) Тогда Остаток = 0; Иначе СуммаДоДокумента = Число(Остаток); КонецЕсли; МассивАвансовыхДокументов = СсылкаНаОбъект.ВыданныеАвансы.ВыгрузитьКолонку("ДокументАванса"); Запрос = Новый Запрос(); Запрос.УстановитьПараметр("МассивАвансовыхДокументов", МассивАвансовыхДокументов); Запрос.Текст = "ВЫБРАТЬ | СУММА(РасходныйКассовыйОрдер.СуммаДокумента) КАК СуммаДокумента |ИЗ | Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер |ГДЕ | РасходныйКассовыйОрдер.Ссылка В(&МассивАвансовыхДокументов) | |СГРУППИРОВАТЬ ПО | РасходныйКассовыйОрдер.Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВыдачаДенежныхДокументов.СуммаДокумента |ИЗ | Документ.ВыдачаДенежныхДокументов КАК ВыдачаДенежныхДокументов |ГДЕ | ВыдачаДенежныхДокументов.Ссылка В(&МассивАвансовыхДокументов)"; Таб = Запрос.Выполнить().Выгрузить(); ПолученоИзКассы = Число(Таб.Итог("СуммаДокумента")); Запрос = Новый Запрос(); Запрос.УстановитьПараметр("МассивАвансовыхДокументов", МассивАвансовыхДокументов); Запрос.Текст = "ВЫБРАТЬ | СУММА(ПлатежноеПоручениеИсходящее.СуммаДокумента) КАК СуммаДокумента |ИЗ | Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее |ГДЕ | ПлатежноеПоручениеИсходящее.Ссылка В(&МассивАвансовыхДокументов) | |СГРУППИРОВАТЬ ПО | ПлатежноеПоручениеИсходящее.Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | СУММА(ПлатежныйОрдерСписаниеДенежныхСредств.СуммаДокумента) |ИЗ | Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК ПлатежныйОрдерСписаниеДенежныхСредств |ГДЕ | ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка В(&МассивАвансовыхДокументов) | |СГРУППИРОВАТЬ ПО | ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка |"; Таб = Запрос.Выполнить().Выгрузить(); ПолученоПоБанковскимКартам = Число(Таб.Итог("СуммаДокумента")); ПолученоИзКассыВВалюте = ПолученоИзКассы; ПолученоПоБанковскимКартамВВалюте = ПолученоПоБанковскимКартам; КурсоваяРазница = 0; Если НЕ (СсылкаНаОбъект.ВалютаДокумента = мВалютаРегламентированногоУчета) Тогда ПолученоИзКассы = ?(СсылкаНаОбъект.КратностьДокумента <> 0, ПолученоИзКассы * СсылкаНаОбъект.КурсДокумента / СсылкаНаОбъект.КратностьДокумента, 0); ПолученоПоБанковскимКартам = ?(СсылкаНаОбъект.КратностьДокумента <> 0, ПолученоПоБанковскимКартам * СсылкаНаОбъект.КурсДокумента / СсылкаНаОбъект.КратностьДокумента, 0); ЗапросПоПроводкам = Новый Запрос(); ЗапросПоПроводкам.УстановитьПараметр("Ссылка", СсылкаНаОбъект); ЗапросПоПроводкам.УстановитьПараметр("КурсоваяРазница", Справочники.ПрочиеДоходыИРасходы.КурсовыеРазницы); ЗапросПоПроводкам.Текст = "ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1 = &КурсоваяРазница | ТОГДА ХозрасчетныйДвиженияССубконто.Сумма | ИНАЧЕ 0 | КОНЕЦ) КАК СуммаДт, | СУММА(ВЫБОР | КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1 = &КурсоваяРазница | ТОГДА ХозрасчетныйДвиженияССубконто.Сумма | ИНАЧЕ 0 | КОНЕЦ) КАК СуммаКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , Регистратор = &Ссылка) КАК ХозрасчетныйДвиженияССубконто |"; ВыборкаКР = ЗапросПоПроводкам.Выполнить().Выгрузить(); КурсоваяРазница = ВыборкаКР.Итог("СуммаДт") - ВыборкаКР.Итог("СуммаКт"); // курсовую разницу не разделяем по видам полученных средств Если ПолученоИзКассы > 0 Тогда ПолученоИзКассы = ПолученоИзКассы + КурсоваяРазница; Иначе ПолученоПоБанковскимКартам = ПолученоПоБанковскимКартам + КурсоваяРазница; КонецЕсли; КонецЕсли; ИтогоПолучено = ПолученоИзКассы + ПолученоПоБанковскимКартам; СуммаДоДокумента = СуммаДоДокумента - ИтогоПолучено; КонецЕсли; //сведения о физ. лице //Запрос.УстановитьПараметр("ФизЛицо", СсылкаНаОбъект.ФизЛицо); //Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация); //Запрос.Текст = //"ВЫБРАТЬ ПЕРВЫЕ 1 //| ПОДСТРОКА(СотрудникиОрганизаций.Код, 1, 5) КАК ТабельныйНомер, //| СотрудникиОрганизаций.ПодразделениеОрганизации, //| ПОДСТРОКА(СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код,2,2) КАК КодПодразделения, //| СотрудникиОрганизаций.ТекущаяДолжностьОрганизации КАК Должность //|ИЗ //| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций //|ГДЕ //| СотрудникиОрганизаций.Физлицо = &Физлицо //| И НЕ СотрудникиОрганизаций.ПометкаУдаления //| И СотрудникиОрганизаций.Организация = &Организация"; // //Результат = Новый Структура("ТабельныйНомер, ПодразделениеОрганизации, КодПодразделения, Должность"); //ВыборкаЗапроса = Запрос.Выполнить().Выбрать(); // //Если ВыборкаЗапроса.Следующий() Тогда // ЗаполнитьЗначенияСвойств(Результат, ВыборкаЗапроса); //Иначе // // Если в запросе ничего не нашли тогда вернем вместо табельного номера код физ.лица // Результат.ТабельныйНомер = ?(ЗначениеЗаполнено(СсылкаНаОбъект.ФизЛицо), СсылкаНаОбъект.ФизЛицо.Код, ""); //КонецЕсли; // //СведенияОФизЛице = Результат; СведенияОФизЛице = ПолныеПрава.СведенияОСотруднике(СсылкаНаОбъект.ФизЛицо, СсылкаНаОбъект.Дата, СсылкаНаОбъект.Организация); СведенияФИОФизЛица = ФормированиеПечатныхФорм.ФамилияИмяОтчество(СсылкаНаОбъект.ФизЛицо, СсылкаНаОбъект.Дата); Если СведенияФИОФизЛица.Фамилия <> "" Тогда ПодотчетноеЛицо = ПолучитьФамилиюИмяОтчество(СведенияФИОФизЛица.Фамилия, СведенияФИОФизЛица.Имя, СведенияФИОФизЛица.Отчество); Иначе ПодотчетноеЛицо = ОбщегоНазначения.ФамилияИнициалыФизЛица(Шапка.ПодотчетноеЛицо); КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("Титул"); ОбластьМакета.Параметры.Заполнить(Шапка); ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект); ОбластьМакета.Параметры.ПредставлениеПодотчетногоЛица = ПодотчетноеЛицо; ОбластьМакета.Параметры.ТабельныйНомер = СведенияОФизЛице.ТабельныйНомер; Если СсылкаНаОбъект.ОтражатьВБухгалтерскомУчете Тогда ОбластьМакета.Параметры.ПредставлениеПодразделения = СведенияОФизЛице.ПодразделениеОрганизации; КонецЕсли; ОбластьМакета.Параметры.КодПодразделения = СведенияОФизЛице.КодПодразделения; ОбластьМакета.Параметры.ДолжностьПодотчетногоЛицаПредставление = СведенияОФизЛице.Должность; ОбластьМакета.Параметры.ПолученоИзКассы = ПолученоИзКассы; ОбластьМакета.Параметры.ПолученоПоБанковскимКартам = ПолученоПоБанковскимКартам; Если НЕ (СсылкаНаОбъект.ВалютаДокумента = мВалютаРегламентированногоУчета) Тогда ОбластьМакета.Параметры.ПредставлениеВалютыДокумента = Шапка.ПредставлениеВалюты; ОбластьМакета.Параметры.ПолученоИзКассыВВалюте = ПолученоИзКассыВВалюте; ОбластьМакета.Параметры.ПолученоПоБанковскимКартамВВалюте = ПолученоПоБанковскимКартамВВалюте; КонецЕсли; Если СуммаДоДокумента >= 0 Тогда ОбластьМакета.Параметры.НачальныйОстаток = СуммаДоДокумента; Иначе ОбластьМакета.Параметры.НачальныйПерерасход = - СуммаДоДокумента; КонецЕсли; ОбластьМакета.Параметры.ИтогоПолучено = ИтогоПолучено; Если НЕ (СсылкаНаОбъект.ВалютаДокумента = мВалютаРегламентированногоУчета) Тогда Израсходовано = Окр(Шапка.СуммаДокумента * СсылкаНаОбъект.КурсДокумента / СсылкаНаОбъект.КратностьДокумента, 2); Если НЕ СсылкаНаОбъект.ОтражатьВУправленческомУчете Тогда Израсходовано = Израсходовано + КурсоваяРазница; КонецЕсли; Иначе Израсходовано = Шапка.СуммаДокумента; КонецЕсли; ОбластьМакета.Параметры.Израсходовано = Израсходовано; ОстатокНаКонец = СуммаДоДокумента + ИтогоПолучено - Израсходовано; Если ОстатокНаКонец >= 0 Тогда ОбластьМакета.Параметры.КонечныйОстаток = ОстатокНаКонец; Иначе ОбластьМакета.Параметры.КонечныйПерерасход = - ОстатокНаКонец; КонецЕсли; СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента); ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,"); Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Руководители, Шапка.ДатаДокумента,); Руководитель = Руководители.Руководитель; Бухгалтер = Руководители.ГлавныйБухгалтер; Кассир = Руководители.Кассир; Если НЕ (СсылкаНаОбъект.ВалютаДокумента = мВалютаРегламентированногоУчета) Тогда ДляРасчета = Шапка.СуммаДокумента * ДанныеВал.Курс / ДанныеВал.Кратность; Иначе ДляРасчета = Шапка.СуммаДокумента; КонецЕсли; ИспСумма = Окр(ДляРасчета, 2, 1); ЦелСумма = Цел(ИспСумма); КопСумма = Формат((ИспСумма - ЦелСумма) * 100, "ЧЦ=2; ЧН=00; ЧВН="); ОбластьМакета.Параметры.ИзрасходованоРуб = ЦелСумма; ОбластьМакета.Параметры.ИзрасходованоКоп = КопСумма; ОбластьМакета.Параметры.ДатаДокумента = Шапка.ДатаДокумента; ОбластьМакета.Параметры.ГлавныйБухгалтер = Бухгалтер; // ОбластьМакета.Параметры.Кассир = Кассир; ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОбОрганизации.КодПоОКПО; ОбластьМакета.Параметры.СуммаОтчетаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ИспСумма, мВалютаРегламентированногоУчета) + " (" + ЦелСумма + " руб. " + КопСумма + " коп.)"; ОбластьМакета.Параметры.ПредставлениеОрганизации = ПредставлениеОрганизации; // ОбластьМакета.Параметры.ПредставлениеГлавногоБухгалтера = Бухгалтер; ЗапросПоПроводкам = Новый Запрос(); ЗапросПоПроводкам.УстановитьПараметр("Ссылка", СсылкаНаОбъект); ЗапросПоПроводкам.Текст = " |ВЫБРАТЬ | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | СУММА(Хозрасчетный.Сумма) КАК Сумма, | МИНИМУМ(Хозрасчетный.НомерСтроки) КАК НомерСтроки |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный | |ГДЕ | Хозрасчетный.Регистратор = &Ссылка | |СГРУППИРОВАТЬ ПО | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; ВыборкаПроводок = ЗапросПоПроводкам.Выполнить().Выбрать(); Счетчик = 0; Пока ВыборкаПроводок.Следующий() Цикл Счетчик = Счетчик + 1; Если Счетчик = 9 тогда Прервать; КонецЕсли; ОбластьМакета.Параметры["СубСчетДебет" + Счетчик] = ВыборкаПроводок.СчетДт; ОбластьМакета.Параметры["СуммаДебет" + Счетчик] = ВыборкаПроводок.Сумма; ОбластьМакета.Параметры["СубСчетКредит" + Счетчик] = ВыборкаПроводок.СчетКт; ОбластьМакета.Параметры["СуммаКредит" + Счетчик] = ВыборкаПроводок.Сумма; КонецЦикла; ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); // ОБОРОТНАЯ СТОРОНА ЗапросТовары = Новый Запрос(); МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ЗапросТовары.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ЗапросТовары.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросТовары.УстановитьПараметр("Валюта", СсылкаНаОбъект.ВалютаДокумента); ЗапросТовары.УстановитьПараметр("ПустойСчет", ПланыСчетов.Хозрасчетный.ПустаяСсылка()); ЗапросТовары.Текст = " |ВЫБРАТЬ | Док.ДокументНомер, | Док.ДокументДата, | Док.НаименованиеРасхода, | Док.СчетЗатрат, | Док.СчетНДС, | Док.ПоОтчету, | Док.ПоОтчетуВВалюте, | Док.СуммаНДС, | Док.Договор |ПОМЕСТИТЬ ДанныеАвансовогоОтчета |ИЗ | |( |ВЫБРАТЬ | АвансовыйОтчет.НомерВходящегоДокумента КАК ДокументНомер, | АвансовыйОтчет.ДатаВходящегоДокумента КАК ДокументДата, | АвансовыйОтчет.ВидДокВходящий КАК НаименованиеРасхода, | АвансовыйОтчет.СчетУчетаБУ КАК СчетЗатрат, | АвансовыйОтчет.СчетУчетаНДС КАК СчетНДС, | СУММА(АвансовыйОтчет.Сумма) КАК ПоОтчету, | СУММА(АвансовыйОтчет.Сумма) КАК ПоОтчетуВВалюте, | СУММА(АвансовыйОтчет.СуммаНДС) КАК СуммаНДС, | НЕОПРЕДЕЛЕНО КАК Договор |ИЗ | Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчет | |ГДЕ | АвансовыйОтчет.Ссылка = &ТекущийДокумент | |СГРУППИРОВАТЬ ПО | АвансовыйОтчет.НомерВходящегоДокумента, | АвансовыйОтчет.ДатаВходящегоДокумента, | АвансовыйОтчет.ВидДокВходящий, | АвансовыйОтчет.СчетУчетаБУ, | АвансовыйОтчет.СчетУчетаНДС | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | АвансовыйОтчет.НомерВходящегоДокумента, | АвансовыйОтчет.ДатаВходящегоДокумента, | АвансовыйОтчет.ВидДокВходящий, | ВЫБОР | КОГДА АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом.Код = АвансовыйОтчет.СчетУчетаРасчетовПоАвансам.Код | ТОГДА АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом.Код | ИНАЧЕ ВЫБОР | КОГДА АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом = &ПустойСчет | ТОГДА """" | ИНАЧЕ АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом.Код | КОНЕЦ + ВЫБОР | КОГДА (НЕ АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом = &ПустойСчет) | И (НЕ АвансовыйОтчет.СчетУчетаРасчетовПоАвансам = &ПустойСчет) | ТОГДА "", "" | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА АвансовыйОтчет.СчетУчетаРасчетовПоАвансам = &ПустойСчет | ТОГДА """" | ИНАЧЕ АвансовыйОтчет.СчетУчетаРасчетовПоАвансам.Код | КОНЕЦ | КОНЕЦ, | НЕОПРЕДЕЛЕНО, | СУММА(АвансовыйОтчет.Сумма), | СУММА(АвансовыйОтчет.Сумма), | 0, | АвансовыйОтчет.ДоговорКонтрагента |ИЗ | Документ.АвансовыйОтчет.ОплатаПоставщикам КАК АвансовыйОтчет | |ГДЕ | АвансовыйОтчет.Ссылка = &ТекущийДокумент | |СГРУППИРОВАТЬ ПО | АвансовыйОтчет.НомерВходящегоДокумента, | АвансовыйОтчет.ДатаВходящегоДокумента, | АвансовыйОтчет.ВидДокВходящий, | ВЫБОР | КОГДА АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом.Код = АвансовыйОтчет.СчетУчетаРасчетовПоАвансам.Код | ТОГДА АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом.Код | ИНАЧЕ ВЫБОР | КОГДА АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом = &ПустойСчет | ТОГДА """" | ИНАЧЕ АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом.Код | КОНЕЦ + ВЫБОР | КОГДА (НЕ АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом = &ПустойСчет) | И (НЕ АвансовыйОтчет.СчетУчетаРасчетовПоАвансам = &ПустойСчет) | ТОГДА "", "" | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА АвансовыйОтчет.СчетУчетаРасчетовПоАвансам = &ПустойСчет | ТОГДА """" | ИНАЧЕ АвансовыйОтчет.СчетУчетаРасчетовПоАвансам.Код | КОНЕЦ | КОНЕЦ, | АвансовыйОтчет.ДоговорКонтрагента | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | АвансовыйОтчет.НомерВходящегоДокумента, | АвансовыйОтчет.ДатаВходящегоДокумента, | АвансовыйОтчет.ВидДокВходящий, | АвансовыйОтчет.СчетЗатрат, | АвансовыйОтчет.СчетУчетаНДС, | СУММА(АвансовыйОтчет.Сумма), | СУММА(АвансовыйОтчет.Сумма), | СУММА(АвансовыйОтчет.СуммаНДС), | НЕОПРЕДЕЛЕНО |ИЗ | Документ.АвансовыйОтчет.Прочее КАК АвансовыйОтчет | |ГДЕ | АвансовыйОтчет.Ссылка = &ТекущийДокумент | |СГРУППИРОВАТЬ ПО | АвансовыйОтчет.НомерВходящегоДокумента, | АвансовыйОтчет.ДатаВходящегоДокумента, | АвансовыйОтчет.ВидДокВходящий, | АвансовыйОтчет.СчетЗатрат, | АвансовыйОтчет.СчетУчетаНДС | |) КАК Док |"; ЗапросТовары.Выполнить(); // Выборка уникальных счетов учета по документам, подтверждающим расходы. ТекстЗапроса = "ВЫБРАТЬ | Договор КАК Договор, | ДокументНомер КАК ДокументНомер, | ДокументДата КАК ДокументДата, | НаименованиеРасхода КАК НаименованиеРасхода, | СчетЗатрат КАК Счет |ПОМЕСТИТЬ | СписокСчетов |ИЗ | ДанныеАвансовогоОтчета |"; Если СсылкаНаОбъект.УчитыватьНДС Тогда ТекстЗапроса = ТекстЗапроса + " |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Договор, | ДокументНомер, | ДокументДата, | НаименованиеРасхода, | СчетНДС |ИЗ | ДанныеАвансовогоОтчета |"; КонецЕсли; ЗапросТовары.Текст = ТекстЗапроса; ЗапросТовары.Выполнить(); // Свертка сумм по документам, подверждающим расходы. ЗапросТовары.Текст = "ВЫБРАТЬ | Договор КАК Договор, | ДокументНомер КАК ДокументНомер, | ДокументДата КАК ДокументДата, | НаименованиеРасхода КАК НаименованиеРасхода, | СУММА(ПоОтчету) КАК ПоОтчету, | СУММА(ПоОтчетуВВалюте) КАК ПоОтчетуВВалюте, | СУММА(СуммаНДС) КАК СуммаНДС |ИЗ | ДанныеАвансовогоОтчета | |СГРУППИРОВАТЬ ПО | Договор, | ДокументНомер, | ДокументДата, | НаименованиеРасхода | |УПОРЯДОЧИТЬ ПО | ДокументДата, | ДокументНомер |"; Товар = ЗапросТовары.Выполнить().Выбрать(); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ТабДокумент.Вывести(ОбластьМакета); // Выводим табличные части ОбластьМакета = Макет.ПолучитьОбласть("Строка"); НомерСтроки = 0; ИтогоПоОтчету = 0; ИтогоПоОтчетуВВалюте = 0; СуммаВВалюте = 0; Пока Товар.Следующий() Цикл ОбластьМакета.Параметры.Заполнить(Товар); НомерСтроки = НомерСтроки + 1; ОбластьМакета.Параметры.НомерСтроки = НомерСтроки; ОбластьМакета.Параметры.ДокументДата = Товар.ДокументДата; ОбластьМакета.Параметры.НаименованиеРасхода = СокрЛП(Товар.НаименованиеРасхода); ОбластьМакета.Параметры.ДебетСубСчета = ""; // Выборка счетов, соответствующих документу расхода. Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Договор", Товар.Договор); Запрос.УстановитьПараметр("ДокументНомер", Товар.ДокументНомер); Запрос.УстановитьПараметр("ДокументДата", Товар.ДокументДата); Запрос.УстановитьПараметр("НаименованиеРасхода", Товар.НаименованиеРасхода); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Счет |ИЗ | СписокСчетов |ГДЕ | Договор = &Договор | И ДокументНомер = &ДокументНомер | И ДокументДата = &ДокументДата | И НаименованиеРасхода = &НаименованиеРасхода |УПОРЯДОЧИТЬ ПО | Счет |"; ВыборкаСчетов = Запрос.Выполнить().Выбрать(); Пока ВыборкаСчетов.Следующий() Цикл ОбластьМакета.Параметры.ДебетСубСчета = ОбластьМакета.Параметры.ДебетСубСчета + ?(ПустаяСтрока(ОбластьМакета.Параметры.ДебетСубСчета), "", ", ") + ВыборкаСчетов.Счет; КонецЦикла; Сумма = Товар.ПоОтчету + ?(Шапка.СуммаВключаетНДС, 0, Товар.СуммаНДС); Если НЕ (Шапка.ВалютаДокумента = мВалютаРегламентированногоУчета) Тогда Сумма = ?(СсылкаНаОбъект.КратностьДокумента <> 0, Сумма * СсылкаНаОбъект.КурсДокумента / СсылкаНаОбъект.КратностьДокумента, 0); КонецЕсли; ОбластьМакета.Параметры.ПоОтчету = Сумма; ОбластьМакета.Параметры.ПоУчету = Сумма; ИтогоПоОтчету = ИтогоПоОтчету + Сумма; Если НЕ (Шапка.ВалютаДокумента = мВалютаРегламентированногоУчета) Тогда СуммаВВалюте = Товар.ПоОтчетуВВалюте + ?(Шапка.СуммаВключаетНДС, 0, Товар.СуммаНДС); ОбластьМакета.Параметры.ПоУчетуВВалюте = СуммаВВалюте; ОбластьМакета.Параметры.ПоОтчетуВВалюте = СуммаВВалюте; ИтогоПоОтчетуВВалюте = ИтогоПоОтчетуВВалюте + СуммаВВалюте; Иначе ОбластьМакета.Параметры.ПоУчетуВВалюте = 0; ОбластьМакета.Параметры.ПоОтчетуВВалюте = 0; КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; // Выводим подвал авансового отчета ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ОбластьМакета.Параметры.Заполнить(Шапка); ОбластьМакета.Параметры.ИтогоПоОтчету = ИтогоПоОтчету; ОбластьМакета.Параметры.ИтогоПоОтчетувВалюте = ИтогоПоОтчетуВВалюте; ОбластьМакета.Параметры.ИтогоПоУчету = ИтогоПоОтчету; ОбластьМакета.Параметры.ИтогоПоУчетувВалюте = ИтогоПоОтчетуВВалюте; ОбластьМакета.Параметры.ПредставлениеПодотчетногоЛица = ПодотчетноеЛицо; ТабДокумент.Вывести(ОбластьМакета); Возврат ТабДокумент; КонецФункции
{"contextData":{},"contextMarkers":[]}