Двоится сумма по одному из субконто в отчете на СКД. Помогите разобраться почему

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. Rega 24.04.13 17:37 Сейчас в теме
Не могу понять в чем ошибка

ВЫБРАТЬ
	ТиповойОстаткиИОбороты.Субконто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.
Левое соединение неправильно стоит или группировки где-то не хватает?
Вознаграждение за ответ
Показать полностью
Найденные решения
7. Ambakollajder 25.04.13 09:07 Сейчас в теме
Ошибка сидит в различной детализации регистров
РегистрБухгалтерии.Типовой.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , СчетКт = &СчетКт, , ) и
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , )

Вынести их в отдельные подзапрос или пакеты запросов, сгруппировать регистр в котором расширенная детализация и все у вас получится
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. _liana 24.04.13 17:45 Сейчас в теме
А регистры прямо поизучать, отфильтровать по проблемному Субконто нужный регистр ? Может дело не в запросе, а именно в задвоенных данных в самой базе ?
3. Rega 24.04.13 17:52 Сейчас в теме
(2) _liana, проверила еще раз, как вы написали. Дело все таки в запросе,это точно.
4. motorkuzbassa.it 100 25.04.13 06:35 Сейчас в теме
закиньте в консоль запросов
ВЫБРАТЬ
ТиповойОстаткиИОбороты.Субконто1
ПОМЕСТИТЬ квартиросъемщики
ИЗ
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты

без сгруппировать, посмотрите что выдает, и так покусочно по всему запросу.
5. Rega 25.04.13 08:55 Сейчас в теме
(4) motorkuzbassa.it, там наверное еще что-то настроить надо

{Обработка.КонсольОтчетов.Форма.Форма.Форма(801)}: Ошибка при вызове метода контекста (Вывести)
ПостроительОтчетов.Вывести(ЭлементыФормы.РезультатТабДокСвод);
по причине:
Не установлен менеджер временных таблиц

А когда закидываю

ВЫБРАТЬ
ТиповойОстаткиИОбороты.Субконто1

ИЗ
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты


-работает.Но там это субконто 1 раз в списке выводится.

Я думаю, может скопировать текст запроса в модуль, объявить параметры и сделать выборку по результату запроса. И посмотреть в отладчике попробовать...
6. nafa 661 25.04.13 09:04 Сейчас в теме
ВЫБРАТЬ
ТиповойОстаткиИОбороты.Субконто1
ИЗ
Какая-тоТаблица КАК ТиповойОстаткиИОбороты

СГРУППИРОВАТЬ ПО
ТиповойОстаткиИОбороты.Субконто1

Так не пишут, если уж писать то

ВЫБРАТЬ РАЗЛИЧНЫЕ
ТиповойОстаткиИОбороты.Субконто1
ИЗ
Какая-тоТаблица

Но в данном случае и РАЗЛИЧНЫЕ можно не писать, при таком запросе они и так будут различные

А двоится из-за первого левого соединения

ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , СчетКт = &СчетКт, , ) КАК ТиповойОборотыДтКт
ПО квартиросъемщики.Субконто1 = ТиповойОборотыДтКт.СубконтоКт1

У Вас видимо &СчетКт корреспондирует с двумя СчетДт, а поскольку ТиповойОборотыДтКт.СчетДт тоже используется в запросе, то формируется две записи с одинаковым ТиповойОборотыДтКт.СубконтоКт1 и разными ТиповойОборотыДтКт.СчетДт
7. Ambakollajder 25.04.13 09:07 Сейчас в теме
Ошибка сидит в различной детализации регистров
РегистрБухгалтерии.Типовой.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , СчетКт = &СчетКт, , ) и
РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , )

Вынести их в отдельные подзапрос или пакеты запросов, сгруппировать регистр в котором расширенная детализация и все у вас получится
10. Rega 25.04.13 10:12 Сейчас в теме
(7) Ambakollajder,
Вынести их в отдельные подзапрос или пакеты запросов, сгруппировать регистр в котором расширенная детализация и все у вас получится
по моему у меня получилось

ВЫБРАТЬ
	ТиповойОстаткиИОбороты.Субконто1
ПОМЕСТИТЬ квартиросъемщики
ИЗ
	РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет = &СчетКт, , ) КАК ТиповойОстаткиИОбороты
;

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


(6) nafa,
У Вас видимо &СчетКт корреспондирует с двумя СчетДт, а поскольку ТиповойОборотыДтКт.СчетДт тоже используется в запросе, то формируется две записи с одинаковым ТиповойОборотыДтКт.СубконтоКт1 и разными ТиповойОборотыДтКт.СчетДт
да, вы были правы
8. 4el 25.04.13 09:46 Сейчас в теме
Вынести их в отдельные подзапрос или пакеты запросов, сгруппировать регистр в котором расширенная детализация и все у вас получится
+ много!
9. nafa 661 25.04.13 09:51 Сейчас в теме
Вам судя по всему надо так переписать:

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ТиповойОстаткиИОбороты.Субконто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)
Показать
11. Rega 25.04.13 10:13 Сейчас в теме
Сейчас проверю до конца и отпишусь
12. Rega 25.04.13 10:46 Сейчас в теме
Да, все ок. Еще параметры НачалоПериода и КонецПериода привела к началу и концу дня, так как были документы последним числом месяца, не включившиеся в отчет по кредиту счета. И теперь вообще все зашибись. (нашла подсказку тут http://forum.infostart.ru/forum14/topic9895/ как изменить параметры начала и окончания)
Всем спасибо.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот