ВЫБРАТЬ ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов).Агент КАК Агент, ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов).Ссылка КАК Договор, ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт КАК ВалютнаяСуммаКонечныйОстатокКт, ХозрасчетныйОстаткиИОбороты.Период КАК Период, ХозрасчетныйОстаткиИОбороты.Валюта ПОМЕСТИТЬ ГраничныеДаты ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( &Начало, &Конец, День, , Счет В (&Счет66_23), , Организация = &Организация И ВЫРАЗИТЬ(Субконто2 КАК Справочник.ДоговорыКонтрагентов).Агент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) КАК ХозрасчетныйОстаткиИОбороты ИНДЕКСИРОВАТЬ ПО Агент, Договор, Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ГраничныеДаты.Агент КАК Агент, ГраничныеДаты.Договор КАК Договор, МИНИМУМ(ГраничныеДаты.Период) КАК ДатаНачалаЗайма, МАКСИМУМ(ДОБАВИТЬКДАТЕ(ГраничныеДаты1.Период, СЕКУНДА, -1)) КАК ДатаЗавершенияЗайма ПОМЕСТИТЬ ПериодыЗаймов ИЗ ГраничныеДаты КАК ГраничныеДаты ЛЕВОЕ СОЕДИНЕНИЕ ГраничныеДаты КАК ГраничныеДаты1 ПО ГраничныеДаты.Агент = ГраничныеДаты1.Агент И ГраничныеДаты.Договор = ГраничныеДаты1.Договор И ГраничныеДаты.Период < ГраничныеДаты1.Период СГРУППИРОВАТЬ ПО ГраничныеДаты.Агент, ГраничныеДаты.Договор ИНДЕКСИРОВАТЬ ПО Агент, Договор, ДатаНачалаЗайма ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПериодыЗаймов.Агент, ПериодыЗаймов.Договор, ПериодыЗаймов.ДатаНачалаЗайма, ПериодыЗаймов.ДатаЗавершенияЗайма, ГраничныеДаты.ВалютнаяСуммаКонечныйОстатокКт, ГраничныеДаты.Валюта ПОМЕСТИТЬ ДоКурсов ИЗ ПериодыЗаймов КАК ПериодыЗаймов ЛЕВОЕ СОЕДИНЕНИЕ ГраничныеДаты КАК ГраничныеДаты ПО ПериодыЗаймов.Агент = ГраничныеДаты.Агент И ПериодыЗаймов.Договор = ГраничныеДаты.Договор И ПериодыЗаймов.ДатаНачалаЗайма = ГраничныеДаты.Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КурсыВалютСрезПоследних.Валюта, КурсыВалютСрезПоследних.Курс, КурсыВалютСрезПоследних.Кратность, &Начало КАК Период ПОМЕСТИТЬ Курсы ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&Начало, ) КАК КурсыВалютСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ КурсыВалют.Валюта, КурсыВалют.Курс, КурсыВалют.Кратность, КурсыВалют.Период ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют ГДЕ КурсыВалют.Период МЕЖДУ ДОБАВИТЬКДАТЕ(&Начало, ДЕНЬ, 1) И &Конец ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДоКурсов.Агент, ДоКурсов.Договор, ДоКурсов.ДатаНачалаЗайма, ДоКурсов.ДатаЗавершенияЗайма, ДоКурсов.ВалютнаяСуммаКонечныйОстатокКт, ДоКурсов.Валюта, Курсы.Курс, Курсы.Кратность, Курсы.Период ПОМЕСТИТЬ СКурсами ИЗ ДоКурсов КАК ДоКурсов ЛЕВОЕ СОЕДИНЕНИЕ Курсы КАК Курсы ПО ДоКурсов.Валюта = Курсы.Валюта И ДоКурсов.ДатаНачалаЗайма <= Курсы.Период И ДоКурсов.ДатаЗавершенияЗайма >= Курсы.Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СКурсами.Агент, СКурсами.Договор, СКурсами.ДатаНачалаЗайма, СКурсами.ДатаЗавершенияЗайма, СКурсами.ВалютнаяСуммаКонечныйОстатокКт, СКурсами.Валюта, СКурсами.Курс, СКурсами.Кратность, МИНИМУМ(СКурсами.Период) КАК НачалоДействияКурса, МИНИМУМ(ВЫБОР КОГДА ЕСТЬNULL(СКурсами1.Период, 0) = 0 ТОГДА СКурсами.ДатаЗавершенияЗайма ИНАЧЕ ДОБАВИТЬКДАТЕ(СКурсами1.Период, СЕКУНДА, -1) КОНЕЦ) КАК КонецДействияКурса ПОМЕСТИТЬ Итог ИЗ СКурсами КАК СКурсами ЛЕВОЕ СОЕДИНЕНИЕ СКурсами КАК СКурсами1 ПО СКурсами.Агент = СКурсами1.Агент И СКурсами.Договор = СКурсами1.Договор И СКурсами.Валюта = СКурсами1.Валюта И СКурсами.Период < СКурсами1.Период И СКурсами.ДатаЗавершенияЗайма >= СКурсами1.Период СГРУППИРОВАТЬ ПО СКурсами.ДатаНачалаЗайма, СКурсами.Агент, СКурсами.Валюта, СКурсами.ДатаЗавершенияЗайма, СКурсами.Договор, СКурсами.ВалютнаяСуммаКонечныйОстатокКт, СКурсами.Курс, СКурсами.Кратность ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Итог.Агент, Итог.Договор, Итог.ДатаНачалаЗайма, Итог.ДатаЗавершенияЗайма, Итог.ВалютнаяСуммаКонечныйОстатокКт, Итог.Валюта, Итог.Курс, Итог.Кратность, Итог.НачалоДействияКурса, Итог.КонецДействияКурса, РАЗНОСТЬДАТ(Итог.НачалоДействияКурса, Итог.КонецДействияКурса, ДЕНЬ) + 1 КАК ДнейКурс, Итог.ВалютнаяСуммаКонечныйОстатокКт * Итог.Курс / Итог.Кратность * &СтавкаВознаграждения * (РАЗНОСТЬДАТ(Итог.НачалоДействияКурса, Итог.КонецДействияКурса, ДЕНЬ) + 1) КАК ВознаграждениеАгента ИЗ Итог КАК Итог