Неправильный вывод остатков и КТ и ДТ

1. user1086697 29.08.22 14:41 Сейчас в теме
Здравствуйте.

Делаю отчет, беру данные из виртуальной таблицы ОстаткиИОбороты Хозрасчетный.
Пользователь вводит дату, и формирует отчет на сегодня, остатки подтягиваются верные. на другое число формирует, то остатки неверные.
В консоль запросе результат запроса на все даты все верно выдает.
В СКД результат верный только на текущую дату, в остальных случаях какие-то неверные остатки.
Может какие-то есть нюансы в СКД при работе с регистром Хозрасчетный?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. EVKash 16 29.08.22 15:09 Сейчас в теме
(1)
В консоль запросе результат запроса на все даты все верно выдает.
В СКД результат верный только на текущую дату
Это говорит о том, оптимизатор компоновщика что-то меняет в итоговом запросе.
Выхода обычно 2:
1. Правильно указать параметры для компоновщика.
2. Отключить в СКД автозаполнение и прописать нужные поля и отборы самостоятельно.

И с такими вопросами лучше сразу запрос показывать.
3. user1086697 29.08.22 15:19 Сейчас в теме
(2) Обычный запрос:
ВЫБРАТЬ
	ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
	ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов).ВидВзаиморасчетов КАК ВидРасчетов,
	ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов).Слата_ВидУслуги КАК ВидУслуги,
	ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
	ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
	ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Справочник.Контрагенты).ИНН КАК ИННКонтрагента,
	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК БУКонечныйОстатокДт,
	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК БУКонечныйОстатокКт,
	ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
	ВТ_ОтветственныеБухгалтера.ЗначениеНач КАК ОтветственныйБухгалтер,
	ЕСТЬNULL(ВТ_ДатаВозникновенияЗадолженности.ДатаВозникновенияЗадолженности, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаВозникновенияЗадолженности,
	ВТ_ОтветственныеДирекция.ЗначениеНач КАК ОтветственнаяДирекция,
	"" КАК Комментарий,
	"" КАК НаличиеАктаСверки,
	0 КАК ЗадолженностьКонтрагентаПоАктуСверки
ПОМЕСТИТЬ ВТ_ВсеДанные
ИЗ
	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&КонецПериода, МЕСЯЦ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , , {(Счет В ИЕРАРХИИ (&СчетУчета))}, , {(Субконто1 = &Контрагент)}) КАК ХозрасчетныйОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтветственныеБухгалтера КАК ВТ_ОтветственныеБухгалтера
		ПО ХозрасчетныйОстаткиИОбороты.Субконто2 = ВТ_ОтветственныеБухгалтера.Договор
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтветственныеДирекция КАК ВТ_ОтветственныеДирекция
		ПО ХозрасчетныйОстаткиИОбороты.Субконто2 = ВТ_ОтветственныеДирекция.Договор
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДатаВозникновенияЗадолженности КАК ВТ_ДатаВозникновенияЗадолженности
		ПО ХозрасчетныйОстаткиИОбороты.Организация = ВТ_ДатаВозникновенияЗадолженности.Организация
			И ХозрасчетныйОстаткиИОбороты.Счет = ВТ_ДатаВозникновенияЗадолженности.Счет
			И ХозрасчетныйОстаткиИОбороты.Субконто1 = ВТ_ДатаВозникновенияЗадолженности.Субконто1
			И ХозрасчетныйОстаткиИОбороты.Субконто2 = ВТ_ДатаВозникновенияЗадолженности.Субконто2

{ГДЕ
	(ХозрасчетныйОстаткиИОбороты.Организация = &Организация),
	(ВТ_ОтветственныеБухгалтера.ЗначениеНач = &ОтветственныйБухгалтер)}
;
Показать

Параметры прикрепила. Пользователь вводит на форме КонецПериода, я его преобразую к концу дня
Прикрепленные файлы:
8. user1086697 30.08.22 11:56 Сейчас в теме
(1) Можно ли написать так:

РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(НАЧАЛОПЕРИОДА(&НачалоПериода, ГОД), &КонецПериода, Счет.СчетРасчетов = ИСТИНА {(Счет В ИЕРАРХИИ (&СчетУчета)
И Счет.СчетРасчетов = ИСТИНА)}, , ) КАК ХозрасчетныйДвиженияССубконто

В НачалоПериода записать НАЧАЛОПЕРИОДА(&НачалоПериода, ГОД)?
Я попробовала, у меня все равно не считает все данные
4. svilsa 12 29.08.22 15:28 Сейчас в теме
Может еще добавить "Использование" -> "Всегда", и на вкладке "Настройки" добавить галочку, и еще также добавить "Включать в пользовательские настройки". А если не получится, то использовать другой параметр, например "КонПериода", чтобы понять когда СКД теряет стандартный параметр "КонецПериода"
Прикрепленные файлы:
5. EVKash 16 29.08.22 15:39 Сейчас в теме
(3) как минимум
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&КонецПериода, МЕСЯЦ) {НАЧАЛОПЕРИОДА(&КонецПериода, МЕСЯЦ)}, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) {КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)}, , , {(Счет В ИЕРАРХИИ (&СчетУчета)) КАК Поле2}, , {(Субконто1 = &Контрагент) КАК Поле2}) КАК ХозрасчетныйОстаткиИОбороты

Та как вместо НАЧАЛОПЕРИОДА(&КонецПериода, МЕСЯЦ) компоновщик подставит &НачалоПериода
И запрос не весь. Это временная таблица
6. user1086697 29.08.22 15:46 Сейчас в теме
(5) Уже разобралась.
Инициализируется теперь НачалоПериода, а конец периода высчитывается исходя их начала периода.
Спасибо
То есть принудительно в начало периода ставить свою дату не получится?
7. user1086697 29.08.22 15:53 Сейчас в теме
(6) имею ввиду дату, соответствующую по названию
9. user1086697 30.08.22 11:56 Сейчас в теме
(5) Можно ли написать так:

РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(НАЧАЛОПЕРИОДА(&НачалоПериода, ГОД), &КонецПериода, Счет.СчетРасчетов = ИСТИНА {(Счет В ИЕРАРХИИ (&СчетУчета)
И Счет.СчетРасчетов = ИСТИНА)}, , ) КАК ХозрасчетныйДвиженияССубконто

В НачалоПериода записать НАЧАЛОПЕРИОДА(&НачалоПериода, ГОД)?
Я попробовала, у меня все равно не считает все данные
10. EVKash 16 30.08.22 15:07 Сейчас в теме
(9) Для компоновщика с выставленной галкой автозаполнения не важно, что вы пишите без фигурных скобок, т.е.
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(НАЧАЛОПЕРИОДА(&НачалоПериода, ГОД), &КонецПериода, ........)
будет интерпретироваться как
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачалоПериода, &КонецПериода, ........)
для компоновщика период нужно указывать в фигурных скобках. Т.е.
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто({НАЧАЛОПЕРИОДА(&НачалоПериода, ГОД)}, {&КонецПериода}, ........)
уже должно работать как надо.
Оставьте свое сообщение

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