Содержание

Обращение к табличным частям документа в форме списка

Часто требуется показать в форме списка документа итог по реквизитам табличных частей, таких как Сумма, Итого и т.п. Для этого можно завести специальные реквизиты, которые заполнять в процедуре ПередЗаписью в модуле документа. Но эту же задачу можно выполнить запросом - не выгоняя пользователей и не перепроводя все старые документы.

В качестве тестового примера возьмем конфигурацию с одним документом (ссылка на скачивание - см. ниже).

В документе ПриходнаяНакладная есть реквизиты шапки Реквизит1, Реквизит2, Реквизит3, Табличные части Тч1 и Тч2, в каждой из которых есть реквизиты Сумма и Количество.

Автоматически система генерирует запрос такого вида:

ВЫБРАТЬ
  ДокументПриходнаяНакладная.Ссылка,
	ДокументПриходнаяНакладная.ПометкаУдаления,
	ДокументПриходнаяНакладная.Номер,
	ДокументПриходнаяНакладная.Дата,
	ДокументПриходнаяНакладная.Проведен,
	ДокументПриходнаяНакладная.Реквизит1,
	ДокументПриходнаяНакладная.Реквизит2,
	ДокументПриходнаяНакладная.Реквизит3,
	ДокументПриходнаяНакладная.Тч1,
	ДокументПриходнаяНакладная.Тч2,
	ДокументПриходнаяНакладная.МоментВремени
ИЗ
	Документ.ПриходнаяНакладная КАК ДокументПриходнаяНакладная

Мы изменим этот запрос так, чтобы он обращался к данным табличных частей документа:

ВЫБРАТЬ
  ДокументПриходнаяНакладная.Ссылка,
	ДокументПриходнаяНакладная.ПометкаУдаления,
	ДокументПриходнаяНакладная.Номер,
	ДокументПриходнаяНакладная.Дата,
	ДокументПриходнаяНакладная.Проведен,
	ДокументПриходнаяНакладная.Реквизит1,
	ДокументПриходнаяНакладная.Реквизит2,
	ДокументПриходнаяНакладная.Реквизит3,
	ДокументПриходнаяНакладная.МоментВремени,
	ВложенныйЗапрос1.Сумма1,
	ВложенныйЗапрос1.Количество1,
	ВложенныйЗапрос2.Сумма2,
	ВложенныйЗапрос2.Количество2
ИЗ
	Документ.ПриходнаяНакладная КАК ДокументПриходнаяНакладная
  

		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			Тч1.Ссылка КАК Ссылка1,
			СУММА(Тч1.Сумма) КАК Сумма1,
			СУММА(Тч1.Количество) КАК Количество1
		ИЗ
			Документ.ПриходнаяНакладная.Тч1 КАК Тч1
		
		СГРУППИРОВАТЬ ПО
			Тч1.Ссылка) КАК ВложенныйЗапрос1
		ПО ДокументПриходнаяНакладная.Ссылка = ВложенныйЗапрос1.Ссылка1
  

		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			Тч2.Ссылка КАК Ссылка2,
			СУММА(Тч2.Сумма) КАК Сумма2,
			СУММА(Тч2.Количество) КАК Количество2
		ИЗ
			Документ.ПриходнаяНакладная.Тч2 КАК Тч2
		
		СГРУППИРОВАТЬ ПО
			Тч2.Ссылка) КАК ВложенныйЗапрос2
		ПО ДокументПриходнаяНакладная.Ссылка = ВложенныйЗапрос2.Ссылка2

Запрос обращается к табличным частям, которые в этом примере названы как Тч1 и Тч2.

Части запроса, которые выполняют это обращение, на картинке ниже обведены в рамку:

Изменение запроса на форме списка документов

Чтобы изменить запрос формы списка, нужно сделать следующее:

То есть, в открытой в конфигураторе форме списка документов дважды щелкаем на реквизит «Список», открываем его свойства и там выставляем, как показано на картинке выше, флажок «ПроизвольныйЗапрос» и щелкаем на ссылку «Настройка списка».

Чтобы форма списка с измененным запросом «вела себя» как обычная форма списка документов, надо выставить реквизит «Основная таблица», для оптимизации на больших базах можно поставить галочку «Динамическое считывание данных».

Запрос в конструкторе

Вложенный запрос можно вписать вручную по аналогии с показанным примером, либо сформировать в конструкторе запросов.

Группировки:

Связи вложенного запроса с основной таблицей документа:

Показанная на рисунке выше настройка связей - это то же самое, что и конструкция «ЛЕВОЕ СОЕДИНЕНИЕ … ПО» в самом тексте запроса:

Настройка псевдонимов полей производится либо на закладке Объединения/Псевдонимы

либо в тексте запроса в выражении КАК:

Размещение реквизитов на форме списка

Полученные реквизиты нужно перетащить на форму, чтобы получилось вот это:

Тестовый пример конфигурации

Тестовый пример конфигурации (для 1С:Предприятие 8.3 (8.3.4.482) можно скачать по ссылке https://yadi.sk/d/m80WvLg9ZVudS ).