ВЫБРАТЬ
СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента КАК ДоговорКонтрагента,
СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец,
СчетаУчетаРасчетовПоЗаймамИКредитам.СчетОсновногоДолга КАК СчетОсновногоДолга,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.Период КАК Период
ПОМЕСТИТЬ ВТ_Долги
ИЗ
РегистрСведений.СчетаУчетаРасчетовПоЗаймамИКредитам КАК СчетаУчетаРасчетовПоЗаймамИКредитам
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, , , {(&ВидыСубконто)}, {(Субконто1 = &Контрагент), (Субконто2 = &ДоговорКонтрагента)}) КАК ХозрасчетныйОстаткиИОбороты
ПО СчетаУчетаРасчетовПоЗаймамИКредитам.СчетОсновногоДолга = ХозрасчетныйОстаткиИОбороты.Счет
И СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента.Владелец = ХозрасчетныйОстаткиИОбороты.Субконто1
И СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента = ХозрасчетныйОстаткиИОбороты.Субконто2
ГДЕ
(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт > 0
ИЛИ ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт > 0)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента КАК ДоговорКонтрагента,
СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец,
СчетаУчетаРасчетовПоЗаймамИКредитам.СчетОсновногоДолга КАК СчетОсновногоДолга,
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
ХозрасчетныйОстаткиИОбороты.Период КАК Период
ПОМЕСТИТЬ ВТ_Проценты
ИЗ
РегистрСведений.СчетаУчетаРасчетовПоЗаймамИКредитам КАК СчетаУчетаРасчетовПоЗаймамИКредитам
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, , , {(&ВидыСубконто)}, {(Субконто1 = &Контрагент), (Субконто2 = &ДоговорКонтрагента)}) КАК ХозрасчетныйОстаткиИОбороты
ПО СчетаУчетаРасчетовПоЗаймамИКредитам.СчетУчетаПроцентов = ХозрасчетныйОстаткиИОбороты.Счет
И СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента.Владелец = ХозрасчетныйОстаткиИОбороты.Субконто1
И СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента = ХозрасчетныйОстаткиИОбороты.Субконто2
ГДЕ
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт > 0
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Долги.ДоговорКонтрагента КАК ДоговорКонтрагента,
ВТ_Долги.ДоговорКонтрагентаВладелец КАК ДоговорКонтрагентаВладелец,
ВТ_Долги.СчетОсновногоДолга КАК СчетОсновногоДолга,
ВТ_Долги.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
ВТ_Долги.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
ВТ_Проценты.СуммаОборотДт КАК СуммаОборотДт,
ВТ_Проценты.СуммаОборотДт / 2 * 100 КАК Поле1,
ВТ_Проценты.СуммаОборотДт / 2 * 100 * 365 КАК Поле2,
ВТ_Долги.Период КАК Период
ПОМЕСТИТЬ ВТ_ИТОГ
ИЗ
ВТ_Долги КАК ВТ_Долги
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Проценты КАК ВТ_Проценты
ПО ВТ_Долги.ДоговорКонтрагента = ВТ_Проценты.ДоговорКонтрагента
И ВТ_Долги.ДоговорКонтрагентаВладелец = ВТ_Проценты.ДоговорКонтрагентаВладелец
И ВТ_Долги.Период = ВТ_Проценты.Период
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_ИТОГ.Период КАК Период,
ВТ_ИТОГ.ДоговорКонтрагента КАК ДоговорКонтрагента,
ВТ_ИТОГ.ДоговорКонтрагентаВладелец КАК Контрагент,
ВТ_ИТОГ.СчетОсновногоДолга КАК Счет,
ВТ_ИТОГ.СуммаНачальныйОстатокДт КАК СальдоНаНачало,
ВТ_ИТОГ.СуммаКонечныйОстатокДт КАК СальдоНаКонец,
ВТ_ИТОГ.СуммаОборотДт КАК НачисленныеПроценты,
ВТ_ИТОГ.Поле1 КАК ПроцентнаяСтавкаДневная,
ВТ_ИТОГ.Поле2 КАК ПроцентнаяСтавкаГодовая
ИЗ
ВТ_ИТОГ КАК ВТ_ИТОГ
УПОРЯДОЧИТЬ ПО
Контрагент
Показатьотчет формируется долго, как можно оптимизировать,чтобы выполнение было более быстрое?
По теме из базы знаний
- Управляемая консоль отчетов – новый функциональный инструмент для работы с запросами и СКД в управляемых формах
- Приемы быстрой работы в EDT/Git
- База для управления базами. Монстр или Франкенштейн?
- MS SQL Server: изучаем планы запросов
- Расширяемый фреймворк на 1С, или Нюансы натягивания совы на глобус
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
можно попробовать такую оптимизацию
1.сначала из регистра СчетаУчетаРасчетовПоЗаймамИКредитам отберите учетную аналитику (один раз во временную таблицу)
2.ОДИН раз отберите данные из регистра Хозрасчетный.ОстаткиИОбороты установив в параметрах данные из п.1) (поместите в ВТ)
3.на основании этих ВТ (из п. 1 и 2) получите результирующую таблицу
1.сначала из регистра СчетаУчетаРасчетовПоЗаймамИКредитам отберите учетную аналитику (один раз во временную таблицу)
2.ОДИН раз отберите данные из регистра Хозрасчетный.ОстаткиИОбороты установив в параметрах данные из п.1) (поместите в ВТ)
3.на основании этих ВТ (из п. 1 и 2) получите результирующую таблицу
(12)
я попробовал так сократить, но расчеты начали считаться не так (Поле1 и 2)
ВЫБРАТЬ
СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента КАК ДоговорКонтрагента,
СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец,
СчетаУчетаРасчетовПоЗаймамИКредитам.СчетОсновногоДолга КАК СчетОсновногоДолга,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
ХозрасчетныйОстаткиИОбороты.Период КАК Период,
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт / 2 * 100 КАК Поле1,
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт / 2 * 100 * 365 КАК Поле2
ПОМЕСТИТЬ ВТ_ИТОГ
ИЗ
РегистрСведений.СчетаУчетаРасчетовПоЗаймамИКредитам КАК СчетаУчетаРасчетовПоЗаймамИКредитам
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, , , {(&ВидыСубконто)}, {(Субконто1 = &Контрагент), (Субконто2 = &ДоговорКонтрагента)}) КАК ХозрасчетныйОстаткиИОбороты
ПО СчетаУчетаРасчетовПоЗаймамИКредитам.СчетОсновногоДолга = ХозрасчетныйОстаткиИОбороты.Счет
И СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента.Владелец = ХозрасчетныйОстаткиИОбороты.Субконто1
И СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента = ХозрасчетныйОстаткиИОбороты.Субконто2
ГДЕ
(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт > 0
ИЛИ ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт > 0)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_ИТОГ.Период КАК Период,
ВТ_ИТОГ.ДоговорКонтрагента КАК ДоговорКонтрагента,
ВТ_ИТОГ.ДоговорКонтрагентаВладелец КАК Контрагент,
ВТ_ИТОГ.СчетОсновногоДолга КАК Счет,
ВТ_ИТОГ.СуммаНачальныйОстатокДт КАК СальдоНаНачало,
ВТ_ИТОГ.СуммаКонечныйОстатокДт КАК СальдоНаКонец,
ВТ_ИТОГ.СуммаОборотДт КАК НачисленныеПроценты,
ВТ_ИТОГ.Поле1 КАК ПроцентнаяСтавкаДневная,
ВТ_ИТОГ.Поле2 КАК ПроцентнаяСтавкаГодовая
ИЗ
ВТ_ИТОГ КАК ВТ_ИТОГ
УПОРЯДОЧИТЬ ПО
Контрагент
Показатья попробовал так сократить, но расчеты начали считаться не так (Поле1 и 2)
(19) Есть РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты
Из него мы вытягиваем СуммаОборотДт, если она больше 0 и счет равен СчетаУчетаРасчетовПоЗаймамИКредитам.СчетУчетаПроцентов
а также
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт и ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт, если они не 0 и счет равен СчетаУчетаРасчетовПоЗаймамИКредитам.СчетОсновногоДолга
Периоды регистров, конечно, должны совпадать.
Из него мы вытягиваем СуммаОборотДт, если она больше 0 и счет равен СчетаУчетаРасчетовПоЗаймамИКредитам.СчетУчетаПроцентов
а также
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт и ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт, если они не 0 и счет равен СчетаУчетаРасчетовПоЗаймамИКредитам.СчетОсновногоДолга
Периоды регистров, конечно, должны совпадать.
(19) Выбрать данные во временные таблицы можно так:
Осталось их соединить. Отдельно по счету долга, отдельно по счету процентов.
ВЫБРАТЬ
СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента КАК ДоговорКонтрагента,
СчетаУчетаРасчетовПоЗаймамИКредитам.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец,
СчетаУчетаРасчетовПоЗаймамИКредитам.СчетОсновногоДолга КАК СчетОсновногоДолга,
СчетаУчетаРасчетовПоЗаймамИКредитам.СчетУчетаПроцентов КАК СчетУчетаПроцентов
Поместить ДанныеРС
Из РегистрСведений.СчетаУчетаРасчетовПоЗаймамИКредитам КАК СчетаУчетаРасчетовПоЗаймамИКредитам
;
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент,
ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор,
ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.Период КАК Период
ПОМЕСТИТЬ ДанныеРБ
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , День, , , {(&ВидыСубконто)}, {(Субконто1 = &Контрагент), (Субконто2 = &ДоговорКонтрагента)} (Субконто1, Субконто2) В
(ВЫБРАТЬ
ДанныеРС.ДоговорКонтрагентаВладелец КАК ДоговорКонтрагентаВладелец,
ДанныеРС.ДоговорКонтрагента КАК ДоговорКонтрагента
ИЗ
ДанныеРС КАК ДанныеРС)) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт > 0
ИЛИ ХозрасчетныйОстаткиИОбороты.СуммаОборотДт > 0
ИЛИ ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт > 0)
ПоказатьОсталось их соединить. Отдельно по счету долга, отдельно по счету процентов.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот