Contents
Чтение списка
В этой статье я покажу как работать с пользовательскими подключениями в PowerApps, в частности с подключением к 1C. Настройку такого подключения я рассматривал в предыдущей статье. Подробно рассматривать все шаги создания приложения я не буду. В интернете вы можете достаточное количество обучающего материала на эту тему или же посмотреть мой пример. Я рассмотрю лишь ключевые действия, которые могут вызвать затруднения в реализации Для начала попробуем прочитать список документов, в нашем примере это будут авансовые отчеты. Добавляем наш пользовательский источник:
Добавляем на экран галерею и настраиваем источник данных для нее.
По желанию можно изменить состав полей и данные в них под ваши требования
Создание документа
Теперь рассмотрим пример вызова создания документа из PowerApps. Создаем форму с полями и кнопкой для сохранения данных:
Действие по нажатию сохранения будет выглядеть следующим образом:
Set(
entityId;
OData1C.CreateAdvanceReportHeader(
{
Accept: "application/json";
ВалютаДокумента_Key: "a8c61b74-cc0d-11e5-9653-3085a93ddca2";
Организация_Key: "8a276db6-ce58-11e5-982d-14dae9b19a48";
Склад_Key: "c23de3dc-cc0d-11e5-9653-3085a93ddca2";
ФизЛицо_Key: "8a276dc7-ce58-11e5-982d-14dae9b19a48";
ДатаНачалаКомандировки: Text(
varArNewDateFrom;
DateTimeFormat.UTC
);
ДатаОкончанияКомандировки: Text(
varArNewDateTo;
DateTimeFormat.UTC
)
}
).Ref_Key
);;
Back()
Обновление табличной части
Самым сложным действием является обновление табличной части, потому что обновление производится всех строк сразу. Т.е. добавление каждой строки должно производится в переменную типа массив.
Collect(
AdvanceReportRowsTemp;
{
Содержание: txtArRowContent.Text;
Сумма: Value(txtArRowSum.Text);
ВидДокВходящий: ddArRowType.SelectedText.Value
}
);;
Back()
Когда работа со строками закончена, нужно сохранить все строки авансового отчета.
Сохранения табличной части выглядит следующим образом:
Clear(ReportRows);;
ForAll(
AdvanceReportRowsTemp;
Collect(
ReportRows;
Last(
FirstN(
AddColumns(
AdvanceReportRowsTemp;
"LineNumber";
Text(CountRows(ReportRows) + 1);
"Ref_Key";
varArNewEntityId;
"СтавкаНДС";
"НДС18";
"СуммаНДС";
Text(Сумма * 0,18)
);
CountRows(ReportRows) + 1
)
)
)
);;
OData1C.UpdateAdvanceReportRows(
varArNewEntityId;
{
Accept: "application/json";
'ВидОперации ': "Прочее";
Прочее: ReportRows
}
);;
Back()
Здесь определяется еще одна временная переменная «ReportRows», в которую переносятся данные из табличной переменной «AdvanceReportRowsTemp» и попутно проставляется нумерация строк и считается НДС. В переменной «varArNewEntityId» хранится идентификатор выбранной строки из списка авансовых отчетов.
Итог
В итоге мы получаем приложение в PowerApps, которое работает с базой 1С. Это может помочь решить множество повседневных офисных задач.
--Andrey Paltusov--
comments powered by Disqus