Теперь добавлям входной параметр для фильтрации заказов по клиенту
Указываем имя и ЕДТ
Здесь же можем управлять формулами для опций Только чтение и Значение по умолчанию (эти две опции появились только в версии 10.0.27) для вх.параметра
Теперь создаем вычисляемое поле FilterCustAccount
C формулой
Код:
IF(CustAccount="",SalesTable,FILTER(SalesTable, SalesTable.CustAccount = CustAccount))
Использование проверки позволит не фильтровать заказы по клиенту, если клиент не задан.
Теперь свяжем выч.поле FilterCustAccount слева и SalesOrders справа
На вопрос изменить ли привязку ответим "Да"
Сохраняем изменения, завершаем модель
Подготовим шаблон для выгрузки отчета
У нас должно быть три диапазон - на проводки, на строки и на весь заказ в целом.
И именованные ячейки для каждого поля:
Создаем формат для нашей модели, назовем его TrainerITSalesOrdersFormat, загрузим в него наш файл
У нас создадутся диапазоны, поддиапазоны и ячейки в соответствии с шаблоном.
Переходим на вкладку Сопоставление и связываем диапазоны со списками записей, а ячейки с полями.
Получим картинку:
Сохраняем и завершаем формат.
В итоге у нас получается вот такая выгрузка:
Правда, это уже в формате pdf (автоматическое преобразование). Но в Excel выглядит идентично.
И наконец создадим класс для выгрузки нашего отчета программно, а не из конфигурации эл.отчетности
X++:
using Microsoft.Dynamics365.LocalizationFramework;
internal final class SalesOrdersHeaderLines
{
static void main(Args _args)
{
SalesOrdersHeaderLines salesOrdersHeaderLines = new SalesOrdersHeaderLines();
CustTable custTable = _args.record();
CustAccount custAccount = custTable.AccountNum;
salesOrdersHeaderLines.run(custAccount);
}
public void run(CustAccount _custAccount)
{
ERFormatMappingTable formatMapping;
ERFormatMappingId formatMappingId;
select firstonly formatMapping
where formatMapping.Name == "TrainerITSalesOrdersFormat";
formatMappingId = formatMapping.Format;
const str modelStr = "model";
const str custAccountStr = "CustAccount";
try
{
ERModelDefinitionInputParametersAction eRModelDefinitionInputParametersAction = new ERModelDefinitionInputParametersAction();
eRModelDefinitionInputParametersAction.addParameter(ERPath::Combine(modelStr, custAccountStr), _custAccount);
ERObjectsFactory::createFormatMappingRunByFormatMappingId(formatMappingId)
.withParameter(eRModelDefinitionInputParametersAction)
.withFileDestination(ERObjectsFactory::createFileDestinationBrowser()).run();
}
catch
{
error("Ошибка");
}
}
}
Теперь данный класс можно как запустить самостоятельно, так и привязать к MenuItem, вывести этот MenuItem на расширение формы клиентов и получить отчет, показывающий заказы для выбранного клиента.