Решаем задачи по теме «Договор займа».
Надеюсь, что книжка с текстами билетов у Вас под рукой.
Условие приведу своими словами с бухгалтерского на русский, дабы не вызывать на свою голову гнев и порицание со стороны фирмы 1С за выкладывание текста билета:
Сведения об организации и её учетной политике
Наша организация — Заемщик(ОСНО, ПБУ18/2) берет кредит в валюте у стороннего Заимодавца при посредничестве Агента (сотрудник/собственная организация/подразделение). За пользование кредитом мы платим процент Агенту в зависимости от срока полезного использования в днях(формула: SxPxD, где S — фактическая сумма займа, Р — процент по договору, D — фактический срок полезного использования в днях).
При заключении договора необходимо зафиксировать следующие значения:
- Номер договора;
- Дата заключения договора;
- Заемщик, заимодавец, агент;
- Сумма договора;
- Валюта договора;
- Дата окончания договора;
- Процент годовых, выплачиваемый заимодавцу при возврате денежных средств.
Особенности отражения в учете отдельных операций
1. В БУ начисление процента отражается проводкой: Д-т 91.2, кр-т 66 (субсчет процентов) на сумму начисленного процента.
В НУ начисляемый процент включается в состав внереализационных расходов. Предельная величина процентов, признаваемая расходом по долговым обязательствам в иностранной валюте, равняется произведению ставки рефинансирования ЦБ РФ х 0.8.
Поясню насчет ставки рефинансирования: в данном случае по-хорошему надо использовать ставку рефинансирования(СР) текущего года. Я погуглил — для января-февраля 2019-ого она составляет 7.75%. Далее, из примера решения с форума Чистова и видео Ильи Леонтьева следует, что они используют в качестве процента, принимаемого к начислению по НУ процентов за пользование валютным займом 15. Начал разбираться, как он получился и пришел к выводу, что форума расчета следующая: СР 2006 года / 0.8. Таким образом, в нашем случае эта величина должна быть равна 7.75/0.8 = 9.6875. Но умные люди с форума Mista.ru подсказали, что значение самого показателя для проверяющих не критично и тут важно отразить эту постоянную разницу, чтоб было видно, что ты в теме. Потому, чтоб дальше было проще считать, я тоже буду использовать 15%.
2. Закрытие договора отражается:
Д-т 66 (с/с займа), кр-т 76 на сумму займа.
Д-т 66 (с/с процентов), кр-т 76 на сумму процента.
3. Выплата Заимодавцу заемных средств + процент:
Д-т 76, кр-т 52.
Проектная задача
Обеспечить в типовой БП3.0 реализацию следующих хозопераций: бла-бла-бла…(тут не так интересно — всё, что нужно реализовать будет в контрольном примере, от которого и будем решать).
Ну и далее отчет:
Сведения о досрочно закрытых договорах займа в период с … по ….
| Заимодавец | Агент | Договор | Фактическая дата закрытия договора | Сумма займа | Сумма начисленного процента | Валюта займа(по данным учета) |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
В отчет включить те договоры, которые были закрыты до истечения срока, установленного в договоре. В графе 4 указывается дата, когда сальдо по договору займа на счете 66 (по данным учета) стало равным нулю. В графе 5 указывается сумма займа (по данным учета). В графе 6 указывается общая сумма начисленных процентов(по данным учета) за все время пользования займом, в графе 7 — фактическая валюта займа (по данным учета).
Контрольный пример (куда мы без него!)
| № | Дата | Содержание операции | Дебет | Кредит | Сумма БУ, USD | Сумма НУ, USD в пересчете вруб. по курсу ЦБ | Чем отразим |
| 1 | 10.01.06 | Заключен договор займа на 10 000 USD (курс USD=29.2) с заимодавцем «Чистов Д.В.» (агент – сотрудник Харитонов С.А.) под 30% годовых, с 12.01.06 по 12.04.06 | Новый договор контрагента «Прочее» | ||||
| 2 | 12.01.06 | Получены денежные средства от заимодавца «Чистов Д.В.» (курс USD=29.0) | 52 | 66 с/с займа | 10 000 | Документ «Поступление на расчетный счет» | |
| 3 | Операции в конце месяца курс USD 31.01.06=28.5, курс USD 28.02.06=27.8 | Закрытие месяца | |||||
| 4 | 31.01.06 | Начисление процента за пользование займом | 91-2 | 66 с/с процента | Расчет | Процент НУ | Документ «Поступление товаров и услуг» с услугой «Агентское вознаграждение» |
| 5 | 31.01.06 28.02.06 | Переоценка валюты на счете учета займов | 91-2 | 66 с/с займа | Расчет | Расчет | Закрытие месяца |
| 6 | 31.01.06 28.02.06 | Переоценка валюты на счете учета процентов по займу | 91-2 | 66 с/с процента | Расчет | Расчет | Закрытие месяца |
| 7 | 31.01.06 28.02.06 | Отражено сальдо прочих доходов и расходов (Убыток по начисленному проценту) | 91-9 | 99 | Процент БУ | Закрытие месяца | |
| 8 | 31.01.06 28.02.06 | Отражена сумма постоянного налогового обязательства с возникшей постоянной разницы из-за частичного признания для целей налогообложения прибыли расхода по уплате процентов по договору займа | 99 | 68 | (процент БУ – Процент НУ)* 24% | ||
| 9 | Закрытие договора займа (курс USD=27.5) | ||||||
| 10 | 12.02.06 | Начисление процента за пользование займом | 91-2 | 66 | Процент | Процент | |
| 11 | 12.02.06 | Закрытие договора займа на сумму займа | 66 с/с займа | 76 | 10 000 | ||
| 12 | 12.02.06 | Закрытие договора займа на сумму начисленного процента | 66 с/с процента | 76 | Процент БУ | ||
| 13 | 14.02.06 | Перечислены денежные средства заимодавцу Чистову Д.В. (курс USD=27.6) | 76 | 52 | 10 000 + процент БУ |
Приступаем к решению!
0. Подготовительные действия.
Берем чистую базу БП3.0. У меня релиз 3.0.68.61. Он уже поддерживает расширения в полной мере, так как работает на 8.3.12, потому все доработки буду делать посредством расширений.
Первым делом я открываю конфигуратор и из него запускаю предприятие. В конфигураторе сразу же, чтоб не терять времени, запускаю создание расширения:

Согласно условию задачи, мне необходимо зафиксировать в договоре информацию:
- Номер договора;
- Дата заключения договора;
- Заемщик, заимодавец, агент;
- Сумма договора;
- Валюта договора;
- Дата окончания договора;
- Процент годовых, выплачиваемый заимодавцу при возврате денежных средств.
Я поступаю следующим образом. Фиксировать информацию буду в справочнике «Договоры контрагентов» — там есть почти всё, что мне нужно(остальное добавлю в расширении):
- Номер договора — реквизит «Номер»;
- Дата заключения договора — реквизит «Дата»;
- Заемщик, заимодавец, агент — реквизиты «Организация», «Владелец» — уже есть, а «Агента» добавлю в расширении(тип — справочник «Сотрудники»);
- Сумма договора — добавлю в расширении реквизит «Сумма договора»;
- Валюта договора — реквизит «Валюта взаиморасчетов»;
- Дата окончания договора — реквизит «Срок действия»;
- Процент годовых, выплачиваемый заимодавцу при возврате денежных средств — добавлю в расширении «Процент».

То есть я сначала экспортирую справочник «Договор контрагентов» и его основную форму в расширение, а потом в расширении создаю свои реквизиты для данного справочника и вывожу их на форму в отдельную группу. Пока ничего сложного.
В режиме предприятия на начальную страницу вывожу «Журнал операций»


Далее ввожу пошагово данные о своей организации в режиме предприятия: ввожу название, выбираю систему налогообложения(самая правая, если кто не понял) и записываю элемент. Перехожу на закладку «Учетная политика», открываю запись, которая была создана автоматически и устанавливаю настройки следующим образом:

Сталкиваюсь с первой трудностью при попытке задать банковский счет организации. Выглядит она так: «Номер счета или банк введен некорректно» 
Тут я вижу два пути решения проблемы:
1. Заучить реальный номер счета специально для экзамена(этот пригодится в любом случае, так как счет придется заводить в каждом билете). Но с другой стороны, у контрагентов тоже есть счета… Учить несколько счетов — по-моему это перебор. И экзаменаторы вряд ли засчитают этот вариант вам в плюс.
2. Найти эту злосчастную проверку и закомментировать её(нейтрализовать как-то).
Я пойду вторым путем. Но перед этим я сохраняю расширение, сняв с него лишние галки. Запускаю поиск. Вот уже находится это злосчастное место. Но, к сожалению, поиск прервать нельзя. Надо либо ждать окончания, либо завершения поиска и терять на этом время. Номер строки и название модуля записал на листке. В качестве лайфхака предлагаю следующий метод — перед началом работы сделать копию базы специально чтоб запускать в ней поиск и чтоб при этом можно было бы продолжать работу в основной подготавливаемой базе.


Ещё важный момент — корректно заполнить код валюты в номере счета, так как по нему определяется валюта в карточке счета при создании. Доллар США имеет код 840, а рубль — 810. Код валюты содержится в номере счета начиная с 6 цифры. Таким образом, счет у нас должен иметь вид 12345840….
Завершаю сеанс конфигуратора и запускаю снова. Обновляю и перезапускаю базу. В режиме предприятия добавляю новую валюту «Доллар США» в справочнике «Валюты»(«треугольник»+Все функции+Справочники+Валюты) и вношу курсы валют для неё(«Треугольник»+Регистры сведений+»Курсы валют»):

На этом начальную подготовку базы можно считать завершенной и можно приступать к вводу хозяйственных операций по контрольному примеру.
1. 10.01.19 Заключен договор займа на 10 000 USD (курс USD=29.2) с заимодавцем «Чистов Д.В.» (агент – сотрудник Харитонов С.А.) под 30% годовых, с 12.01.06 по 12.04.06
Создаю сотрудника «Харитонов С.Ю.»(Справочники+Сотрудники). Заполняю только наименование.

Создаю контрагента «Чистов Д.В.»(Справочники+Контрагенты). Указываю, что это физическое лицо. 
Для контрагента создаем договор. В договоре прописываем номер и дату договора. Дата договора будет совпадать с датой начала действия договора. Дату окончания действия договора внесу в «Срок действия» в группе «Дополнительная информация» (вношу все даты текущим годом). В группе «Расчеты» выбираем в качестве валюты взаиморасчетов «Доллар США» (реквизит «Цена в»).

2. 12.01.19 Получены денежные средства от заимодавца «Чистов Д.В.» (курс USD=29.0)
Создаю новый документ «Поступление на расчетный счет»(в журнале операций, который мы ранее вывели на начальную страницу, «Создать»+»Поступление на расчетный счет»)

3. Операции в конце месяца курс USD 31.01.06=28.5, курс USD 28.02.06=27.8
Здесь речь идёт об изменении курса валюты на конец месяца и влиянии этого на результат операции закрытия месяца. Ничего делать не нужно.
4. 31.01.19 Начисление процента за пользование займом Д-т 91-2, К-т 66 с/с процента
Отражаю начисление процентов за использование займа посредством документа «Поступление товаров и услуг»(в журнале операций «Создать»+»Поступление (акты, накладные)»+»Услуги (акт)»).
Открывается форма документа «Поступление товаров услуг». Выбираем контрагента, но оказывается, что при выборе договора мы не видим наш созданный договор в списке. Очевидно, установлен отбор на какой-то из реквизитов договора, из-за которого мы не видим наш договор в списке. Чтоб выяснить это и подкорректировать нам необходимо установить точно какая форма документа из имеющихся открывается. Включаем замер времени в режиме конфигуратора и повторяем создание документа снова. После открытия формы смотрим список вызовов. Находим нужный код:

Ставим в месте вызова точку останова и в отладке смотрим, какая форма открывается в итоге. Это форма документа «ФормаДокументаУслуги». Открываем данную форму и смотрим в элементах «Договор». У договора явно указаны параметры выбора и среди этих параметров вид договора контрагентов «Прочее» отсутствует.

Но если мы заглянем в код, то там тоже присутствует установка параметров выбора в процедуре «УстановитьПараметрыВыбора()».
Вот так выглядит процедура:

Переносим процедуру «ПолучитьМассивВидовДоговоров()» в расширение и добавляем к массиву вид договора «Прочее»: 
Перезапускаем режим предприятия с обновлением ИБ.

Наш договор займа теперь подтянулся автоматически, а, значит, всё делаем правильно.
Теперь в табличной части сначала создаем услугу «Начисление процентов по займу», а потом выбираем её. 
Для того, чтоб корректно высчитать сумму процентов, вспоминаем, что по условию задачи необходимо, чтоб начислилась сумма процентов за первый месяц использования займа начиная с 12 января в размере 30% годовых. Причем, только половина начисленной суммы будет признана расходом по НУ. Считаем по формуле: D([12.01.19, 31.01.19]) = 20; S = 10000; P = 30%. Получаем значение SxPxD/365 = 164.38. По другому можно расписать данную формулу следующим образом — за каждый день пользования займом будет начисляться 10000х30%/365. Так как только половина этой суммы признается расходом по НУ, то формируем две строки в документе(одна будет признаваться расходом в НУ, а другая — нет), т.е. по каждой строке получим 10000х30%/365/2 = 4.11. Внесем в табличную часть 4.11 в качестве цены за день пользования займом, а количество дней использования в месяце будет количеством.

Теперь указываем счет из пункта 4. контрольного примера 91.2 в каждой строке и заполняем первое субконто.



Проводим документ и убеждаемся, что проводки сформированы в соответствии с заданием:

Можем приступить к следующим пунктам.
5.1. Переоценка валюты на счете учета займов. Д-т 91-2, К-т 66 с/с займа. Операции в конце месяца курс USD 31.01.06=28.5
Здесь речь идёт о фиксации прибыли на счете 91.1 или убытка на счете 91.2 в зависимости от изменения курса валюты с момента операции(получения займа). Операция будет выполнена при закрытии месяца. Для этого переходим в раздел «Регламентные операции» + «Закрытие месяца».

Согласно изменению курса с момента операции получения займа, доллар подорожал на 50 копеек. Разница по изменению курса (0,5) * сумму займа (10 000) будет отражена как наша прибыль (Д-т 91.1, К-т 66.23).

6.1. Переоценка валюты на счете учета процентов по займу. Д-т 91-2, К-т 66 с/с займа. Операции в конце месяца курс USD 31.01.06=28.5
Здесь речь идёт о фиксации прибыли на счете 91.1 или убытка на счете 91.2 в зависимости от изменения курса валюты с момента операции(начисления процентов по займу). Операция так же будет выполнена при закрытии месяца. Но, в отличии от расчета курсовых разниц по сумме займа, операция начисления процента выполняется в конце месяца по курсу, использующемуся при закрытии. Потому данной проводки у нас не будет.
Чтоб проверить, из каких значений у нас складываются прибыль и убыток по данному счету, сформируем оборотно-сальдовую ведомость по 91 счету с детализацией по субсчетам:

Из ОСВ мы видим, что на субсчете 91.09 отражается сумма 4685.40, которая складывается из прочих расходов по процентам нашего займа(принимаемых и непринимаемых к НУ), а суммы дохода и расхода по курсовым разницам (5000) взаимно компенсируются.
7.1. Отражено сальдо прочих доходов и расходов (Убыток по начисленному проценту). Д-т 91-9, К-т 99. Операции в конце месяца курс USD 31.01.06=28.5
Закрываются 91-ые счета на 99 на убыток по начисленным процентам. В правой части отражается постоянная разница по начисленному проценту за пользование займом.

8.1. Отражена сумма постоянного налогового обязательства с возникшей постоянной разницы из-за частичного признания для целей налогообложения прибыли расхода по уплате процентов по договору займа. Д-т 99, К-т 68.
Проводка, необходимая нам в пункте 8 контрольного примера, тоже формируется автоматически при закрытии месяца.

Это самая первая проводка с ПР в п.4 «Расчет налога на прибыль» в закрытии месяца.

Чтоб понять, откуда такие проводки, откроем справку-расчет по НП(Справки-расчеты + Расчет налога на прибыль) и увидим там такую картину:

И подробно посмотрим отложенные активы и обязательства по НП(Справки-расчеты + Налоговые активы и обязательства):

9. Закрытие договора займа (курс USD=27.5).
Согласно пункту 9 договор займа у нас закрывается 12.02.19. Это значит, нам необходимо в день закрытия выполнить начисление процента за пользование займом(п.10), закрыть договор на сумму займа(п.11) и закрыть договор на сумму начисленного процента(п.12).
10. Начисление процента за пользование займом. Д-т 99, К-т 68.
Начисление процента использование займа мы уже заводили в январе документом «Поступление услуг». Поэтому просто скопируем его и изменим количество дней в обеих строках табличной части на 12(дней использования займа в феврале до его закрытия).

11. Закрытие договора займа на сумму займа. Д-т 66 с/с займа, К-т 76.
Для закрытия займа используем документ «Операция». Вручную введем проводку Д-т 66.23(«Краткосрочные займы в валюте») — К-т 76.29(«Прочие расчеты с разными дебиторами и кредиторами (в валюте)») на сумму займа.

12. Закрытие договора займа на сумму начисленного процента. Д-т 66 с/с процента, К-т 76.
Для закрытия процента используем тот же документ «Операция». Добавляем в него вторую проводку Д-т 66.24(«Проценты по краткосрочным займам в валюте») — К-т 76.29(«Прочие расчеты с разными дебиторами и кредиторами (в валюте)») на сумму процента(сумма начисленного процента за январь и февраль).

13. Перечислены денежные средства заимодавцу Чистову Д.В. (курс USD=27.6). Д-т 76, К-т 52
Перечисляем денежные средства в валюте на расчетный счет заимодавца документом «Списание с расчетного счета»:

5.2, 6.2, 7.2, 8.2. Все эти операции будут выполняться по аналогии с операциями 5.1, 6.1, 7.1 и 8.1 при закрытии месяца
На этом ввод данных контрольного примера мы завершили.
Отчет: Сведения о досрочно закрытых договорах займа в период с . . . по . . .
Сведения о досрочно закрытых договорах займа в период с … по ….
| Заимодавец | Агент | Договор | Фактическая дата закрытия договора | Сумма займа | Сумма начисленного процента |
Валюта займа (по данным учета) |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
В отчет включить те договоры, которые были закрыты до истечения срока, установленного в договоре. В графе 4 указывается дата, когда сальдо по договору займа на счете 66 (по данным учета) стало равным нулю. В графе 5 указывается сумма займа (по данным учета). В графе 6 указывается общая сумма начисленных процентов(по данным учета) за все время пользования займом, в графе 7 — фактическая валюта займа (по данным учета).
Разработка отчета
Данные будем брать из виртуальной таблицы регистра бухгалтерии «Остатки и обороты». По условию договор займа считается закрытым, когда сальдо на счете 66.23(«Краткосрочные займы в валюте») по договору будет равно нулю. День, в который сальдо обнулится и будет фактической датой закрытия договора. Следовательно, нам необходима детализация по дням. Все поля, кроме Агента будем брать из виртуальной таблицы, а агент будет взят из реквизита справочника «ДЗ_агент», который мы добавили в расширении.
Теперь, когда понятно из чего будет собираться наш отчет, напишем запрос, в котором будет отражаться наша логика выше.
Перед написанием запроса в режиме конфигуратора открываем предопределенные элементы плана счетов «Хозрасчетный» и сохраняем себе предопределенные названия нужных нам счетов (66.23, 66.24, 76.29) в текстовый файл.

КраткосрочныеЗаймыВал 66.23
ПроцентыПоКраткосрочнымЗаймамВал 66.24
ПрочиеРасчетыСРазнымиДебиторамиИКредиторамиВал 76.29
Создаем новый внешний отчет «ДоговорыЗаймаЗакрытыеДосрочно» и нажимаем в нём «Открыть схему компоновки данных». Создаем новый набор данных и пишем в нём наш запрос:
ВЫБРАТЬ
ВложенныйЗапрос.Заимодавец КАК Заимодавец,
ВложенныйЗапрос.Договор КАК Договор,
ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора КАК ФактическаяДатаЗакрытияДоговора,
ВложенныйЗапрос.Валюта КАК Валюта,
СУММА(ВложенныйЗапрос.СуммаЗайма) КАК СуммаЗайма,
СУММА(ВложенныйЗапрос.СуммаНачисленногоПроцента) КАК СуммаНачисленногоПроцента,
"" КАК Агент
{ВЫБРАТЬ
Заимодавец.*,
Договор.*,
ФактическаяДатаЗакрытияДоговора,
Валюта.*,
СуммаЗайма,
СуммаНачисленногоПроцента,
Агент}
ИЗ
(ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Период КАК ФактическаяДатаЗакрытияДоговора,
ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Заимодавец,
ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
ХозрасчетныйОстаткиИОбороты.Валюта КАК Валюта,
ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал)
ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
ИНАЧЕ 0
КОНЕЦ КАК СуммаЗайма,
ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.Счет <> ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал)
ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
ИНАЧЕ 0
КОНЕЦ КАК СуммаНачисленногоПроцента
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, , Счет В (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал), ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПроцентыПоКраткосрочнымЗаймамВал)), , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт = 0) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ПО ВложенныйЗапрос.Договор = ДоговорыКонтрагентов.Ссылка
ГДЕ
ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора < ДоговорыКонтрагентов.СрокДействия
{ГДЕ
(ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ))}
СГРУППИРОВАТЬ ПО
ВложенныйЗапрос.Заимодавец,
ВложенныйЗапрос.Договор,
ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора,
ВложенныйЗапрос.Валюта
В качеств виртуальной таблицы используем вт «ОстаткиИОбороты» регистра бухгалтерии «Хозрасчетный». Делаем соединение с таблицей справочника «Договоры контрагентов». Создаем фиктивное поле — когда мы встроим отчет в расширение там будет Агент. Указываем поля, которые должны будут выводиться в компоновке и отключаем флаг Автозаполнение.
После написания запроса добавляем вместо «» поле «ДоговорыКонтрагентов.ДЗ_Агент» и добавляем его же в поля группировки. При этом макет скд у нас «ломается» и начинает выдавать ошибку, а сам запрос выглядит так:
Далее, сохраняем внешний отчет и загружаем в расширение.
ВЫБРАТЬ
ВложенныйЗапрос.Заимодавец КАК Заимодавец,
ВложенныйЗапрос.Договор КАК Договор,
ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора КАК ФактическаяДатаЗакрытияДоговора,
ВложенныйЗапрос.Валюта КАК Валюта,
СУММА(ВложенныйЗапрос.СуммаЗайма) КАК СуммаЗайма,
СУММА(ВложенныйЗапрос.СуммаНачисленногоПроцента) КАК СуммаНачисленногоПроцента,
ДоговорыКонтрагентов.ДЗ_Агент КАК Агент
{ВЫБРАТЬ
Заимодавец.*,
Договор.*,
ФактическаяДатаЗакрытияДоговора,
Валюта.*,
СуммаЗайма,
СуммаНачисленногоПроцента,
Агент}
ИЗ
(ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Период КАК ФактическаяДатаЗакрытияДоговора,
ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Заимодавец,
ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
ХозрасчетныйОстаткиИОбороты.Валюта КАК Валюта,
ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал)
ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
ИНАЧЕ 0
КОНЕЦ КАК СуммаЗайма,
ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.Счет <> ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал)
ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
ИНАЧЕ 0
КОНЕЦ КАК СуммаНачисленногоПроцента
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, , Счет В (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал), ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПроцентыПоКраткосрочнымЗаймамВал)), , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт = 0) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ПО ВложенныйЗапрос.Договор = ДоговорыКонтрагентов.Ссылка
ГДЕ
ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора < ДоговорыКонтрагентов.СрокДействия
{ГДЕ
(ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ))}
СГРУППИРОВАТЬ ПО
ВложенныйЗапрос.Заимодавец,
ВложенныйЗапрос.Договор,
ВложенныйЗапрос.ФактическаяДатаЗакрытияДоговора,
ВложенныйЗапрос.Валюта,
ДоговорыКонтрагентов.ДЗ_Агент
Сохраняем внешний отчет и проверяем его в режиме предприятия:

Как мы видим, то, что выходит ошибка при открытии макета скд, на результат работы отчета не повлияло.
Далее, загружаем внешний отчет в расширение.
Создаем в расширении новую подсистему «Договоры займа» (раздел) и включаем в неё наш созданный отчет.
Отчет: Отчет о задержке в поступлении денежных средств по договорам займа в период с . . . по . . .
Отчет о задержке в поступлении денежных средств по договорам займа в период с . . . по . . .
| Заимодавец | Агент | Договор | Фактическая дата поступления денежных средств по договору | Сумма займа |
Валюта займа (по данным учета) |
| 1 | 2 | 3 | 4 | 5 | 6 |
| АКМ | ОГЦБ | ДЗ-64/3 | 17.03.01 | 1000 | USD |
| ДЗ-64/4 | Отсутствует |
В отчет должны быть включены сведения по тем договорам, по которым на дату начала договора не было произведено перечисления денежных средств на валютный счет организации. В случае если в периоде, за который формируется отчет, средства по договору так и не поступили, необходимо в графу 4 поместить запись «Отсутствует». Период формирования отчета задается в диалоге с пользователем.
Разработка отчета
Исходя из условий задачи, возможна ситуация, когда средства по договору так и не поступили от заимодавца, это значит, что нам необходимо будет в качестве основной использовать таблицу справочника «Договоры контрагентов». В первую очередь надо отобрать только те договоры, которые являются договорами займа(с видом «Прочее», с указанной суммой займа) за период(то есть те, дата которых попадает в заранее заданный интервал). Потом необходимо получить первую дату перечисления денежных средств по договору(дата самого первого поступления дс по счету 66.23), сумму таких поступлений и валюту. Судя по примеру из таблицы, из справочника можно брать только сам договор — остальные поля либо из виртуальной таблицы, либо не заполнены.
Таким образом, получаем в финальной выборке левое соединение справочника «Договоры контрагентов» с виртуальной таблицей регистра бухгалтерии с периодичностью день по счету процентов по краткосрочным займам в валюте, при условии, что сумма оборота по кредиту будет положительная и дата поступления дс больше даты договора.
Исходя из условий выше формируем запрос для скд. Сразу настраиваем соответствующие настройки вывода в ней и проверяем.
Текст запроса:
ВЫБРАТЬ
ДоговорыКонтрагентов.Ссылка КАК Договор,
ДоговорыКонтрагентов.Дата КАК Дата
ПОМЕСТИТЬ ДОговорыЗаймаПериода
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
ДоговорыКонтрагентов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ХозрасчетныйОбороты.Субконто1 КАК Заимодавец,
ДОговорыЗаймаПериода.Договор КАК Договор,
"" КАК Агент,
ЕстьNull(МИНИМУМ(ХозрасчетныйОбороты.Период),"Отсутствует") КАК ДатаФактическогоПолученияДенежныхСредств,
СУММА(ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт) КАК СуммаЗайма,
ХозрасчетныйОбороты.Валюта КАК Валюта
{ВЫБРАТЬ
Заимодавец.*,
Договор.*,
Агент,
ДатаФактическогоПолученияДенежныхСредств,
СуммаЗайма,
Валюта.*}
ИЗ
ДОговорыЗаймаПериода КАК ДОговорыЗаймаПериода
Левое СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал), , , , ) КАК ХозрасчетныйОбороты
ПО ДОговорыЗаймаПериода.Договор = ХозрасчетныйОбороты.Субконто2
СГРУППИРОВАТЬ ПО
ХозрасчетныйОбороты.Субконто1,
ДОговорыЗаймаПериода.Договор,
ХозрасчетныйОбороты.Валюта,
ДОговорыЗаймаПериода.Дата
ИМЕЮЩИЕ
(МИНИМУМ(ХозрасчетныйОбороты.Период) > ДОговорыЗаймаПериода.Дата и СУММА(ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт)>0) или МИНИМУМ(ХозрасчетныйОбороты.Период) Есть Null
Чтоб проверить, работает ли наш отчет, меняем дату договора на более раннюю и пробуем его запустить. Получаем такой результат:

Теперь необходимо добавить условие на отбор договоров(иначе к нам будут вываливаться не только договора займа в отчет) и вывести агента по аналогии с нашим первым отчетом.
Исправляем запрос:

На ошибку скд уже не обращаем внимание и снова запускаем отчет:

Всё ок! Теперь тестируем следующим образом — меняем дату договора на прошлый год и формируем наш отчет за декабрь прошлого года:

Результат нас устраивает. Отчет готов!
Отчет: Расчет сумм агентских вознаграждений за период с…по…
Расчет сумм агентских вознаграждений за период с…по…
| Агент | Договор | Сумма займа(руб) | Количество дней |
Сумма вознаграждения |
| 1 | 2 | 3 | 4 | 5 |
| Семенов А. И. | ДЗ-64/3 | 27 456.00 | 23 | 561.00 |
| ….. | ….. | ….. | ….. |
В отчет включить всех агентов, у которых в заданный период имелись незакрытые договоры займа. Агентское вознаграждение рассчитывается по ставке 0,01% от суммы остатка займа на конец каждого дня фактического пользования займом в пересчете в рубли по курсу, установленному на соответствующий день. Период, за который рассчитывается агентское вознаграждение, задается в диалоге.
Разработка отчета
Опишем логику работы нашего отчета исходя из условий задачи:
«…В отчет включить всех агентов, у которых в заданный период имелись незакрытые договоры займа…» и «…Агентское вознаграждение рассчитывается по ставке 0,01% от суммы остатка займа на конец каждого дня фактического пользования займом в пересчете в рубли по курсу, установленному на соответствующий день…»- означает, что нам необходимо получить остаток займа на каждый день использования и по курсу на этот день пересчитать его сумма. От данной суммы взять 0,01%.
Если пытаться решить данную задачу «в лоб» построением запроса, который будет содержать все искомые данные, то мы получим неподъемный запрос и затратим множество времени на его отладку. Слава разработчикам, есть механизм СКД, который позволяет путем соединения различных наборов данных с передачей параметра из одного набора данных в другой получить необходимую выборку.
1. За основу возьмем таблицу регистра сведений «Производственный календарь»(ДанныеПроизводственногоКалендаря) — она и будет у нас основным набором данных(Дата):
ВЫБРАТЬ
ДанныеПроизводственногоКалендаря.Дата КАК Дата
{ВЫБРАТЬ
Дата}
ИЗ
РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
ДанныеПроизводственногоКалендаря.Дата МЕЖДУ &НачалоПериода И &КонецПериода
2. Во втором наборе данных(Курс) будем получать курсы всех валют на дату:
ВЫБРАТЬ
КурсыВалютСрезПоследних.Валюта КАК Валюта,
КурсыВалютСрезПоследних.Курс КАК Курс,
КурсыВалютСрезПоследних.Кратность КАК Кратность,
&Дата Как ДатаКурса
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних
3. В третьем наборе данных(ОстаткиЗаймов) будем получать остатки займов на каждый день периода в валюте:
ВЫБРАТЬ
"" КАК Агент,
ХозрасчетныйОстатки.Субконто2 КАК ДоговорЗайма,
ХозрасчетныйОстатки.Валюта КАК Валюта,
ХозрасчетныйОстатки.ВалютнаяСуммаОстатокКт КАК СуммаЗайма,
&КонецДня КАК КонецДня
{ВЫБРАТЬ
Агент,
ДоговорЗайма.*,
Валюта.*,
СуммаЗайма,
КонецДня}
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(КонецПериода(&КонецДня,День), Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КраткосрочныеЗаймыВал), , ) КАК ХозрасчетныйОстатки
Вместо агента мы так же используем фиктивное поле, пока не убедимся, что отчет у нас формируется корректно. По аналогии с предыдущими отчетами, указываем в запросе, на закладке «компоновка» все поля и отключаем флаг «Автозаполнение» для набора данных. Так выглядит соединение наших наборов данных:

Как видно из скриншота, 2. и 3. мы тоже соединяем по валюте.
Теперь зададим настройку выведя все поля в детальные записи и сформируем отчет:

Исходные данные по остаткам и курсам на каждый день у нас есть — остается только перевести их в рубли, посчитать процент и сгруппировать их по договору и агенту.
Для процента заведем вычисляемое поле:

Предусмотрим ситуацию, когда кратность будет отсутствовать, либо будет нулевая, чтоб не получить деление на ноль и добавим «Процент агента» в ресурсы «Сумма».
Добавим так же вычисляемое поле «Количество дней» со значением 1.
Добавим поле «СуммазаймаРуб», в тором выведем сумму займа в рублях.
Выведем данные поля в настройки и добавим группировку по договору займа. Выведем результат:

Как видим, осталось получить только сумму займа и вывести агента. В условии у нас нигде не оговорено, на какую дату надо брать курс для вывода суммы займа в рублях. Логично использовать один из вариантов — использовать курс на начало использования займа, либо использовать среднее значение курса. Первый вариант не вижу способа, как быстро реализовать, и, на мой взгляд, это не является принципиальной задачей построения отчета в нашем случае. Потому буду считать, что нужно использовать среднее значение курса. Потому в ресурсах скд добавлю ещё одно значение для «Суммы займа», для группировок «Договор займа» и «Агент».
Так выглядят ресурсы после настройки поля «Сумма займа (руб)»:

В настройках заменю поле «Сумма займа» на «Сумма займа (руб)».
В настройки, к группировке «Договор займа» добавлю группировку «Агент» и заменю фиктивное поле «Агент» в наборе данных 3. на «ХозрасчетныйОстатки.Субконто2.ДЗ_Агент».
Сформируем отчет:

Всё ок! Добавляем отчет в расширение и отмечаем его принадлежность к соответствующей подсистеме.
Задача решена!