PowerApps Подключение к 1С часть 2

Posted by     "Andrey Paltusov" on Thursday, July 18, 2019

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