При разработке отчетов или обработок на платформе 1С часто возникает задача получить данные из табличной части документа. Начинающие разработчики нередко сталкиваются с трудностями, пытаясь «дотянуться» до реквизитов документа, когда работают с его табличными частями. Давайте разберем, как сделать это максимально эффективно, чисто и профессионально.
В исходном запросе автора используется конструкция, при которой табличная часть выбирается «внутри» запроса к документу. Хотя это технически работает, такой подход создает вложенную структуру данных. В результате данные табличной части становятся зависимыми от шапки, что затрудняет последующую выгрузку в плоскую таблицу или использование этих данных в системе компоновки данных (СКД) без дополнительных преобразований.
Наиболее правильным и производительным способом является обращение непосредственно к табличной части как к самостоятельной таблице базы данных. Вместо того чтобы выбирать сам документ, мы выбираем его табличную часть. При этом реквизиты «шапки» документа (например, Дата, Склад) остаются доступными нам через поле Ссылка.
Рассмотрим, как это выглядит на практике:
ВЫБРАТЬ
Материалы.Ссылка КАК Документ,
Материалы.Ссылка.Дата КАК ДатаДокумента,
Материалы.Ссылка.Склад КАК Склад,
Материалы.Номенклатура КАК Номенклатура
ИЗ
Документ.ОприходованиеМатериаловИзПроизводства.Материалы КАК Материалы
Разберем этот запрос по шагам:
Документ.ИмяДокумента.ИмяТабличнойЧасти. Это позволяет системе сразу обращаться к индексированным данным строк ТЧ.Материалы), чтобы запрос был читаемым.Ссылка: Материалы.Ссылка.Дата. Платформа 1С оптимизирует этот вызов, выполняя внутреннее соединение с таблицей документов.Чтобы код выглядел лаконично и профессионально, рекомендуется давать таблицам понятные имена. Рассмотрим еще один пример структуры запроса:
ВЫБРАТЬ
ТЧ.Ссылка КАК Ссылка,
ТЧ.Ссылка.Дата КАК Дата,
ТЧ.Номенклатура КАК Номенклатура
ИЗ
Документ.ОприходованиеМатериаловИзПроизводства.Материалы КАК ТЧ
В данном примере мы используем короткий псевдоним ТЧ для табличной части. Это существенно упрощает чтение кода, особенно если в запросе участвуют несколько табличных частей или дополнительные соединения.
ТабличныйДокумент или ТаблицуЗначений.ГДЕ, обращаясь к ТЧ.Ссылка.Дата.Мы выяснили, что для решения задачи не нужно использовать сложные вложенные выборки. Достаточно следовать правилу: если нужны данные табличной части, делайте запрос к этой табличной части. Реквизиты шапки документа при этом всегда доступны через точку от поля Ссылка.
Этот метод является стандартом разработки в 1С. Используя такой подход, вы обеспечите высокую скорость работы ваших отчетов и облегчите поддержку кода в будущем.