我想了解如何最好地显示集合和集合数量 - 通过链接或使用参数?我读过,派生字段与其他字段用点分隔是不可取的。
ВЫБРАТЬ
СборкаСписокНоменклатуры.Ссылка.Комплект КАК Комплект,
СУММА(СборкаСписокНоменклатуры.Ссылка.Количество) КАК КоличествоКомплектов,
СборкаСписокНоменклатуры.Номенклатура КАК Номенклатура,
СУММА(СборкаСписокНоменклатуры.Количество) КАК Количество
ПОМЕСТИТЬ втТЧТовары
ИЗ
Документ.Сборка.СписокНоменклатуры КАК СборкаСписокНоменклатуры
ГДЕ
СборкаСписокНоменклатуры.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
СборкаСписокНоменклатуры.Номенклатура,
СборкаСписокНоменклатуры.Ссылка.Комплект
ИНДЕКСИРОВАТЬ ПО
Комплект,
Номенклатура
在这种情况下,您的请求是足够的,并且不包含任何需要优化的地方。
如果您有复合类型的字段,则不建议在查询中通过点检索字段(也称为“取消引用”) 。因为取消引用会导致隐式表连接。例如,让我们假设,“链接”字段具有复合类型(尽管在您的示例中不能是),并且可以包含指向 Document1、Document2、Document3 的链接。
然后是行:
将隐式创建这些文档的三个左连接。也就是说,我们知道如果有 50 个文档而不是 3 个文档会发生什么。
但我觉得您混淆了取消引用建议,该建议仅适用于代码,而不适用于查询语言的上下文。重点是不建议通过dot从链接接收details的值。例如:
因为为了获取交易对手值,平台隐式地从数据库中读取整个对象(DocumentAssembly)。如果文档有一堆值得 N 大小的详细信息,此外还有一车表格零件怎么办?她会加载这一切。因此,建议使用查询从引用中获取属性值。在典型的基于 BSP 的配置中,通用“通用”模块中有方便的方法“ObjectAttributeValue()”和“ObjectAttributeValue()”用于此目的。