ВЫБРАТЬ
ТиповойОстаткиИОбороты.Субконто1
ПОМЕСТИТЬ квартиросъемщики
ИЗ
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ТиповойОстаткиИОбороты.Субконто1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
квартиросъемщики.Субконто1 КАК Адрес,
квартиросъемщики.Субконто1.Хозяин КАК Квартиросъемщик,
квартиросъемщики.Субконто1.Площадь КАК Площадь,
ТиповойОстаткиИОбороты.СуммаНачальныйОстатокДт КАК НачальныйОстатокДт,
ТиповойОстаткиИОбороты.СуммаНачальныйОстатокКт КАК НачальныйОстатокКт,
ТиповойОстаткиИОбороты.СуммаОборотДт КАК Начислено,
ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт = &СчетКассы
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ КАК Касса,
ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт = &СчетБанка
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ КАК Банк,
ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт <> &СчетКассы
И ТиповойОборотыДтКт.СчетДт <> &СчетБанка
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ КАК Взаиморасчеты,
ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт КАК КонечныйОстатокДт,
ТиповойОстаткиИОбороты.СуммаКонечныйОстатокКт КАК КонечныйОстатокКт
ИЗ
квартиросъемщики КАК квартиросъемщики
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , СчетКт = &СчетКт, , ) КАК ТиповойОборотыДтКт
ПО квартиросъемщики.Субконто1 = ТиповойОборотыДтКт.СубконтоКт1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты
ПО квартиросъемщики.Субконто1 = ТиповойОстаткиИОбороты.Субконто1
СГРУППИРОВАТЬ ПО
квартиросъемщики.Субконто1,
квартиросъемщики.Субконто1.Хозяин,
квартиросъемщики.Субконто1.Площадь,
ТиповойОстаткиИОбороты.СуммаНачальныйОстатокДт,
ТиповойОстаткиИОбороты.СуммаНачальныйОстатокКт,
ТиповойОстаткиИОбороты.СуммаОборотДт,
ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт,
ТиповойОстаткиИОбороты.СуммаКонечныйОстатокКт,
ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт = &СчетКассы
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ,
ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт = &СчетБанка
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ,
ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт <> &СчетКассы
И ТиповойОборотыДтКт.СчетДт <> &СчетБанка
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ
Показать
По всем субконто1 правильно, а по одному ТиповойОстаткиИОбороты.СуммаОборотДт КАК Начислено, показывает в двойном размере. В этом периоде была еще ручная операция по нему, которая попала в поле "Взаиморасчеты". Когда она включена, я так подозреваю, он два раза его находит, а потом по каждому субконто1 ставит Начислено, а потом объединяет их и суммирует начислено. Но почему он так делает? В стандартном отчете оборотно сальдовая ведомость по счету все правильно, а в этом самописном нет. Когда операцию отключаю, все становится на свои места. Причем сумма операции 6728. Сумма начисления 14188,2. А сумма которая попадает в начисление, когда операция по 6728 активна-28376,4.
Левое соединение неправильно стоит или группировки где-то не хватает?
А регистры прямо поизучать, отфильтровать по проблемному Субконто нужный регистр ? Может дело не в запросе, а именно в задвоенных данных в самой базе ?
4.
motorkuzbassa.it
10125.04.13 06:35 Сейчас в теме
закиньте в консоль запросов
ВЫБРАТЬ
ТиповойОстаткиИОбороты.Субконто1
ПОМЕСТИТЬ квартиросъемщики
ИЗ
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты
без сгруппировать, посмотрите что выдает, и так покусочно по всему запросу.
(4) motorkuzbassa.it, там наверное еще что-то настроить надо
{Обработка.КонсольОтчетов.Форма.Форма.Форма(801)}: Ошибка при вызове метода контекста (Вывести)
ПостроительОтчетов.Вывести(ЭлементыФормы.РезультатТабДокСвод);
по причине:
Не установлен менеджер временных таблиц
А когда закидываю
ВЫБРАТЬ
ТиповойОстаткиИОбороты.Субконто1
ИЗ
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты
-работает.Но там это субконто 1 раз в списке выводится.
Я думаю, может скопировать текст запроса в модуль, объявить параметры и сделать выборку по результату запроса. И посмотреть в отладчике попробовать...
ВЫБРАТЬ
ТиповойОстаткиИОбороты.Субконто1
ИЗ
Какая-тоТаблица КАК ТиповойОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ТиповойОстаткиИОбороты.Субконто1
Так не пишут, если уж писать то
ВЫБРАТЬ РАЗЛИЧНЫЕ
ТиповойОстаткиИОбороты.Субконто1
ИЗ
Какая-тоТаблица
Но в данном случае и РАЗЛИЧНЫЕ можно не писать, при таком запросе они и так будут различные
А двоится из-за первого левого соединения
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , СчетКт = &СчетКт, , ) КАК ТиповойОборотыДтКт
ПО квартиросъемщики.Субконто1 = ТиповойОборотыДтКт.СубконтоКт1
У Вас видимо &СчетКт корреспондирует с двумя СчетДт, а поскольку ТиповойОборотыДтКт.СчетДт тоже используется в запросе, то формируется две записи с одинаковым ТиповойОборотыДтКт.СубконтоКт1 и разными ТиповойОборотыДтКт.СчетДт
Вынести их в отдельные подзапрос или пакеты запросов, сгруппировать регистр в котором расширенная детализация и все у вас получится
по моему у меня получилось
ВЫБРАТЬ
ТиповойОстаткиИОбороты.Субконто1
ПОМЕСТИТЬ квартиросъемщики
ИЗ
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
квартиросъемщики.Субконто1 КАК Адрес,
квартиросъемщики.Субконто1.Хозяин КАК Квартиросъемщик,
квартиросъемщики.Субконто1.Площадь КАК Площадь,
ТиповойОстаткиИОбороты.СуммаНачальныйОстатокДт КАК НачальныйОстатокДт,
ТиповойОстаткиИОбороты.СуммаНачальныйОстатокКт КАК НачальныйОстатокКт,
ТиповойОстаткиИОбороты.СуммаОборотДт КАК Начислено,
ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт КАК КонечныйОстатокДт,
ТиповойОстаткиИОбороты.СуммаКонечныйОстатокКт КАК КонечныйОстатокКт,
ОборотыДтКт.Касса КАК Касса,
ОборотыДтКт.Банк КАК Банк,
ОборотыДтКт.Взаиморасчеты КАК Взаиморасчеты
ИЗ
квартиросъемщики КАК квартиросъемщики
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты
ПО квартиросъемщики.Субконто1 = ТиповойОстаткиИОбороты.Субконто1
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
СУММА(ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт = &СчетКассы
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ) КАК Касса,
СУММА(ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт = &СчетБанка
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ) КАК Банк,
СУММА(ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт <> &СчетКассы
И ТиповойОборотыДтКт.СчетДт <> &СчетБанка
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ) КАК Взаиморасчеты,
ТиповойОборотыДтКт.СубконтоКт1 КАК СубконтоКт1
ИЗ
РегистрБухгалтерии.Типовой.ОборотыДтКт КАК ТиповойОборотыДтКт
СГРУППИРОВАТЬ ПО
ТиповойОборотыДтКт.СубконтоКт1) КАК ОборотыДтКт
ПО квартиросъемщики.Субконто1 = ОборотыДтКт.СубконтоКт1
У Вас видимо &СчетКт корреспондирует с двумя СчетДт, а поскольку ТиповойОборотыДтКт.СчетДт тоже используется в запросе, то формируется две записи с одинаковым ТиповойОборотыДтКт.СубконтоКт1 и разными ТиповойОборотыДтКт.СчетДт
ВЫБРАТЬ РАЗЛИЧНЫЕ
ТиповойОстаткиИОбороты.Субконто1
ПОМЕСТИТЬ квартиросъемщики
ИЗ
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
квартиросъемщики.Субконто1 КАК Адрес,
квартиросъемщики.Субконто1.Хозяин КАК Квартиросъемщик,
квартиросъемщики.Субконто1.Площадь КАК Площадь,
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаНачальныйОстатокДт,0) КАК НачальныйОстатокДт,
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаНачальныйОстатокКт,0) КАК НачальныйОстатокКт,
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаОборотДт,0) КАК Начислено,
СУММА(ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт = &СчетКассы
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ) КАК Касса,
СУММА(ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт = &СчетБанка
ТОГДА ТиповойОборотыДтКт.СуммаОборот
ИНАЧЕ 0
КОНЕЦ) КАК Банк,
СУММА(ВЫБОР
КОГДА ТиповойОборотыДтКт.СчетДт <> &СчетКассы
И ТиповойОборотыДтКт.СчетДт <> &СчетБанка
ТОГДА ЕСТЬNULL(ТиповойОборотыДтКт.СуммаОборот, 0)
ИНАЧЕ 0
КОНЕЦ) КАК Взаиморасчеты,
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт,0) КАК КонечныйОстатокДт,
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокКт,0) КАК КонечныйОстатокКт
ИЗ
квартиросъемщики КАК квартиросъемщики
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , СчетКт = &СчетКт, , ) КАК ТиповойОборотыДтКт
ПО квартиросъемщики.Субконто1 = ТиповойОборотыДтКт.СубконтоКт1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты
ПО квартиросъемщики.Субконто1 = ТиповойОстаткиИОбороты.Субконто1
СГРУППИРОВАТЬ ПО
квартиросъемщики.Субконто1,
квартиросъемщики.Субконто1.Хозяин,
квартиросъемщики.Субконто1.Площадь,
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаНачальныйОстатокДт,0),
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаНачальныйОстатокКт,0),
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаОборотДт,0),
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокДт,0),
ЕСТЬNULL(ТиповойОстаткиИОбороты.СуммаКонечныйОстатокКт,0)
Да, все ок. Еще параметры НачалоПериода и КонецПериода привела к началу и концу дня, так как были документы последним числом месяца, не включившиеся в отчет по кредиту счета. И теперь вообще все зашибись. (нашла подсказку тут http://forum.infostart.ru/forum14/topic9895/ как изменить параметры начала и окончания)
Всем спасибо.