Правильный расчет итогов в СКД, при объединении нескольких разнородных таблиц остатков и оборотов

Содержание

Вступление

Иногда, возникает необходимость создать отчет на СКД, отображающий в одной таблице остатки и обороты по нескольким разным регистрам накопления. Если регистры имеют одинаковый состав измерений (хотя бы тех, в разрезе которых нужно выбирать данные), одинаковый состав регистраторов, и каждый из попадаемых в выборку регистраторов, поучаствовал в выборке из каждого регистра, тогда можно просто в наборе-запросе СКД объединить виртуальные таблицы ОстаткиИОбороти данных регистров накопления, и результат будет правильным.

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

И если имеет место хотя бы один из перечисленных выше факторов, то простое объединение виртуальных таблиц ОстаткиИОбороты этих регистров в наборе-запросе СКД, приведет к тому, что начальные и конечные остатки по регистраторам и по необщим измерениям регистров будут рассчитываться некорректно.

О том, как справиться с данной проблемой, и все-таки объединить в одном отчете несколько виртуальных таблиц ОстаткиИОбороты так, чтобы остатки считались правильно, и пойдет речь в этой статье.

На полученное решение меня вдохновила статья "Создание отчета с остатками без виртуальных таблиц" с сайта ИТС. В ней решается немного другая, хоть и похожая, задача - рассчитываются остатки по таблицам документов, формирующих приход и расход. Я же из этой статьи взял идею - вместо расчета виртуальной таблицы остатков и оборотов, начальные остатки считаю отдельно, обороты - отдельно, а затем все это аккуратно склеиваю в одну таблицу остатков и оборотов так, чтобы остатки везде были правильными, при этом еще и не забыв правильно посчитать конечные остатки.

Среда разработки

В качестве примера, на котором мы будем смотреть, как решается данная задача, будем использовать типовую конфигурацию "Управление производственным предприятием для Украины" (1.3.41.1).
При этом будем пользоваться платформой 1С версии 8.3.10.2699.
Сам отчет будем разрабатывать в виде внешнего отчета, готовую версию которого можно найти в разделе "Файлы для скачивания".

Постановка задачи

Построить отчет на СКД, который будет отображать следующие ресурсы:

Следует отметить, что по каждому ресурсу, за указанный пользователем в параметрах отчета период, должны расчитываться:

Данные в отчет должны выводиться в разрезе следующих группировок:

Также должна быть возможность разворачивать отчет по периодам вплоть до регистратора.

Ошибочное решение

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

Рассматривая пример ошибочного решения, я не буду останавливаться на несущественных деталях. Результирующий внешний отчет можно найти в разделе "Файлы для скачивания".

Создадим новый внешний отчет на схеме компоновки данных.
Добавим в его схему компоновки данных новый набор данных - запрос, в который поместим текст запроса, в котором данные таблиц ОстаткиИОбороты разных регистров накопления объединяются в одну таблицу.

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

		ОБЪЕДИНИТЬ ВСЕ

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

		ОБЪЕДИНИТЬ ВСЕ

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

		ОБЪЕДИНИТЬ ВСЕ

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

Настроим поля набора данных, чтобы лишнее не отображалось, а нужное отображалось красиво.
И даже не забудем настроить красивое отображение периодов, как описано в статье "Форматирование на разных языках периодов в СКД".
На закладке "Вычисляемые поля" добавим поля для ресурсов "Свободный остаток", "Свободно в поставке" и "Плановый остаток".
На закладке "Ресурсы" укажем выражения для вычисления значений ресурсов по группировкам.
На закладке "Параметры" добавим доступный пользователю параметр "Период" типа СтандартныйПериод, а используемые в запросе параметры "ПериодНачало" и "ПериодОкончание" сделаем недоступными для пользователя и заполняемыми из параметра "Период".

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

Для отчета в целом настроим начальные значения параметров, выбранные поля, сортировку и другие настройки.

Также, важным моментом является еще одна настройка.
Т.к. в виртуальных таблицах ОстаткиИОбороты присутствуют записи с пустым регистратором, в которых запрос возвращает начальные и конечные остатки, а СКД использует их для расчетов, то, чтобы эти "пустые" строки не путали пользователей, нужно на группировке Регистратор настроить отбор
Настройка отбора по группировке Регистратор

При этом, также, обязательно нужно для этой группировки, на закладке "Другие настройки", настройку "Выводить отбор" установить в значение "Не выводить"
Отключение отображения отбора по группировке Регистратор

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

Отчет готов.
Если его сохранить и запустить в демо базе, то можно увидеть на первый взгляд правильные цифры. И очень этому радоваться.
До тех пор, пока не обнаружится что-то вроде такого:
Ошибка в получившемся отчете

Такое произошло из-за того, что документ "Заказ поставщику" не является регистратором по регистрам накопления ТоварыНаСкладах и ТоварыВРознице, по которым рассчитывается значение ресурса "Остаток". А раз так, то система и не рассчитала остатки товара на момент этого документа.

Правильное решение

Чтобы устранить обнаруженную в предыдущем разделе проблему, прийдется отказаться от виртуальных таблиц ОстаткиИОбороты, и взять на себя ответственность за расчет начальных и конечных остатков.

Полученный в результате внешний отчет можно найти в разделе "Файлы для скачивания".

Начнем с переписывания запроса.

Так как запрос будет достаточно сложным, то разобьем его на пакет из нескольких запросов.

Первым запросом пакета получим остатки на начало периода в разрезе необходимых нам в отчете измерений, и поместим их во временную таблицу вт_НачальныеОстатки.

//////////////////////////////////////////////
// вт_НачальныеОстатки
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВложенныйЗапрос.Склад                                    КАК Склад,
	ВложенныйЗапрос.Номенклатура                             КАК Номенклатура,
	ВложенныйЗапрос.ХарактеристикаНоменклатуры               КАК ХарактеристикаНоменклатуры,
	ВложенныйЗапрос.ДокументРезерва                          КАК ДокументРезерва,
	ВложенныйЗапрос.ЗаказПоставщику                          КАК ЗаказПоставщику,
	СУММА(ВложенныйЗапрос.ОстатокНачальныйОстаток)           КАК ОстатокНачальныйОстаток,
	СУММА(ВложенныйЗапрос.РезервНачальныйОстаток)            КАК РезервНачальныйОстаток,
	СУММА(ВложенныйЗапрос.ОжидаемаяПоставкаНачальныйОстаток) КАК ОжидаемаяПоставкаНачальныйОстаток,
	СУММА(ВложенныйЗапрос.РезервВПоставкеНачальныйОстаток)   КАК РезервВПоставкеНачальныйОстаток
{
ВЫБРАТЬ
	Склад.*                      КАК Склад,
	Номенклатура.*               КАК Номенклатура,
	ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
	ДокументРезерва.*            КАК ДокументРезерва,
	ЗаказПоставщику.*            КАК ЗаказПоставщику
}
ПОМЕСТИТЬ вт_НачальныеОстатки
ИЗ
	(
		ВЫБРАТЬ
			ТоварыНаСкладахОстатки.Склад                      КАК Склад,
			ТоварыНаСкладахОстатки.Номенклатура               КАК Номенклатура,
			ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			Неопределено                                      КАК ДокументРезерва,
			ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)   КАК ЗаказПоставщику,
			ТоварыНаСкладахОстатки.КоличествоОстаток          КАК ОстатокНачальныйОстаток,
			0                                                 КАК РезервНачальныйОстаток,
			0                                                 КАК ОжидаемаяПоставкаНачальныйОстаток,
			0                                                 КАК РезервВПоставкеНачальныйОстаток
			{
			ВЫБРАТЬ
				Склад.*                      КАК Склад,
				Номенклатура.*               КАК Номенклатура,
				ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
				ДокументРезерва.*            КАК ДокументРезерва,
				ЗаказПоставщику.*            КАК ЗаказПоставщику
			}
		ИЗ
			РегистрНакопления.ТоварыНаСкладах.Остатки	(
															&ПериодНачало{&ПериодНачало},
															{
																Склад.*                      КАК Склад,
																Номенклатура.*               КАК Номенклатура,
																ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры
															}
														) КАК ТоварыНаСкладахОстатки
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			ТоварыВРозницеОстатки.Склад                      КАК Склад,
			ТоварыВРозницеОстатки.Номенклатура               КАК Номенклатура,
			ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			Неопределено                                     КАК ДокументРезерва,
			ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)  КАК ЗаказПоставщику,
			ТоварыВРозницеОстатки.КоличествоОстаток          КАК ОстатокНачальныйОстаток,
			0                                                КАК РезервНачальныйОстаток,
			0                                                КАК ОжидаемаяПоставкаНачальныйОстаток,
			0                                                КАК РезервВПоставкеНачальныйОстаток
		ИЗ
			РегистрНакопления.ТоварыВРознице.Остатки	(
															&ПериодНачало{&ПериодНачало},
															{
																Склад.*                      КАК Склад,
																Номенклатура.*               КАК Номенклатура,
																ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры
															}
														) КАК ТоварыВРозницеОстатки
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			ТоварыВРезервеНаСкладахОстатки.Склад                      КАК Склад,
			ТоварыВРезервеНаСкладахОстатки.Номенклатура               КАК Номенклатура,
			ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			ТоварыВРезервеНаСкладахОстатки.ДокументРезерва            КАК ДокументРезерва,
			ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)           КАК ЗаказПоставщику,
			0                                                         КАК ОстатокНачальныйОстаток,
			ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток          КАК РезервНачальныйОстаток,
			0                                                         КАК ОжидаемаяПоставкаНачальныйОстаток,
			0                                                         КАК РезервВПоставкеНачальныйОстаток
		ИЗ
			РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки	(
																	&ПериодНачало{&ПериодНачало},
																	{
																		Склад.*                      КАК Склад,
																		Номенклатура.*               КАК Номенклатура,
																		ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
																		ДокументРезерва.*            КАК ДокументРезерва
																	}
																) КАК ТоварыВРезервеНаСкладахОстатки
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			ВЫБОР
				КОГДА ЗаказыПоставщикамОстатки.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
					ВЫРАЗИТЬ(ЗаказыПоставщикамОстатки.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Склад
				ИНАЧЕ
					ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
			КОНЕЦ                                               КАК Склад,
			ЗаказыПоставщикамОстатки.Номенклатура               КАК Номенклатура,
			ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			Неопределено                                        КАК ДокументРезерва,
			ВЫБОР
				КОГДА ЗаказыПоставщикамОстатки.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
					ВЫРАЗИТЬ(ЗаказыПоставщикамОстатки.ЗаказПоставщику КАК Документ.ЗаказПоставщику)
				ИНАЧЕ
					ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
			КОНЕЦ                                               КАК ЗаказПоставщику,
			0                                                   КАК ОстатокНачальныйОстаток,
			0                                                   КАК РезервНачальныйОстаток,
			ЗаказыПоставщикамОстатки.КоличествоОстаток          КАК ОжидаемаяПоставкаНачальныйОстаток,
			0                                                   КАК РезервВПоставкеНачальныйОстаток
		ИЗ
			РегистрНакопления.ЗаказыПоставщикам.Остатки	(
															&ПериодНачало{&ПериодНачало},
															ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику
															{
																(ВЫБОР
																	КОГДА ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
																		ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Склад
																	ИНАЧЕ
																		ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
																КОНЕЦ).*                     КАК Склад,
																Номенклатура.*               КАК Номенклатура,
																ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
																(ВЫБОР
																	КОГДА ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
																		ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику)
																	ИНАЧЕ
																		ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
																КОНЕЦ).*                     КАК ЗаказПоставщику
															}
														) КАК ЗаказыПоставщикамОстатки
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			ВЫБОР
				КОГДА РазмещениеЗаказовПокупателейОстатки.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
					ВЫРАЗИТЬ(РазмещениеЗаказовПокупателейОстатки.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Склад
				ИНАЧЕ
					ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
			КОНЕЦ                                                          КАК Склад,
			РазмещениеЗаказовПокупателейОстатки.Номенклатура               КАК Номенклатура,
			РазмещениеЗаказовПокупателейОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			РазмещениеЗаказовПокупателейОстатки.ЗаказПокупателя            КАК ДокументРезерва,
			ВЫБОР
				КОГДА РазмещениеЗаказовПокупателейОстатки.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
					ВЫРАЗИТЬ(РазмещениеЗаказовПокупателейОстатки.ЗаказПоставщику КАК Документ.ЗаказПоставщику)
				ИНАЧЕ
					ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
			КОНЕЦ                                                          КАК ЗаказПоставщику,
			0                                                              КАК ОстатокНачальныйОстаток,
			0                                                              КАК РезервНачальныйОстаток,
			0                                                              КАК ОжидаемаяПоставкаНачальныйОстаток,
			РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток          КАК РезервВПоставкеНачальныйОстаток
		ИЗ
			РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки	(
																		&ПериодНачало{&ПериодНачало},
																		ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику
																		{
																			(ВЫБОР
																				КОГДА ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
																					ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Склад
																				ИНАЧЕ
																					ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
																			КОНЕЦ).*                     КАК Склад,
																			Номенклатура.*               КАК Номенклатура,
																			ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
																			ЗаказПокупателя.*            КАК ДокументРезерва,
																			(ВЫБОР
																				КОГДА ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
																					ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику)
																				ИНАЧЕ
																					ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
																			КОНЕЦ).*                     КАК ЗаказПоставщику
																		}
																	) КАК РазмещениеЗаказовПокупателейОстатки
	) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО
	ВложенныйЗапрос.Склад,
	ВложенныйЗапрос.Номенклатура,
	ВложенныйЗапрос.ХарактеристикаНоменклатуры,
	ВложенныйЗапрос.ДокументРезерва,
	ВложенныйЗапрос.ЗаказПоставщику
;
				

По структуре этот запрос очень похож на исходный запрос, за тем исключением, что данные берутся не из виртуальных таблиц ОстаткиИОбороты, а из виртуальных таблиц Остатки. И выбираются только начальные остатки.

Также, обратите внимание на использование расширения языка запросов для построителя.
А именно, на явное указание доступных для выбора полей измерений и на указание доступных для отбора полей в параметрах виртуальных таблиц. Оно нужно для того, чтобы система правильно сопоставила одни и те же поля измерений из разных запросов пакета.

Еще важным моментом является исключение возможности появления в измерениях отчета значений NULL. Нужно это для того, чтобы в следующих запросах соединение таблиц по измерениям выполнялось корректно (т.к. NULL = NULL будет давать ЛОЖЬ, а не ИСТИНА). Достигается данное требование путем дополнения конструкций ВЫРАЗИТЬ оператором ВЫБОР

ВЫБОР
	КОГДА ЗаказыПоставщикамОстатки.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
		ВЫРАЗИТЬ(ЗаказыПоставщикамОстатки.ЗаказПоставщику КАК Документ.ЗаказПоставщику)
	ИНАЧЕ
		ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
КОНЕЦ                                               КАК ЗаказПоставщику,
				
Т.е. когда в измерении значение интересующего нас типа, то берем его, а если нет, то, чтобы система не вернула в это поле NULL, явно указываем пустое значение подходящего типа.

Следующим запросом пакета получим движения за период формирования отчета в разрезе необходимых нам в отчете измерений, и поместим их во временную таблицу вт_Движения.

//////////////////////////////////////////////
// вт_Движения
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВложенныйЗапрос.Склад                          КАК Склад,
	ВложенныйЗапрос.Номенклатура                   КАК Номенклатура,
	ВложенныйЗапрос.ХарактеристикаНоменклатуры     КАК ХарактеристикаНоменклатуры,
	ВложенныйЗапрос.ДокументРезерва                КАК ДокументРезерва,
	ВложенныйЗапрос.ЗаказПоставщику                КАК ЗаказПоставщику,
	ВложенныйЗапрос.ПериодСекунда                  КАК ПериодСекунда,
	ВложенныйЗапрос.РегистраторМоментВремени       КАК РегистраторМоментВремени,
	ВложенныйЗапрос.Регистратор                    КАК Регистратор,
	СУММА(ВложенныйЗапрос.ОстатокПриход)           КАК ОстатокПриход,
	СУММА(ВложенныйЗапрос.ОстатокРасход)           КАК ОстатокРасход,
	СУММА(ВложенныйЗапрос.РезервПриход)            КАК РезервПриход,
	СУММА(ВложенныйЗапрос.РезервРасход)            КАК РезервРасход,
	СУММА(ВложенныйЗапрос.ОжидаемаяПоставкаПриход) КАК ОжидаемаяПоставкаПриход,
	СУММА(ВложенныйЗапрос.ОжидаемаяПоставкаРасход) КАК ОжидаемаяПоставкаРасход,
	СУММА(ВложенныйЗапрос.РезервВПоставкеПриход)   КАК РезервВПоставкеПриход,
	СУММА(ВложенныйЗапрос.РезервВПоставкеРасход)   КАК РезервВПоставкеРасход
{
ВЫБРАТЬ
	Склад.*                      КАК Склад,
	Номенклатура.*               КАК Номенклатура,
	ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
	ДокументРезерва.*            КАК ДокументРезерва,
	ЗаказПоставщику.*            КАК ЗаказПоставщику
}
ПОМЕСТИТЬ вт_Движения
ИЗ
	(
		ВЫБРАТЬ
			ТоварыНаСкладахОбороты.Склад                      КАК Склад,
			ТоварыНаСкладахОбороты.Номенклатура               КАК Номенклатура,
			ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			Неопределено                                      КАК ДокументРезерва,
			ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)   КАК ЗаказПоставщику,
			ТоварыНаСкладахОбороты.Период                     КАК ПериодСекунда,
			ТоварыНаСкладахОбороты.Регистратор.МоментВремени  КАК РегистраторМоментВремени,
			ТоварыНаСкладахОбороты.Регистратор                КАК Регистратор,
			ТоварыНаСкладахОбороты.КоличествоПриход           КАК ОстатокПриход,
			ТоварыНаСкладахОбороты.КоличествоРасход           КАК ОстатокРасход,
			0                                                 КАК РезервПриход,
			0                                                 КАК РезервРасход,
			0                                                 КАК ОжидаемаяПоставкаПриход,
			0                                                 КАК ОжидаемаяПоставкаРасход,
			0                                                 КАК РезервВПоставкеПриход,
			0                                                 КАК РезервВПоставкеРасход
		{
		ВЫБРАТЬ
			Склад.*                      КАК Склад,
			Номенклатура.*               КАК Номенклатура,
			ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
			ДокументРезерва.*            КАК ДокументРезерва,
			ЗаказПоставщику.*            КАК ЗаказПоставщику
		}
		ИЗ
			РегистрНакопления.ТоварыНаСкладах.Обороты	(
															{&ПериодНачало},
															{&ПериодОкончание},
															Регистратор,
															{
																Склад.*                      КАК Склад,
																Номенклатура.*               КАК Номенклатура,
																ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры
															}
														) КАК ТоварыНаСкладахОбороты
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			ТоварыВРозницеОбороты.Склад                      КАК Склад,
			ТоварыВРозницеОбороты.Номенклатура               КАК Номенклатура,
			ТоварыВРозницеОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			Неопределено                                     КАК ДокументРезерва,
			ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)  КАК ЗаказПоставщику,
			ТоварыВРозницеОбороты.Период                     КАК ПериодСекунда,
			ТоварыВРозницеОбороты.Регистратор.МоментВремени  КАК РегистраторМоментВремени,
			ТоварыВРозницеОбороты.Регистратор                КАК Регистратор,
			ТоварыВРозницеОбороты.КоличествоПриход           КАК ОстатокПриход,
			ТоварыВРозницеОбороты.КоличествоРасход           КАК ОстатокРасход,
			0                                                КАК РезервПриход,
			0                                                КАК РезервРасход,
			0                                                КАК ОжидаемаяПоставкаПриход,
			0                                                КАК ОжидаемаяПоставкаРасход,
			0                                                КАК РезервВПоставкеПриход,
			0                                                КАК РезервВПоставкеРасход
		ИЗ
			РегистрНакопления.ТоварыВРознице.Обороты	(
															{&ПериодНачало},
															{&ПериодОкончание},
															Регистратор,
															{
																Склад.*                      КАК Склад,
																Номенклатура.*               КАК Номенклатура,
																ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры
															}
														) КАК ТоварыВРозницеОбороты
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			ТоварыВРезервеНаСкладахОбороты.Склад                      КАК Склад,
			ТоварыВРезервеНаСкладахОбороты.Номенклатура               КАК Номенклатура,
			ТоварыВРезервеНаСкладахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			ТоварыВРезервеНаСкладахОбороты.ДокументРезерва            КАК ДокументРезерва,
			ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)           КАК ЗаказПоставщику,
			ТоварыВРезервеНаСкладахОбороты.Период                     КАК ПериодСекунда,
			ТоварыВРезервеНаСкладахОбороты.Регистратор.МоментВремени  КАК РегистраторМоментВремени,
			ТоварыВРезервеНаСкладахОбороты.Регистратор                КАК Регистратор,
			0                                                         КАК ОстатокПриход,
			0                                                         КАК ОстатокРасход,
			ТоварыВРезервеНаСкладахОбороты.КоличествоПриход           КАК РезервПриход,
			ТоварыВРезервеНаСкладахОбороты.КоличествоРасход           КАК РезервРасход,
			0                                                         КАК ОжидаемаяПоставкаПриход,
			0                                                         КАК ОжидаемаяПоставкаРасход,
			0                                                         КАК РезервВПоставкеПриход,
			0                                                         КАК РезервВПоставкеРасход
		ИЗ
			РегистрНакопления.ТоварыВРезервеНаСкладах.Обороты	(
																	{&ПериодНачало},
																	{&ПериодОкончание},
																	Регистратор,
																	{
																		Склад.*                      КАК Склад,
																		Номенклатура.*               КАК Номенклатура,
																		ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
																		ДокументРезерва.*            КАК ДокументРезерва
																	}
																) КАК ТоварыВРезервеНаСкладахОбороты
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			ВЫБОР
				КОГДА ЗаказыПоставщикамОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
					ВЫРАЗИТЬ(ЗаказыПоставщикамОбороты.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Склад
				ИНАЧЕ
					ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
			КОНЕЦ                                               КАК Склад,
			ЗаказыПоставщикамОбороты.Номенклатура               КАК Номенклатура,
			ЗаказыПоставщикамОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			Неопределено                                        КАК ДокументРезерва,
			ВЫБОР
				КОГДА ЗаказыПоставщикамОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
					ВЫРАЗИТЬ(ЗаказыПоставщикамОбороты.ЗаказПоставщику КАК Документ.ЗаказПоставщику)
				ИНАЧЕ
					ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
			КОНЕЦ                                               КАК ЗаказПоставщику,
			ЗаказыПоставщикамОбороты.Период                     КАК ПериодСекунда,
			ЗаказыПоставщикамОбороты.Регистратор.МоментВремени  КАК РегистраторМоментВремени,
			ЗаказыПоставщикамОбороты.Регистратор                КАК Регистратор,
			0                                                   КАК ОстатокПриход,
			0                                                   КАК ОстатокРасход,
			0                                                   КАК РезервПриход,
			0                                                   КАК РезервРасход,
			ЗаказыПоставщикамОбороты.КоличествоПриход           КАК ОжидаемаяПоставкаПриход,
			ЗаказыПоставщикамОбороты.КоличествоРасход           КАК ОжидаемаяПоставкаРасход,
			0                                                   КАК РезервВПоставкеПриход,
			0                                                   КАК РезервВПоставкеРасход
		ИЗ
			РегистрНакопления.ЗаказыПоставщикам.Обороты	(
															{&ПериодНачало},
															{&ПериодОкончание},
															Регистратор,
															ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику
															{
																(ВЫБОР
																	КОГДА ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
																		ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Склад
																	ИНАЧЕ
																		ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
																КОНЕЦ).*                     КАК Склад,
																Номенклатура.*               КАК Номенклатура,
																ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
																(ВЫБОР
																	КОГДА ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
																		ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику)
																	ИНАЧЕ
																		ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
																КОНЕЦ).*                     КАК ЗаказПоставщику
															}
														) КАК ЗаказыПоставщикамОбороты
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			ВЫБОР
				КОГДА РазмещениеЗаказовПокупателейОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
					ВЫРАЗИТЬ(РазмещениеЗаказовПокупателейОбороты.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Склад
				ИНАЧЕ
					ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
			КОНЕЦ                                                          КАК Склад,
			РазмещениеЗаказовПокупателейОбороты.Номенклатура               КАК Номенклатура,
			РазмещениеЗаказовПокупателейОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			РазмещениеЗаказовПокупателейОбороты.ЗаказПокупателя            КАК ДокументРезерва,
			ВЫБОР
				КОГДА РазмещениеЗаказовПокупателейОбороты.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
					ВЫРАЗИТЬ(РазмещениеЗаказовПокупателейОбороты.ЗаказПоставщику КАК Документ.ЗаказПоставщику)
				ИНАЧЕ
					ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
			КОНЕЦ                                                          КАК ЗаказПоставщику,
			РазмещениеЗаказовПокупателейОбороты.Период                     КАК ПериодСекунда,
			РазмещениеЗаказовПокупателейОбороты.Регистратор.МоментВремени  КАК РегистраторМоментВремени,
			РазмещениеЗаказовПокупателейОбороты.Регистратор                КАК Регистратор,
			0                                                              КАК ОстатокПриход,
			0                                                              КАК ОстатокРасход,
			0                                                              КАК РезервПриход,
			0                                                              КАК РезервРасход,
			0                                                              КАК ОжидаемаяПоставкаПриход,
			0                                                              КАК ОжидаемаяПоставкаРасход,
			РазмещениеЗаказовПокупателейОбороты.КоличествоПриход           КАК РезервВПоставкеПриход,
			РазмещениеЗаказовПокупателейОбороты.КоличествоРасход           КАК РезервВПоставкеРасход
		ИЗ
			РегистрНакопления.РазмещениеЗаказовПокупателей.Обороты	(
																		{&ПериодНачало},
																		{&ПериодОкончание},
																		Регистратор,
																		ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику
																		{
																			(ВЫБОР
																				КОГДА ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
																					ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику).Склад
																				ИНАЧЕ
																					ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
																			КОНЕЦ).*                     КАК Склад,
																			Номенклатура.*               КАК Номенклатура,
																			ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
																			ЗаказПокупателя.*            КАК ДокументРезерва,
																			(ВЫБОР
																				КОГДА ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику ТОГДА
																					ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику)
																				ИНАЧЕ
																					ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
																			КОНЕЦ).*                     КАК ЗаказПоставщику
																		}
																	) КАК РазмещениеЗаказовПокупателейОбороты
	) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО
	ВложенныйЗапрос.Склад,
	ВложенныйЗапрос.Номенклатура,
	ВложенныйЗапрос.ХарактеристикаНоменклатуры,
	ВложенныйЗапрос.ДокументРезерва,
	ВложенныйЗапрос.ЗаказПоставщику,
	ВложенныйЗапрос.ПериодСекунда,
	ВложенныйЗапрос.РегистраторМоментВремени,
	ВложенныйЗапрос.Регистратор
;
				

Этот запрос по структуре тоже очень похож на исходный запрос, но в нем данные берутся из виртуальных таблиц Обороты.

Тут, кроме упомянутого выше использования расширения языка запросов для построителя, важным моментом является то, что не нужно выбирать данные в разрезе всех периодов. Достаточно выбрать ПериодСекунда и Регистратор.
И еще очень важно выбрать момент времени регистратора (для корректной связки таблиц остатков с таблицей движений).

Следующим запросом пакета объединим две предыдущие таблицы в одну, и поместим результат во временную таблицу вт_ОстаткиИДвижения.

//////////////////////////////////////////////
// вт_ОстаткиИДвижения
ВЫБРАТЬ
	вт_НачальныеОстатки.Склад                             КАК Склад,
	вт_НачальныеОстатки.Номенклатура                      КАК Номенклатура,
	вт_НачальныеОстатки.ХарактеристикаНоменклатуры        КАК ХарактеристикаНоменклатуры,
	вт_НачальныеОстатки.ДокументРезерва                   КАК ДокументРезерва,
	вт_НачальныеОстатки.ЗаказПоставщику                   КАК ЗаказПоставщику,
	&ПериодНачало                                         КАК ПериодСекунда,
	NULL                                                  КАК РегистраторМоментВремени,
	НЕОПРЕДЕЛЕНО                                          КАК Регистратор,
	вт_НачальныеОстатки.ОстатокНачальныйОстаток           КАК ОстатокНачальныйОстаток,
	вт_НачальныеОстатки.РезервНачальныйОстаток            КАК РезервНачальныйОстаток,
	вт_НачальныеОстатки.ОжидаемаяПоставкаНачальныйОстаток КАК ОжидаемаяПоставкаНачальныйОстаток,
	вт_НачальныеОстатки.РезервВПоставкеНачальныйОстаток   КАК РезервВПоставкеНачальныйОстаток,
	0                                                     КАК ОстатокПриход,
	0                                                     КАК ОстатокРасход,
	0                                                     КАК РезервПриход,
	0                                                     КАК РезервРасход,
	0                                                     КАК ОжидаемаяПоставкаПриход,
	0                                                     КАК ОжидаемаяПоставкаРасход,
	0                                                     КАК РезервВПоставкеПриход,
	0                                                     КАК РезервВПоставкеРасход
{
ВЫБРАТЬ
	Склад.*                      КАК Склад,
	Номенклатура.*               КАК Номенклатура,
	ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
	ДокументРезерва.*            КАК ДокументРезерва,
	ЗаказПоставщику.*            КАК ЗаказПоставщику
}
ПОМЕСТИТЬ вт_ОстаткиИДвижения
ИЗ вт_НачальныеОстатки КАК вт_НачальныеОстатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	вт_Движения.Склад                      КАК Склад,
	вт_Движения.Номенклатура               КАК Номенклатура,
	вт_Движения.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	вт_Движения.ДокументРезерва            КАК ДокументРезерва,
	вт_Движения.ЗаказПоставщику            КАК ЗаказПоставщику,
	вт_Движения.ПериодСекунда              КАК ПериодСекунда,
	вт_Движения.РегистраторМоментВремени   КАК РегистраторМоментВремени,
	вт_Движения.Регистратор                КАК Регистратор,
	0                                      КАК ОстатокНачальныйОстаток,
	0                                      КАК РезервНачальныйОстаток,
	0                                      КАК ОжидаемаяПоставкаНачальныйОстаток,
	0                                      КАК РезервВПоставкеНачальныйОстаток,
	вт_Движения.ОстатокПриход              КАК ОстатокПриход,
	вт_Движения.ОстатокРасход              КАК ОстатокРасход,
	вт_Движения.РезервПриход               КАК РезервПриход,
	вт_Движения.РезервРасход               КАК РезервРасход,
	вт_Движения.ОжидаемаяПоставкаПриход    КАК ОжидаемаяПоставкаПриход,
	вт_Движения.ОжидаемаяПоставкаРасход    КАК ОжидаемаяПоставкаРасход,
	вт_Движения.РезервВПоставкеПриход      КАК РезервВПоставкеПриход,
	вт_Движения.РезервВПоставкеРасход      КАК РезервВПоставкеРасход
ИЗ вт_Движения КАК вт_Движения
;
				

Тут следует заметить то, что это еще не окончательная таблица, а промежуточные данные, которые нам понадобятся для получения окончательного результата.

Следующим запросом пакета рассчитаем начальные остатки по регистраторам, и поместим их во временную таблицу вт_НачальныеОстаткиПоРегистраторам.

//////////////////////////////////////////////
// вт_НачальныеОстаткиПоРегистраторам
ВЫБРАТЬ
	вт_ОстаткиИДвижения.Склад                      КАК Склад,
	вт_ОстаткиИДвижения.Номенклатура               КАК Номенклатура,
	вт_ОстаткиИДвижения.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	вт_ОстаткиИДвижения.ДокументРезерва            КАК ДокументРезерва,
	вт_ОстаткиИДвижения.ЗаказПоставщику            КАК ЗаказПоставщику,
	вт_ОстаткиИДвижения.ПериодСекунда              КАК ПериодСекунда,
	вт_ОстаткиИДвижения.Регистратор                КАК Регистратор,
	// Остаток
	(
		ЕСТЬNULL(МАКСИМУМ(вт_НачальныеОстатки.ОстатокНачальныйОстаток), 0)
		+ ЕСТЬNULL(СУММА(вт_Движения.ОстатокПриход), 0)
		- ЕСТЬNULL(СУММА(вт_Движения.ОстатокРасход), 0)
	)                                              КАК ОстатокНачальныйОстаток,
	// Резерв
	(
		ЕСТЬNULL(МАКСИМУМ(вт_НачальныеОстатки.РезервНачальныйОстаток), 0)
		+ ЕСТЬNULL(СУММА(вт_Движения.РезервПриход), 0)
		- ЕСТЬNULL(СУММА(вт_Движения.РезервРасход), 0)
	)                                              КАК РезервНачальныйОстаток,
	// Ожидаемая поставка
	(
		ЕСТЬNULL(МАКСИМУМ(вт_НачальныеОстатки.ОжидаемаяПоставкаНачальныйОстаток), 0)
		+ ЕСТЬNULL(СУММА(вт_Движения.ОжидаемаяПоставкаПриход), 0)
		- ЕСТЬNULL(СУММА(вт_Движения.ОжидаемаяПоставкаРасход), 0)
	)                                              КАК ОжидаемаяПоставкаНачальныйОстаток,
	// Резерв в поставке
	(
		ЕСТЬNULL(МАКСИМУМ(вт_НачальныеОстатки.РезервВПоставкеНачальныйОстаток), 0)
		+ ЕСТЬNULL(СУММА(вт_Движения.РезервВПоставкеПриход), 0)
		- ЕСТЬNULL(СУММА(вт_Движения.РезервВПоставкеРасход), 0)
	)                                              КАК РезервВПоставкеНачальныйОстаток
{
ВЫБРАТЬ
	Склад.*                      КАК Склад,
	Номенклатура.*               КАК Номенклатура,
	ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
	ДокументРезерва.*            КАК ДокументРезерва,
	ЗаказПоставщику.*            КАК ЗаказПоставщику
}
ПОМЕСТИТЬ вт_НачальныеОстаткиПоРегистраторам
ИЗ вт_ОстаткиИДвижения КАК вт_ОстаткиИДвижения
	ЛЕВОЕ СОЕДИНЕНИЕ вт_НачальныеОстатки КАК вт_НачальныеОстатки
		ПО  ИСТИНА
			{
			И вт_ОстаткиИДвижения.Склад = вт_НачальныеОстатки.Склад
			И вт_ОстаткиИДвижения.Номенклатура = вт_НачальныеОстатки.Номенклатура
			И вт_ОстаткиИДвижения.ХарактеристикаНоменклатуры = вт_НачальныеОстатки.ХарактеристикаНоменклатуры
			И вт_ОстаткиИДвижения.ДокументРезерва = вт_НачальныеОстатки.ДокументРезерва
			И вт_ОстаткиИДвижения.ЗаказПоставщику = вт_НачальныеОстатки.ЗаказПоставщику
			}
	ЛЕВОЕ СОЕДИНЕНИЕ вт_Движения КАК вт_Движения
		ПО	ИСТИНА
			{
			И вт_Движения.Склад = вт_ОстаткиИДвижения.Склад
			И вт_Движения.Номенклатура = вт_ОстаткиИДвижения.Номенклатура
			И вт_Движения.ХарактеристикаНоменклатуры = вт_ОстаткиИДвижения.ХарактеристикаНоменклатуры
			И вт_Движения.ДокументРезерва = вт_ОстаткиИДвижения.ДокументРезерва
			И вт_Движения.ЗаказПоставщику = вт_ОстаткиИДвижения.ЗаказПоставщику
			}
			И вт_Движения.РегистраторМоментВремени < вт_ОстаткиИДвижения.РегистраторМоментВремени
СГРУППИРОВАТЬ ПО
	вт_ОстаткиИДвижения.Склад,
	вт_ОстаткиИДвижения.Номенклатура,
	вт_ОстаткиИДвижения.ХарактеристикаНоменклатуры,
	вт_ОстаткиИДвижения.ДокументРезерва,
	вт_ОстаткиИДвижения.ЗаказПоставщику,
	вт_ОстаткиИДвижения.ПериодСекунда,
	вт_ОстаткиИДвижения.Регистратор
;
////////////////////////////////////////////
УНИЧТОЖИТЬ вт_НачальныеОстатки
;
////////////////////////////////////////////
УНИЧТОЖИТЬ вт_Движения
;
				

Выполняемые в этом запросе действия уже не столь очевидны и требуют дополнительного пояснения.
Рассчет начального остатка по регистратору проиллюстрирован на следующем рисунке.
Иллюстрация расчета остатка на момент регистратора
Как видно из рисунка, начальный остаток по регистратору получается путем взятия остатка на начало периода отчета, прибавления к нему всех приходов за период от начала отчета до момента регистратора, и отнимания от него всех расходов за этот же период.

Технически это реализуется следующим образом. К полученной ранее таблице вт_ОстаткиИДвижения, которая в данном запросе используется как поставщик всех попавших в отчет значений измерений, левым соединением присоединяется таблица начальных остатков. Соединение происходит по всем используемым измерениям, но без учета регистраторов. Т.е. в рамках одной комбинации значений измерений, для каждого регистратора, значение остатка на начало периода отчета получается одинаковым. Поэтому в формуле расчета начального остатка на момент регистратора, это значение берется с помощью функции МАКСИМУМ - чтобы не было необходимости включать его в список полей группировки.
Далее, к этой же таблице левым соединением присоединяется таблица движений, которые были до момента регистратора (исключительно)

вт_Движения.РегистраторМоментВремени < вт_ОстаткиИДвижения.РегистраторМоментВремени
И в формуле расчета начального остатка на момент регистратора, сумма приходов прибавляется, а сумма расходов отнимается.

Еще следует обратить внимание на использование в условиях связей таблиц незадокументированной (для платформы 8.3.10.2699) возможности расширения языка запросов для построителя. Когда я писал эту конструкцию, то искренне надеялся, что система компоновки данных, из заключенных в фигурные скобки условий связи таблиц, будет использовать только условия по тем полям, которые участвуют в выборке.
До того, чтобы с помощью технологического журнала смотреть на исполняемые в действительности запросы, я еще не дошел, поэтому не могу сказать наверняка ли эта конструкция действует таким образом, как я себе представлял, но то, что без нее результаты не всегда получаются корректными - это опытным путем проверено.

И наконец, финальным запросом пакета выбираем начальные остатки по регистраторам, добавляем к ним движения - приход и расход, и рассчитываем конечные остатки по регистраторам, как

НачальныйОстаток + Приход - Расход
Также из поля ПериодСекунда выделяем нужные нам периодичности
НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, ГОД)        КАК ПериодГод,
НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, ПОЛУГОДИЕ)  КАК ПериодПолугодие,
НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, КВАРТАЛ)    КАК ПериодКвартал,
НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, МЕСЯЦ)      КАК ПериодМесяц,
НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, ДЕНЬ)       КАК ПериодДень,
				
И еще, при необходимости, добавляем описание доступных для использования пользователю характеристик объектов базы данных, чтобы пользователи могли использовать в отчете не только реквизиты объектов, но и их дополнительные свойства, характеристики и т.п.

Результирующий запрос пакета выглядит вот так:

//////////////////////////////////////////////
// Запрос-результат
ВЫБРАТЬ
	вт_НачальныеОстаткиПоРегистраторам.Склад                                    КАК Склад,
	вт_НачальныеОстаткиПоРегистраторам.Номенклатура                             КАК Номенклатура,
	вт_НачальныеОстаткиПоРегистраторам.ХарактеристикаНоменклатуры               КАК ХарактеристикаНоменклатуры,
	вт_НачальныеОстаткиПоРегистраторам.ДокументРезерва                          КАК ДокументРезерва,
	вт_НачальныеОстаткиПоРегистраторам.ЗаказПоставщику                          КАК ЗаказПоставщику,
	НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, ГОД)        КАК ПериодГод,
	НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, ПОЛУГОДИЕ)  КАК ПериодПолугодие,
	НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, КВАРТАЛ)    КАК ПериодКвартал,
	НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, МЕСЯЦ)      КАК ПериодМесяц,
	НАЧАЛОПЕРИОДА(вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда, ДЕНЬ)       КАК ПериодДень,
	вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда                            КАК ПериодСекунда,
	вт_НачальныеОстаткиПоРегистраторам.Регистратор                              КАК Регистратор,
	// Остаток
	СУММА(вт_НачальныеОстаткиПоРегистраторам.ОстатокНачальныйОстаток)           КАК ОстатокНачальныйОстаток,
	МАКСИМУМ(вт_ОстаткиИДвижения.ОстатокПриход)                                 КАК ОстатокПриход,
	МАКСИМУМ(вт_ОстаткиИДвижения.ОстатокРасход)                                 КАК ОстатокРасход,
	(
		СУММА(вт_НачальныеОстаткиПоРегистраторам.ОстатокНачальныйОстаток)
		+ МАКСИМУМ(вт_ОстаткиИДвижения.ОстатокПриход)
		- МАКСИМУМ(вт_ОстаткиИДвижения.ОстатокРасход)
	)                                                                           КАК ОстатокКонечныйОстаток,
	// Резерв
	СУММА(вт_НачальныеОстаткиПоРегистраторам.РезервНачальныйОстаток)            КАК РезервНачальныйОстаток,
	МАКСИМУМ(вт_ОстаткиИДвижения.РезервПриход)                                  КАК РезервПриход,
	МАКСИМУМ(вт_ОстаткиИДвижения.РезервРасход)                                  КАК РезервРасход,
	(
		СУММА(вт_НачальныеОстаткиПоРегистраторам.РезервНачальныйОстаток)
		+ МАКСИМУМ(вт_ОстаткиИДвижения.РезервПриход)
		- МАКСИМУМ(вт_ОстаткиИДвижения.РезервРасход)
	)                                                                           КАК РезервКонечныйОстаток,
	// Ожидаемая поставка
	СУММА(вт_НачальныеОстаткиПоРегистраторам.ОжидаемаяПоставкаНачальныйОстаток) КАК ОжидаемаяПоставкаНачальныйОстаток,
	МАКСИМУМ(вт_ОстаткиИДвижения.ОжидаемаяПоставкаПриход)                       КАК ОжидаемаяПоставкаПриход,
	МАКСИМУМ(вт_ОстаткиИДвижения.ОжидаемаяПоставкаРасход)                       КАК ОжидаемаяПоставкаРасход,
	(
		СУММА(вт_НачальныеОстаткиПоРегистраторам.ОжидаемаяПоставкаНачальныйОстаток)
		+ МАКСИМУМ(вт_ОстаткиИДвижения.ОжидаемаяПоставкаПриход)
		- МАКСИМУМ(вт_ОстаткиИДвижения.ОжидаемаяПоставкаРасход)
	)                                                                           КАК ОжидаемаяПоставкаКонечныйОстаток,
	// Резерв в поставке
	СУММА(вт_НачальныеОстаткиПоРегистраторам.РезервВПоставкеНачальныйОстаток)   КАК РезервВПоставкеНачальныйОстаток,
	МАКСИМУМ(вт_ОстаткиИДвижения.РезервВПоставкеПриход)                         КАК РезервВПоставкеПриход,
	МАКСИМУМ(вт_ОстаткиИДвижения.РезервВПоставкеРасход)                         КАК РезервВПоставкеРасход,
	(
		СУММА(вт_НачальныеОстаткиПоРегистраторам.РезервВПоставкеНачальныйОстаток)
		+ МАКСИМУМ(вт_ОстаткиИДвижения.РезервВПоставкеПриход)
		- МАКСИМУМ(вт_ОстаткиИДвижения.РезервВПоставкеРасход)
	)                                                                           КАК РезервВПоставкеКонечныйОстаток
{
ВЫБРАТЬ
	Склад.*                           КАК Склад,
	Номенклатура.*                    КАК Номенклатура,
	ХарактеристикаНоменклатуры.*      КАК ХарактеристикаНоменклатуры,
	ДокументРезерва.*                 КАК ДокументРезерва,
	ЗаказПоставщику.*                 КАК ЗаказПоставщику,
	ПериодГод                         КАК ПериодГод,
	ПериодПолугодие                   КАК ПериодПолугодие,
	ПериодКвартал                     КАК ПериодКвартал,
	ПериодМесяц                       КАК ПериодМесяц,
	ПериодДень                        КАК ПериодДень,
	ПериодСекунда                     КАК ПериодСекунда,
	Регистратор.*                     КАК Регистратор,
	ОстатокНачальныйОстаток           КАК ОстатокНачальныйОстаток,
	ОстатокПриход                     КАК ОстатокПриход,
	ОстатокРасход                     КАК ОстатокРасход,
	ОстатокКонечныйОстаток            КАК ОстатокКонечныйОстаток,
	РезервНачальныйОстаток            КАК РезервНачальныйОстаток,
	РезервПриход                      КАК РезервПриход,
	РезервРасход                      КАК РезервРасход,
	РезервКонечныйОстаток             КАК РезервКонечныйОстаток,
	ОжидаемаяПоставкаНачальныйОстаток КАК ОжидаемаяПоставкаНачальныйОстаток,
	ОжидаемаяПоставкаПриход           КАК ОжидаемаяПоставкаПриход,
	ОжидаемаяПоставкаРасход           КАК ОжидаемаяПоставкаРасход,
	ОжидаемаяПоставкаКонечныйОстаток  КАК ОжидаемаяПоставкаКонечныйОстаток,
	РезервВПоставкеНачальныйОстаток   КАК РезервВПоставкеНачальныйОстаток,
	РезервВПоставкеПриход             КАК РезервВПоставкеПриход,
	РезервВПоставкеРасход             КАК РезервВПоставкеРасход,
	РезервВПоставкеКонечныйОстаток    КАК РезервВПоставкеКонечныйОстаток
}
ИЗ
	вт_НачальныеОстаткиПоРегистраторам КАК вт_НачальныеОстаткиПоРегистраторам
	ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт_ОстаткиИДвижения КАК вт_ОстаткиИДвижения
		ПО	ИСТИНА
			{
			И вт_НачальныеОстаткиПоРегистраторам.Склад = вт_ОстаткиИДвижения.Склад
			И вт_НачальныеОстаткиПоРегистраторам.Номенклатура = вт_ОстаткиИДвижения.Номенклатура
			И вт_НачальныеОстаткиПоРегистраторам.ХарактеристикаНоменклатуры = вт_ОстаткиИДвижения.ХарактеристикаНоменклатуры
			И вт_НачальныеОстаткиПоРегистраторам.ДокументРезерва = вт_ОстаткиИДвижения.ДокументРезерва
			И вт_НачальныеОстаткиПоРегистраторам.ЗаказПоставщику = вт_ОстаткиИДвижения.ЗаказПоставщику
			}
			И вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда = вт_ОстаткиИДвижения.ПериодСекунда
			И вт_НачальныеОстаткиПоРегистраторам.Регистратор = вт_ОстаткиИДвижения.Регистратор
СГРУППИРОВАТЬ ПО
	вт_НачальныеОстаткиПоРегистраторам.Склад,
	вт_НачальныеОстаткиПоРегистраторам.Номенклатура,
	вт_НачальныеОстаткиПоРегистраторам.ХарактеристикаНоменклатуры,
	вт_НачальныеОстаткиПоРегистраторам.ДокументРезерва,
	вт_НачальныеОстаткиПоРегистраторам.ЗаказПоставщику,
	вт_НачальныеОстаткиПоРегистраторам.ПериодСекунда,
	вт_НачальныеОстаткиПоРегистраторам.Регистратор
////////////////////////////////////////////
// Описание характеристик объектов
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ХарактеристикиНоменклатуры)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ДоговорыКонтрагентов)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ДоговорыКонтрагентов)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ДолжностиОрганизаций)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ДолжностиОрганизаций)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.КонтактныеЛицаКонтрагентов)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_КонтактныеЛицаКонтрагентов)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.КонтактныеЛица)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_КонтактныеЛица)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Контрагенты)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Контрагенты)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ЛичныеКонтакты)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ЛичныеКонтакты)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.НематериальныеАктивы)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_НематериальныеАктивы)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Номенклатура)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.НоменклатурныеГруппы)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_НоменклатурныеГруппы)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Организации)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Организации)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ОсновныеСредства)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ОсновныеСредства)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ПодразделенияОрганизаций)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ПодразделенияОрганизаций)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Подразделения)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Подразделения)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Проекты)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Проекты)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ПрофилиПолномочийПользователей)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ПрофилиПользователей)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Склады)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Склады)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.СотрудникиОрганизаций)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_СотрудникиОрганизаций)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ФизическиеЛица)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ФизическиеЛица)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Документ.ЗаказПокупателя)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документ_ЗаказПокупателя)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Документ)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				СвойстваОбъектов.Ссылка,
				СвойстваОбъектов.Наименование + " (характеристика)" КАК Наименование,
				СвойстваОбъектов.ТипЗначения
			ИЗ
				ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
			ГДЕ
				СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)
				И НЕ СвойстваОбъектов.ПометкаУдаления
				И НЕ СвойстваОбъектов.Категория
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Свойство
	ПОЛЕЗНАЧЕНИЯ Значение
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ФизическиеЛица)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				ВидыКонтактнойИнформации.Ссылка,
				ВЫБОР
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (телефон)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес электронной почты)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (веб-страница)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
						ТОГДА ВидыКонтактнойИнформации.Наименование
				КОНЕЦ КАК Наименование,
				"" КАК Тип
			ИЗ
				Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
			ГДЕ
				ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.ФизическиеЛица)
				И НЕ ВидыКонтактнойИнформации.ПометкаУдаления
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ Тип
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КонтактнаяИнформация
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Вид
	ПОЛЕЗНАЧЕНИЯ Представление
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.КонтактныеЛица)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				ВидыКонтактнойИнформации.Ссылка,
				ВЫБОР
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (телефон)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес электронной почты)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (веб-страница)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
						ТОГДА ВидыКонтактнойИнформации.Наименование
				КОНЕЦ КАК Наименование,
				"" КАК Тип
			ИЗ
				Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
			ГДЕ
				ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.КонтактныеЛица)
				И НЕ ВидыКонтактнойИнформации.ПометкаУдаления
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ Тип
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КонтактнаяИнформация
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Вид
	ПОЛЕЗНАЧЕНИЯ Представление
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Организации)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				ВидыКонтактнойИнформации.Ссылка,
				ВЫБОР
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (телефон)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес электронной почты)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (веб-страница)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
						ТОГДА ВидыКонтактнойИнформации.Наименование
				КОНЕЦ КАК Наименование,
				"" КАК Тип
			ИЗ
				Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
			ГДЕ
				ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.Организации)
				И НЕ ВидыКонтактнойИнформации.ПометкаУдаления
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ Тип
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КонтактнаяИнформация
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Вид
	ПОЛЕЗНАЧЕНИЯ Представление
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Пользователи)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				ВидыКонтактнойИнформации.Ссылка,
				ВЫБОР
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (телефон)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес электронной почты)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (веб-страница)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
						ТОГДА ВидыКонтактнойИнформации.Наименование
				КОНЕЦ КАК Наименование,
				"" КАК Тип
			ИЗ
				Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
			ГДЕ
				ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.Пользователи)
				И НЕ ВидыКонтактнойИнформации.ПометкаУдаления
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ Тип
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КонтактнаяИнформация
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Вид
	ПОЛЕЗНАЧЕНИЯ Представление
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.Контрагенты)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				ВидыКонтактнойИнформации.Ссылка,
				ВЫБОР
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (телефон)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес электронной почты)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (веб-страница)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
						ТОГДА ВидыКонтактнойИнформации.Наименование
				КОНЕЦ КАК Наименование,
				"" КАК Тип
			ИЗ
				Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
			ГДЕ
				ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.Контрагенты)
				И НЕ ВидыКонтактнойИнформации.ПометкаУдаления
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ Тип
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КонтактнаяИнформация
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Вид
	ПОЛЕЗНАЧЕНИЯ Представление
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.КонтактныеЛицаКонтрагентов)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				ВидыКонтактнойИнформации.Ссылка,
				ВЫБОР
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (телефон)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес электронной почты)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (веб-страница)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
						ТОГДА ВидыКонтактнойИнформации.Наименование
				КОНЕЦ КАК Наименование,
				"" КАК Тип
			ИЗ
				Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
			ГДЕ
				ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.КонтактныеЛицаКонтрагентов)
				И НЕ ВидыКонтактнойИнформации.ПометкаУдаления
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ Тип
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КонтактнаяИнформация
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Вид
	ПОЛЕЗНАЧЕНИЯ Представление
}
{ХАРАКТЕРИСТИКИ
	ТИП(Справочник.ЛичныеКонтакты)
	ВИДЫХАРАКТЕРИСТИК
		(
			ВЫБРАТЬ
				ВидыКонтактнойИнформации.Ссылка,
				ВЫБОР
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (телефон)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (адрес электронной почты)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
						ТОГДА ВидыКонтактнойИнформации.Наименование + " (веб-страница)"
					КОГДА ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
						ТОГДА ВидыКонтактнойИнформации.Наименование
				КОНЕЦ КАК Наименование,
				"" КАК Тип
			ИЗ
				Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
			ГДЕ
				ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.ЛичныеКонтакты)
				И НЕ ВидыКонтактнойИнформации.ПометкаУдаления
		)
	ПОЛЕКЛЮЧА Ссылка
	ПОЛЕИМЕНИ Наименование
	ПОЛЕТИПАЗНАЧЕНИЯ Тип
	ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КонтактнаяИнформация
	ПОЛЕОБЪЕКТА Объект
	ПОЛЕВИДА Вид
	ПОЛЕЗНАЧЕНИЯ Представление
}
;
////////////////////////////////////////////
УНИЧТОЖИТЬ вт_ОстаткиИДвижения
;
////////////////////////////////////////////
УНИЧТОЖИТЬ вт_НачальныеОстаткиПоРегистраторам
;
				

Теперь перейдем к настройке полей набора данных.

В первую очередь отключим автозаполнение полей, чтобы СКД не включала в список полей те измерения регистров, на которые мы не рассчитывали.
Отключение автозаполнения полей

Далее, для всех используемых в отчете измерений укажем роль "Измерение".
Указание роли для Измерений

Для начальных и конечных остатков ресурсов укажем соответствующую роль и принадлежность к ресурсу.
Указание роли для начальных и конечных остатков

Чтобы при настройке отчета, разные значения одного ресурса были объединены в одну группу, пропишем путь соответствующих полей через точку, указывая перед точкой желаемое имя группы.
Настройка группировки значений ресурсов
И заодно дадим значениям ресурсов более читаемые заголовки.

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

На закладке "Вычиляемые поля" добавим расчет полей "Свободный остаток", "Свободно в поставке" и "План".
Настройка вычисляемых полей

На закладке "Ресурсы" настроим расчет ресурсов отчета.
Обратите внимание, что для вычисляемых полей, соответствующий ресурс рассчитываем не как сумму по полю, а повторив формулу вычисления поля, взяв от каждого используемого в формуле ресурса значение суммы:
Настройка ресурсов

На закладке "Параметры" добавим доступный пользователю параметр "Период" типа СтандартныйПериод, а используемые в запросе параметры "ПериодНачало" и "ПериодОкончание" сделаем недоступными для пользователя и заполняемыми из параметра "Период".
Настройка параметров

И наконец, на закладке "Настройки", для варианта "Основной" создадим требуемую нам тестовую иерархию группировок отчета, с разворотом данных до регистратора.
Настройка тестового варианта
Обратите внимание, что теперь нет необходимости, с помощью отбора на группировке "Регистратор", скрывать значения Регистратор = Неопределено, как мы это делали в случае выборки данных из виртуальных таблиц ОстаткиИОбороты (см. "Ошибочное решение").

Отчет готов.
Если его сохранить и запустить в демо базе, то можно увидеть что обнаруженные ранее ошибки исчезли, и теперь он корректно рассчитывает остатки.
Правильный результат отчета
И даже если в отчет добавить группировки по периодам, то можно заметить, что остатки на границы периодов тоже считаются корректно.
Правильный результат отчета с группировкой по периодам

Файлы для скачивания

ПримерНекорректноРаботающегоОтчета.erf (11 КБ)
КорректноРаботающийОтчет.erf (14 КБ)