Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 ноя 2024, 05:48

как избежать многократного завышения ресурса (остатка) при левом соединении ?

Автор Lun, 04 июл 2019, 18:43

0 Пользователей и 1 гость просматривают эту тему.

Lun

Подскажите, пожалуйста, как избежать многократного завышения ресурса при левом соединении ?
Привожу запрос цель которого сформировать остатки по дебету счета &счет_ост и выбрать для него записи по погашению, т.е. проводки Дт * (не этот счет) Кт (&счет_ост).
Запрос делает следующее:
1) формируется ВТ ОстаткиДт - таблица остатков,
2) формируется ВТ ОперацииКт - это операции по погашению,
3) формируется целевая таблица = (1) левое соединение с (2).
В итоге формируется таблица и с остатками и с проводками погашения.
Проблема в том, что исходный остаток Ост_Дт_ориг попадая в запрос (3) как поле Ост_Дт многократно суммируется столько раз, сколько присоединяется правая часть(оно и понятно - это левая таблица соединения), а мне нужно, чтобы оно не суммировалось.
Для этого я поставил в СКД роли остатков (поле Ост_Дт), у счет, субконто1, субконто2 - роль измерения.
Все остальные поля - оставил без ролей (даже регистратор, который был периодом).
Все равно остаток ост_Дт суммируется и поэтому оказывается завышенным.
Если при всем этом из запроса (3) выкинуть левое соединение, то остаток получается правильным.
Вопрос1 - Не могли бы Вы подсказать, как избежать суммирования остатков в целевом запросе ?
Вопрос2 - из всех полей остатков в СКД для проставления ролей доступны только поля запроса (3) - Ост_Дт, Ост_Кт,  Ост_ДтВ, Ост_КтВ, т.е. по именам запроса (1) эти поля для проставления ролей недоступны. Так и должно быть ?


ВЫБРАТЬ
ХозрасчетныйОстатки.Счет КАК Счет_Ост_ориг,
ХозрасчетныйОстатки.Субконто1 КАК Субконто1_ост_ориг,
ХозрасчетныйОстатки.Субконто2 КАК Субконто2_ост_ориг,
ХозрасчетныйОстатки.СуммаОстатокДт КАК Ост_Дт_ориг,
ХозрасчетныйОстатки.СуммаОстатокКт КАК Ост_Кт_ориг,
ХозрасчетныйОстатки.ВалютнаяСуммаОстатокДт КАК Ост_ДтВ_ориг,
ХозрасчетныйОстатки.ВалютнаяСуммаОстатокКт КАК Ост_КтВ_ориг
ПОМЕСТИТЬ ОстаткиДт
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатка, Счет В ИЕРАРХИИ (&счет_ост), , ) КАК ХозрасчетныйОстатки
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиДт.Счет_Ост_ориг как Счет_Ост,
ОстаткиДт.Субконто1_ост_ориг как Субконто1_ост,
ОстаткиДт.Субконто2_ост_ориг как Субконто2_ост,
ОстаткиДт.Ост_Дт_ориг как Ост_Дт,
ОстаткиДт.Ост_Кт_ориг как Ост_Кт,
ОстаткиДт.Ост_ДтВ_ориг как Ост_ДтВ,
ОстаткиДт.Ост_КтВ_ориг как Ост_КтВ,
ОперацииКт.регистратор,
ОперацииКт.СчетДт КАК СчетДт_оп,
ОперацииКт.СчетКт КАК СчетКт_оп,
ОперацииКт.СубконтоДт1 КАК СубконтоДт1_оп,
ОперацииКт.СубконтоДт2 КАК СубконтоДт2_оп,
ОперацииКт.СубконтоКт1 КАК СубконтоКт1_оп,
ОперацииКт.СубконтоКт2 КАК СубконтоКт2_оп,
ОперацииКт.Сумма_оп,
ОперацииКт.СуммаВалКт_оп
ИЗ
ОстаткиДт КАК ОстаткиДт
левое СОЕДИНЕНИЕ ОперацииКт КАК ОперацииКт
ПО ОстаткиДт.Счет_Ост_ориг = ОперацииКт.СчетКт
И ОстаткиДт.Субконто1_ост_ориг = ОперацииКт.СубконтоКт1
И ОстаткиДт.Субконто2_ост_ориг = ОперацииКт.СубконтоКт2

MuI_I_Ika

Может при левом соединении поле не суммироватт, а брать максимум?

Теги: скд 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск