СКД остатки

1. 1Счик 19.06.17 16:49 Сейчас в теме
Всем привет!

Люди добрые, посмотрите, пожалуйста, что с этим отчетом не так.

Когда я формирую его, например, с одним из таких вариантов группировок: "Организация, Пол, Физ. лицо, Регистратор", либо "Физ. лицо, Регистратор", либо "Физ. лицо", либо "Пол", то остатки на начало и на конец формируются верно.

А когда я формирую этот же отчет, например, с такими вариантами группировок: "Организация, Регистратор", либо "Регистратор", то остатки в отчете врут.

Замечено, если отказаться от соединения со справочником "СотрудникиОрганизаций" и удалить из основного запроса обращение к Сотрудник.ВидЗанятости, то отчет будет формироваться без ошибок при любых вариантах группировок.

Прилагаю файл внешнего отчета и несколько снимков экрана, на которых видно, при каких вариантах группировок (в моем случае) врут остатки.

Заранее спасибо!

PS:
Решил добавить сюда текст запроса

ВЫБРАТЬ
	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо КАК Физлицо,
	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо.Пол КАК Пол,
	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Организация КАК Организация,

	ВЫБОР
		КОГДА ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
			ТОГДА NULL
		ИНАЧЕ ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Регистратор
	КОНЕЦ КАК Регистратор,

	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.ПериодСекунда КАК ПериодСекунда,
	Сотрудник.ВидЗанятости КАК ВидЗанятости,	
	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК СуммаВзаиморасчетовНачальныйОстаток,
	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток,
	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовОборот КАК СуммаВзаиморасчетовОборот,
	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход,
	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК СуммаВзаиморасчетовРасход
ИЗ
	РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , ) КАК ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
			СотрудникиОрганизаций.Физлицо КАК Физлицо,
			СотрудникиОрганизаций.ВидЗанятости КАК ВидЗанятости
		ИЗ
			Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций) КАК Сотрудник
		ПО (Сотрудник.Физлицо = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо)
Показать
Прикрепленные файлы:
ВнешнийОтчет3.erf
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. Genda 20.06.17 17:14 Сейчас в теме
(1) Для поля "Организация" в ролях выберите для поля "Родитель" значение "Физлицо"
Прикрепленные файлы:
+
9. 1Счик 20.06.17 17:35 Сейчас в теме
(8) Спасибо, это помогает при таком варианте группировки: "Организация, Регистратор"
Но когда я выбираю группировку только по регистратору, то остатки все также врут.
+
2. nvv1970 19.06.17 17:44 Сейчас в теме
Добавьте в группировку по регистратору еще ПериодСекунда.
+
3. 1Счик 19.06.17 18:49 Сейчас в теме
(2)
Спасибо за ответ.
Поле "ПериодСекунда" есть в запросе. В настройках СКД для ПериодСекунда назначена роль "Период, 2"
Для поля "Регистратор" назначена роль "Период, 1"

Ради эксперимента сформировал отчет с таким набором группировок: "Регистратор, Период, секунда". Результат - остатки по-прежнему врут...
+
4. nvv1970 20.06.17 14:38 Сейчас в теме
(3) Попробуйте еще поставить к качестве эксперимента для роли ПериодСекунда - обязательное поле.
+
5. nvv1970 20.06.17 14:49 Сейчас в теме
(3) Что у вас за странности с полем регистратор? Что за условия? Вы путаете СКД.
И какой остаток нужен? Только там где есть движения? Поставьте в параметрах "Движения"...
В вашем случае, у вас должны потеряться остатки, по которым не было движений.
+
6. 1Счик 20.06.17 15:49 Сейчас в теме
(4) К сожалению, "Обязательное поле" для ПериодСекунда никак не повлияло на результат...
+
7. 1Счик 20.06.17 15:53 Сейчас в теме
(5) Вы имеете ввиду условие "ВЫБОР КОГДА ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО"?
это нужно для того, чтобы в отчет не выводились пустые строки по группировке "Регистратор"
Но это условие никак влияет на результат. Можно смело убрать конструкцию "ВЫБОР КОГДА..." и вместо нее просто написать "ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Регистратор КАК Регистратор," - результат будет 100% такой же. Я проверял неоднократно.
+
10. sommid 20.06.17 17:57 Сейчас в теме
такое соединение реально работает??
"ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
СотрудникиОрганизаций.Физлицо КАК Физлицо,
СотрудникиОрганизаций.ВидЗанятости КАК ВидЗанятости
ИЗ
Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций) КАК Сотрудник
ПО (Сотрудник.Физлицо = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо)"
по-моему тут сначала выбирается какой-то один сотрудний, а потом уже результат этого выбора присоединяете по физлицу. Наверное ж еще нужен в этом подзапросе отбор по текущему пользователю таблицы ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.

А по поводу неверных остатков - попробуйте к консоли отчетов посмотреть реальный запрос, который выполняет СКД при данных настройках, возможно, поможет разобратся.
+
12. 1Счик 27.06.17 06:54 Сейчас в теме
(10)
такое соединение реально работает??
"ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1..."
по-моему тут сначала выбирается какой-то один сотрудний, а потом уже результат этого выбора присоединяете по физлицу. Наверное ж еще нужен в этом подзапросе отбор по текущему пользователю таблицы ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.

Действительно, я заэкспериментировался с этим соединением и выложил сюда вариант с использованием "ПЕРВЫЕ 1". Но сути это не меняет. Думаю, что правильнее там будет использовать "ВЫБРАТЬ РАЗЛИЧНЫЕ".

А по поводу неверных остатков - попробуйте к консоли отчетов посмотреть реальный запрос, который выполняет СКД при данных настройках, возможно, поможет разобратся.

Конечно, я пробовал экспериментировать и в консоли отчетов и в консоли запросов. Например, в консоли запросов я отчетливо вижу, что поле ВидЗанятости присоединяется и заполняется верными данными (когда использую в левом соединении "ВЫБРАТЬ РАЗЛИЧНЫЕ").
+
11. nvv1970 23.06.17 07:58 Сейчас в теме
Проблема будет не в "реальном запросе", подсчёте итогов самой СКД.
Уберите соединение, уберите костыль на регистраторе, уберите все лишнее.
Введите организацию. Проверьте остатки. Введите организацию, ниже рег - проверьте остаток. Если неправильный остаток равен сумме по каждому регистратору, то нужно переиначить вывод. Если нет - то может это правильные данные?)))
+
13. 1Счик 27.06.17 07:04 Сейчас в теме
(11)
Проблема будет не в "реальном запросе", подсчёте итогов самой СКД.

Совершенно с Вами согласен.

Уберите соединение, уберите костыль на регистраторе, уберите все лишнее.
Введите организацию. Проверьте остатки. Введите организацию, ниже рег - проверьте остаток. Если неправильный остаток равен сумме по каждому регистратору, то нужно переиначить вывод. Если нет - то может это правильные данные?)))

Соединение убирал. Как я писал в самом начале: "Замечено, если отказаться от соединения со справочником "СотрудникиОрганизаций" и удалить из основного запроса обращение к Сотрудник.ВидЗанятости, то отчет будет формироваться без ошибок при любых вариантах группировок".
Про костыль: Вы имеете ввиду "КОГДА Регистратор = НЕОПРЕДЕЛЕНО ТОГДА NULL"? Конечно, это я тоже убирал. Результат прежний...
+
14. 1Счик 27.06.17 07:27 Сейчас в теме
Скачайте, пожалуйста, прикрепленный к первому сообщению файл ВнешнииОтчет3.erf
Попробуйте сформировать его, например, в ЗУП (2.5.119.1)
Вы очень удивитесь, когда сформируете отчет с различными вариантами группировок и посмотрите остатки на начало и на конец периода.
+
Внимание! Тема сдана в архив

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