Утверждения накладных на мобильном устройстве

Мобильные возможности позволяют бизнес-пользователю разрабатывать мобильное взаимодействие. Для более сложных сценариев платформа также позволяет разработчикам расширять возможности при необходимости. Наиболее эффективный способ познакомиться с некоторыми новыми мобильными концепциями — пройти через процесс разработки нескольких сценариев. Эта статья представляет практический подход к разработке мобильных сценариев на примере утверждения накладных поставщика с использованием мобильного устройства. Эта статья поможет разрабатывать другие варианты сценариев, а также может применяться к другим сценариям, которые не относятся к накладным поставщиков.

Необходимые условия

Необходимые условия Описание
Предварительно ознакомьтесь с руководством по мобильным приложениям Мобильная платформа
Dynamics 365 Finance Среда с версией 1611 и обновлением платформы Platform update 3 (ноябрь 2016 г.)
Установите исправление KB 3204341. Регистратор задач может ошибочно записывать две команды закрытия из раскрывающихся диалоговых окон, которые включены в обновление Platform update 3 (обновление за ноябрь 2016).
Установите исправление KB 3207800. Это исправление позволяет просматривать вложения на мобильном клиенте, который включен в обновление Platform update 3 (обновление за ноябрь 2016).
Установите исправление KB 3208224. Код приложения для мобильного приложения утверждения накладных поставщика, которое входит в версию 7.0.1 (май 2016 г.).
Устройство Android, iOS или Windows, на которое установлено мобильное приложение. Найдите приложение в соответствующем магазине приложений.

Введение

Для мобильного утверждения накладных поставщика требуются три исправления, описанные в разделе "Необходимые условия". Эти исправления не предоставляют рабочую область для утверждения накладных. Чтобы узнать, что рабочая область находится в контексте мобильных устройств, ознакомьтесь с мобильным руководством, которое упомянуто в разделе "Необходимые условия". Рабочая область утверждения накладных должна быть разработана.

Каждая организация организует и определяет свои бизнес-процессы для накладных поставщиков по-разному. Прежде чем разрабатывать мобильные возможности для утверждения накладных поставщиков, следует рассмотреть следующие аспекты бизнес-процесса. Смысл заключается в как можно более полном использовании этих данных для оптимизации работы пользователей на устройстве.

  • Какие поля из заголовка накладной пользователь захочет видеть на мобильных устройствах и в каком порядке?

  • Какие поля из строк накладной пользователь захочет видеть на мобильных устройствах и в каком порядке?

  • Сколько строк накладной содержит накладная? Применяйте здесь правило 80-20 и оптимизируйте для 80 процентов.

  • Требуется ли пользователям видеть распределения по бухгалтерским счетам (кодирование накладных) на мобильном устройстве во время проверок? Если ответ на этот вопрос "Да", рассмотрите следующие вопросы:

    • Сколько распределений по бухгалтерским счетам (сумма без учета скидок и наценок, налог с продаж, расходы, разбиения и т. д.) имеется в строке накладной? Опять же, применяйте правило 80-20.
    • Содержат ли накладные распределения по бухгалтерским счетам также и в заголовке накладной? Если да, должны ли эти распределения по бухгалтерским счетам были доступны на устройстве?

    Примечание

    В этой статье не объясняется, как изменять распределения по бухгалтерским счетам, поскольку эта функция для мобильных сценариев в настоящее время не поддерживается.

  • Требуется ли пользователям просматривать вложения для накладной на устройстве?

Разработка мобильной работы для утверждения накладных будет отличаться в зависимости от ответов на эти вопросы. Целью является оптимизация работы пользователей для бизнес-процесса на мобильным устройстве в организации. В оставшейся части этой статьи рассмотрим два варианта сценария, которые основаны на разных ответах на предыдущие вопросы.

В качестве общих рекомендаций, при работе с мобильным конструктором обязательно публикуйте изменения во избежание потери обновлений.

Разработка простого сценария утверждения накладных для Contoso

Атрибут сценария Ответ
Какие поля из заголовка накладной пользователь захочет видеть на мобильных устройствах и в каком порядке?
  1. Наименование Поставщика
  2. Общее количество по накладной
  3. Счет на
  4. Номер накладной
  5. Дата накладной
  6. Описание накладной
  7. Срок
  8. Валюта накладной
Какие поля из строк накладной пользователь захочет видеть на мобильных устройствах и в каком порядке?
  1. Категория закупаемой продукции
  2. Количество
  3. Цена за ед. изм.
  4. Чистая сумма строки
  5. Сумма по форме 1099
Сколько строк накладной содержит накладная? Применяйте здесь правило 80-20 и оптимизируйте для 80 процентов. 1
Требуется ли пользователям видеть распределения по бухгалтерским счетам (кодирование накладных) на мобильном устройстве во время проверок? Да
Сколько распределений по бухгалтерским счетам (сумма без учета скидок и наценок, налог с продаж, расходы и т. д.) имеется в строке накладной? Опять же, применяйте правило 80-20. Сумма без учета скидок и наценок: 2 Налог: 0 Расходы: 0
Содержат ли накладные распределения по бухгалтерским счетам также и в заголовке накладной? Если да, должны ли эти распределения по бухгалтерским счетам были доступны на устройстве? Не используется
Требуется ли пользователям просматривать вложения для накладной на устройстве? Да

Создание рабочей области

  1. В браузере выполните вход в приложение.
  2. После входа добавьте &mode=mobile к URL-адресу, как показано в следующем примере, и обновите страницу: https://<ваш_URL>/?cmp=usmf&mi=DefaultDashboard**&mode=mobile**
  3. Нажмите кнопку Параметры (шестеренка) в правом верхнем углу страницы, затем нажмите Мобильное приложение. Должен открыться конструктор мобильного приложения, точно так же, как отображается регистратора задач.
  4. Нажмите Добавить, чтобы создать новую рабочую область. Для этого примера назовите рабочую область Мои утверждения.
  5. Введите описание.
  6. Выберите цвет рабочей области. Цвет рабочей области будут использоваться для общего стилевого оформления в мобильном устройстве для этой рабочей области.
  7. Выберите значок для рабочей области.
  8. Щелкните Готово
  9. Нажмите Публикация рабочей области, чтобы сохранить изменения

Накладные поставщика, назначенные мне

Первая страница мобильных устройств, которую следует разработать — это список накладных, назначенных пользователю для проверки. Для разработки этой страницы для мобильных устройств используйте страницу VendMobileInvoiceAssignedToMeListPage. Прежде чем завершить эту процедуру, убедитесь, что по крайней мере одна накладная поставщика назначена вам для проверки, и что строка накладной содержит не менее двух распределений. Эта настройка соответствует требованиям для этого сценария.

  1. В URL-адресе измените имя пункта меню на VendMobileInvoiceAssignedToMeListPage, чтобы открыть мобильную версию страницы списка Ожидающие накладные поставщика, назначенные мне в модуле Расчеты с поставщиками. В зависимости от количества накладных, назначенных вам в системе, на этой странице отображаются эти накладные. Чтобы найти конкретную накладную, используйте расположенный слева фильтр. Однако для этого примере конкретная накладная не требуется. Нам просто нужна какая-то накладная, назначенная вам, которая позволяет разрабатывать страницу для мобильного устройства. Новые доступные страницы были специально разработаны для разработки мобильных сценариев для накладной поставщика. Таким образом, необходимо использовать эти страницы. URL-адрес должен быть похож на следующий URL-адрес, и после его ввода должна открыться страница, которая показана на рисунке: https://<yourURL>/?cmp=usmf&mi=VendMobileInvoiceAssignedToMeListPage&mode=mobile

    Страница ожидающих накладных поставщика, назначенных мне.

  2. Нажмите кнопку Параметры (шестеренка) в правом верхнем углу страницы, затем нажмите Мобильное приложение

  3. Выберите свою рабочую область и нажмите Изменить

  4. Щелкните Добавить страницу для создания первой страницы для мобильных устройств.

  5. Введите имя, например Мои накладные поставщика, и описание, например Накладные поставщика, назначенные мне для проверки.

  6. Щелкните Готово.

  7. В мобильном конструкторе на вкладке Поля нажмите Выбрать поля. Столбцы на странице списка должны быть похожи на следующий рисунок.

    Столбцы на странице

  8. Добавьте необходимые столбцы со страницы списка, которые должны отображаться пользователям на странице мобильного устройства. Порядок, в котором добавляются поля, соответствует порядку, в котором поля отображаются для конечного пользователя. Единственный способ изменить порядок полей — повторно выбрать все поля. На основе требований для этого сценария, нужные следующие восемь полей. Однако некоторые пользователи могут считать, что восемь полей — это слишком большой объем информации для мобильного устройства. Поэтому в представлении списка на мобильном устройстве мы будет отображать только самые важные поля. Остальные поля будут отображаться в табличном представлении, который мы разработаем позже. Пока мы добавим следующие поля. Щелкните знак "плюс" (+) в этих столбцах, чтобы добавить их на страницу мобильных устройств.

    • Наименование Поставщика
    • Общее количество по накладной
    • Счет на
    • Номер накладной
    • Дата накладной

    После добавления этих поля страница мобильных устройств должно быть похожа на страницу на следующем рисунке.

    Страница после добавления полей.

  9. Теперь необходимо также добавить следующие столбцы, чтобы впоследствии можно было включить действия workflow-процесса.

    • Показать задачу завершения
    • Показать задачу делегирования
    • Показать задачу отзыва
    • Показать задачу отклонения
    • Показать задачу запроса завершения
    • Показать задачу повторной отправки
  10. Щелкните Готово, чтобы выйти из режима редактирования.

  11. Щелкните Назад, а затем Готово для выхода из рабочей области

  12. Нажмите Публикация рабочей области, чтобы сохранить свою работу.

  13. Включите Отображать итог по накладной в списке ожидающих накладных поставщика в форме параметров расчетов с поставщиками в разделе Накладная. Обратите внимание, что только в том случае, если этот параметр включен, итоги по накладным будет рассчитываться для отображения на странице списка ожидающих накладных поставщиков. Это новая возможность в рамках необходимого исправления 3208224.

Сведения о накладных поставщика

Для создания страницы сведения о накладной для мобильных устройств используйте страницу VendMobileInvoiceHeaderDetails. Обратите внимание, что, в зависимости от количества накладных, которые имеются в системе, на этой странице отображается самая старая накладная (накладная, которая была создана первой). Чтобы найти конкретную накладную, используйте расположенный слева фильтр. Однако для этого примере конкретная накладная не требуется. Нам просто требуются некоторые данные по накладной, чтобы можно было разрабатывать страницу для мобильных устройств.

Страница workflow-процесса.

  1. В URL-адресе замените имя пункта меню на VendMobileInvoiceHeaderDetails, чтобы открыть форму

  2. Откройте конструктор мобильных устройств с помощью кнопки Параметры (шестеренка).

  3. Щелкните кнопку Изменить для запуска режима редактирования в рабочей области.

  4. Выберите ранее созданную страницу Мои накладные поставщика, затем щелкните Изменить.

  5. На вкладке Поля щелкните заголовок столбца Сетка.

  6. Щелкните Свойства > Добавить страницу. Примечание. При нажатии заголовка Сетка и добавлении страницы автоматически устанавливается связь со страницей сведений.

  7. Введите заголовок страницы, например Сведения о накладной, и описание, например Просмотр заголовка накладной и сведений о строках.

  8. Нажмите Выбор полей. Обратите внимание, что порядок, в котором добавляются поля, соответствует порядку, в котором поля отображаются для конечного пользователя. Единственный способ изменить порядок полей — повторно выбрать все поля.

  9. Добавьте следующие поля из заголовка, на основе требований для этого сценария:

    • Наименование Поставщика
    • Общее количество по накладной
    • Счет на
    • Номер накладной
    • Дата накладной
    • Описание накладной
    • Срок
    • Валюта накладной
  10. Добавьте следующие поля из сетки строк на странице:

    • Категория закупаемой продукции
    • Количество
    • Цена за ед. изм.
    • Чистая сумма строки
    • Сумма по форме 1099
  11. После добавления всех полей из двух предыдущих шагов щелкните Готово. Страница должна выглядеть аналогично показанной на следующем рисунке.

    На рисунке показаны добавленные дополнительные поля.

  12. Щелкните Готово, чтобы выйти из режима редактирования.

  13. Щелкните Назад, а затем Готово для выхода из рабочей области

  14. Нажмите Публикация рабочей области, чтобы сохранить свою работу

Действия workflow-процесса

Для добавления действий рабочего процесса используйте страницу VendMobileInvoiceHeaderDetails. Чтобы открыть эту страницу, замените имя пункта меню в URL-адреса, как было сделано ранее. Затем откройте конструктор мобильных устройств с помощью кнопки Параметры (шестеренка). Выполните следующие шаги для добавления действий workflow-процесса на странице сведений. Необходимо наличие назначенных вам накладных в соответствующем состоянии, делающим доступными вам действия workflow-процесса, для которых вы собираетесь выполнить разработку.

Запись действий workflow-процесса

  1. Щелкните кнопку Изменить для запуска режима редактирования в рабочей области.
  2. Выберите ранее созданную страницу Сведения о накладной, затем щелкните Изменить.
  3. На вкладке Действия нажмите Добавить действие.
  4. Введите заголовок действия, например Утвердить, и описание, например Утвердить накладную. Обратите внимание, что введенное здесь название действия становится именем действия, которое отображается для пользователя в мобильном приложении.
  5. Щелкните Готово.
  6. Нажмите Выбор полей.
  7. Выполните workflow-процесс на странице VendMobileInvoiceHeaderDetails и выполните действие, которое вы хотите записать. Обязательно введите комментарии workflow-процесса во время этого процесса, чтобы поле комментариев также было доступно пользователям мобильного устройства.
  8. После выполнения действия workflow-процесса нажмите кнопку Готово, чтобы завершить задачу "Выбор полей".
  9. Щелкните Готово, чтобы выйти из режима редактирования.
  10. Щелкните Назад, а затем Готово для выхода из рабочей области
  11. Нажмите Публикация рабочей области, чтобы сохранить свою работу
  12. Повторите предыдущие шаги для записи всех необходимых действий workflow-процесса.

Создание JS-файла

  1. Откройте Блокнот или Microsoft Visual Studio и вставьте следующий код. Сохраните файл как файл JS. Этот код выполняет следующие действия:

    • Он скрывает дополнительные столбцы, связанные с workflow-процессом, которые ранее были добавлены на страницу мобильного списка. Мы добавили эти столбцы, чтобы приложение имело эти сведения в контексте и могло выполнить следующий шаг.
    • На основании активного шага бизнес-процесса, он применяет логику для отображения только этих действий.

    Примечание

    Имена страниц и других элементов управления в коде должны быть такими же, как и в рабочей области.

    function main(metadataService, dataService, cacheService, $q) {
           return {
               appInit: function (appMetadata) {
                   // Hide controls that need to be present, but not visible
                   metadataService.configureControl('My-vendor-invoices', 'ShowAccept', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowApprove', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowReject', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowDelegate', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowRequestChange', { hidden: true });
                 metadataService.configureControl('My-vendor-invoices', 'ShowRecall', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowComplete', { hidden: true });
               metadataService.configureControl('My-vendor-invoices', 'ShowResubmit', { hidden: true });
               },
               pageInit: function (pageMetadata, params) {
        if (pageMetadata.Name == 'Invoice-details') {
                       // Show/hide workflow actions based on workflow step
                       metadataService.configureAction('Accept', { visible: true });
                       metadataService.configureAction('Approve', { visible: true });
                       metadataService.configureAction('Reject', { visible: true });
                       metadataService.configureAction('Delegate', { visible: true });
                       metadataService.configureAction('Request-change', { visible: true });
                       metadataService.configureAction('Recall', { visible: true });
                       metadataService.configureAction('Complete', { visible: true });
                       metadataService.configureAction('Resubmit', { visible: true });
    
                       var entityContextParts = params.pageContext.split(':');
                       var data = dataService.getEntityData(entityContextParts[0], entityContextParts[1]);
    
                       var acceptControl = data.getPropertyValue('VendInvoiceInfoTable/showAccept');
                       var approveControl = data.getPropertyValue('VendInvoiceInfoTable/showApprove');
                       var rejectControl = data.getPropertyValue('VendInvoiceInfoTable/showReject');
                       var delegateControl = data.getPropertyValue('VendInvoiceInfoTable/showDelegate');
                       var requestChangeControl = data.getPropertyValue('VendInvoiceInfoTable/showRequestChange');
                       var recallControl = data.getPropertyValue('VendInvoiceInfoTable/showRecall');
                       var completeControl = data.getPropertyValue('VendInvoiceInfoTable/showComplete');
                       var resubmitControl = data.getPropertyValue('VendInvoiceInfoTable/showResubmit');
    
                       var showAcceptControl = Boolean(acceptControl == 1);
                       var showApproveControl = Boolean(approveControl == 1);
                       var showRejectControl = Boolean(rejectControl == 1);
                      var showDelegateControl = Boolean(delegateControl == 1);
                       var showRequestChangeControl = Boolean(requestChangeControl == 1);
                       var showRecallControl = Boolean(recallControl == 1);
                       var showCompleteControl = Boolean(completeControl == 1);
                       var showResubmitControl = Boolean(resubmitControl == 1);
    
                       metadataService.configureAction('Accept', { visible: showAcceptControl });
                       metadataService.configureAction('Approve', { visible: showApproveControl });
                       metadataService.configureAction('Reject', { visible: showRejectControl });
                       metadataService.configureAction('Delegate', { visible: showDelegateControl });
                       metadataService.configureAction('Request-change', { visible: showRequestChangeControl });
                       metadataService.configureAction('Recall', { visible: showRecallControl });
                       metadataService.configureAction('Complete', { visible: showCompleteControl });
                     metadataService.configureAction('Resubmit', { visible: showResubmitControl });
                   }
                 },
           };
        }
    
  2. Отправьте файл кода в рабочую область, выбрав вкладку Логика

  3. Щелкните Готово, чтобы выйти из режима редактирования.

  4. Щелкните Назад, а затем Готово для выхода из рабочей области

  5. Нажмите Публикация рабочей области, чтобы сохранить свою работу

Вложения накладной поставщиков

  1. Нажмите кнопку Параметры (шестеренка) в правом верхнем углу страницы, затем нажмите Мобильное приложение

  2. Щелкните кнопку Изменить для запуска режима редактирования в рабочей области.

  3. Выберите ранее созданную страницу Сведения о накладной**, затем щелкните **Изменить.

  4. Задайте для параметра Управление документами значение Да, как показано ниже. Примечание. Если не требуется отображать вложения на мобильном устройстве, можно оставить для этого параметра значение Нет, что является значением по умолчанию.

    Управление документами.

  5. Щелкните Готово, чтобы выйти из режима редактирования.

  6. Щелкните Назад, а затем Готово для выхода из рабочей области

  7. Нажмите Публикация рабочей области, чтобы сохранить свою работу

Распределения строки накладной поставщика

Требования для данного сценария утверждают, что будет только одно распределение на уровне строки, а накладная всегда будет содержать только одну строку. Поскольку этот сценарий является простым, работа пользователя на мобильном устройстве также должна быть достаточно простой, чтобы пользователю не нужно было переходить через несколько уровней для просмотра распределений. Накладные поставщика включают параметр отображения всех распределений из заголовка накладной. Именно это требуется для мобильного сценария. Поэтому мы будет использовать страницу VendMobileInvoiceAllDistributionTree для разработки этой части мобильного сценария.

Примечание

Знание требований помогает решить, какую конкретную страницу следует использовать и как именно оптимизировать мобильную работу для пользователя при разработке сценария. Во втором сценарии будет использоваться другая страница для отображения распределений, так как требования для этого сценария отличаются.

  1. В URL-адресе замените имя пункта меню, как делали раньше. Страница, которая отображается, должен быть похожа на страницу на следующем рисунке.

    Страница

  2. Откройте конструктор мобильных устройств с помощью кнопки Параметры (шестеренка).

  3. Щелкните кнопку Изменить для запуска режима редактирования в рабочей области. Примечание. Вы увидите, что две новые страницы были созданы автоматически. Система создает эти страницы, поскольку вы включили управление документами в предыдущем разделе. Можно игнорировать эти новые страницы.

  4. Щелкните Добавить страницу.

  5. Введите заголовок страницы, например Просмотр учета, и описание, например Просмотр учета для накладной.

  6. Щелкните Готово.

  7. На вкладке Поля щелкните Выбрать поля, выберите следующие поля на странице распределений и нажмите кнопку Готово:

    1. Cумма
    2. Валюта
    3. Счет учета

    Примечание

    Мы не выбрали столбец Описание в сетке распределений, поскольку требования для данного сценария утверждает, что сумма без учета скидок и наценок — это единственная сумма, для которой будут распределения. Поэтому пользователю не требуется другое поле для определения типа суммы, к которой относится распределение. Однако в следующем сценарии мы будем использовать эту информацию, поскольку в требованиях для данного сценария указано, что другие типы сумм имеют распределения (например, налог).

  8. Щелкните Готово, чтобы выйти из режима редактирования.

  9. Щелкните Назад, а затем Готово для выхода из рабочей области

  10. Нажмите Публикация рабочей области, чтобы сохранить свою работу

Добавление переходов к странице "Просмотр учета"

Страница для мобильных устройств Просмотр учета в настоящее время не привязана ни к каким мобильным страницам, которые мы разработали до этого момента. Так как пользователь должен иметь возможности перехода к странице Просмотр учета со страницы Сведения о накладной на мобильном устройстве, необходимо предоставить переход со страницы Сведения о накладной на страницу Просмотр учета. Мы обеспечиваем эту навигацию с помощью дополнительной логики через JavaScript.

  1. Откройте JS-файл, созданный ранее, и добавьте строки, выделенные в следующем коде. Этот код выполняет следующие две операции:

    1. Он помогает гарантировать, что пользователь не может перейти на страницу Просмотр учета непосредственно из рабочей области.
    2. Он создает элемент управления переходом со страницы Сведения о накладной на страницу Просмотр учета.

    Примечание

    Имена страниц и других элементов управления в коде должны быть такими же, как и в рабочей области.

    function main(metadataService, dataService, cacheService, $q) {
           return {
               appInit: function (appMetadata) {
                   // Hide controls that need to be present, but not visible
                   metadataService.configureControl('My-vendor-invoices', 'ShowAccept', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowApprove', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowReject', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowDelegate', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowRequestChange', { hidden: true });
                 metadataService.configureControl('My-vendor-invoices', 'ShowRecall', { hidden: true });
                   metadataService.configureControl('My-vendor-invoices', 'ShowComplete', { hidden: true });
               metadataService.configureControl('My-vendor-invoices', 'ShowResubmit', { hidden: true });
                   // Hide pages not applicable for root navigation
                   metadataService.hideNavigation('View-accounting');
                   //Link to view accounting
                   metadataService.addLink('Invoice-details', 'View-accounting', 'View-accounting-nav-control', 'View accounting', true);
               },
               pageInit: function (pageMetadata, params) {
        if (pageMetadata.Name == 'Invoice-details') {
                       // Show/hide workflow actions based on workflow step
                       metadataService.configureAction('Accept', { visible: true });
                       metadataService.configureAction('Approve', { visible: true });
                       metadataService.configureAction('Reject', { visible: true });
                       metadataService.configureAction('Delegate', { visible: true });
                       metadataService.configureAction('Request-change', { visible: true });
                       metadataService.configureAction('Recall', { visible: true });
                       metadataService.configureAction('Complete', { visible: true });
                       metadataService.configureAction('Resubmit', { visible: true });
    
                       var entityContextParts = params.pageContext.split(':');
                       var data = dataService.getEntityData(entityContextParts[0], entityContextParts[1]);
    
                       var acceptControl = data.getPropertyValue('VendInvoiceInfoTable/showAccept');
                       var approveControl = data.getPropertyValue('VendInvoiceInfoTable/showApprove');
                       var rejectControl = data.getPropertyValue('VendInvoiceInfoTable/showReject');
                       var delegateControl = data.getPropertyValue('VendInvoiceInfoTable/showDelegate');
                       var requestChangeControl = data.getPropertyValue('VendInvoiceInfoTable/showRequestChange');
                       var recallControl = data.getPropertyValue('VendInvoiceInfoTable/showRecall');
                       var completeControl = data.getPropertyValue('VendInvoiceInfoTable/showComplete');
                       var resubmitControl = data.getPropertyValue('VendInvoiceInfoTable/showResubmit');
    
                       var showAcceptControl = Boolean(acceptControl == 1);
                       var showApproveControl = Boolean(approveControl == 1);
                     var showRejectControl = Boolean(rejectControl == 1);
                       var showDelegateControl = Boolean(delegateControl == 1);
                       var showRequestChangeControl = Boolean(requestChangeControl == 1);
                       var showRecallControl = Boolean(recallControl == 1);
                       var showCompleteControl = Boolean(completeControl == 1);
                       var showResubmitControl = Boolean(resubmitControl == 1);
    
                       metadataService.configureAction('Accept', { visible: showAcceptControl });
                       metadataService.configureAction('Approve', { visible: showApproveControl });
                       metadataService.configureAction('Reject', { visible: showRejectControl });
                       metadataService.configureAction('Delegate', { visible: showDelegateControl });
                       metadataService.configureAction('Request-change', { visible: showRequestChangeControl });
                       metadataService.configureAction('Recall', { visible: showRecallControl });
                       metadataService.configureAction('Complete', { visible: showCompleteControl });
                       metadataService.configureAction('Resubmit', { visible: showResubmitControl });
        }
                 },
           };
        }
    
  2. Отправьте файл кода в рабочую область, выбрав вкладку Логика, чтобы перезаписать предыдущий код

  3. Щелкните Готово, чтобы выйти из режима редактирования.

  4. Щелкните Назад, а затем Готово для выхода из рабочей области

  5. Нажмите Публикация рабочей области, чтобы сохранить свою работу

Проверка

Со своего мобильного устройства откройте приложение и подключитесь к своему экземпляру. Убедитесь, что вы выполнили вход в компанию, в которой вам назначены накладные поставщика для проверки. Вам должны быть доступны следующие действия:

  • Просмотрите рабочую область Мои утверждения.
  • Перейдите в рабочую область Мои утверждения и просмотрите страницу Мои накладные поставщика.
  • Перейдите на страницу Мои накладные поставщика и просмотрите список накладных, которые назначены вам.
  • Перейдите в одну из накладных и просмотрите сведения из заголовка накладной и сведения строки.
  • На странице сведений просмотрите ссылку на вложения и используйте эту ссылку для перехода к списку вложений и просмотра вложений.
  • На странице сведений просмотрите ссылку на страницу Просмотр учета и используйте эту ссылку для перехода на страницу распределений и просмотра распределений.
  • На странице сведений щелкните меню Действия внизу страницы и выполните действия workflow-процесса, которые относятся к этому шагу workflow-процесса.

Разработка сложного сценария утверждения накладных для Fabrikam

Атрибут сценария Ответ
Какие поля из заголовка накладной пользователь захочет видеть на мобильных устройствах и в каком порядке?
  1. Наименование Поставщика
  2. Сумма накладной
  3. Счет на
  4. Номер накладной
  5. Дата накладной
  6. Описание накладной
  7. Срок
  8. Валюта накладной
Какие поля из строк накладной пользователь захочет видеть на мобильных устройствах и в каком порядке?
  1. Категория закупаемой продукции
  2. Количество
  3. Цена за ед. изм.
  4. Чистая сумма строки
  5. Сумма по форме 1099
Сколько строк накладной содержит накладная? Применяйте здесь правило 80-20 и оптимизируйте для 80 процентов. 5
Требуется ли пользователям видеть распределения по бухгалтерским счетам (кодирование накладных) на мобильном устройстве во время проверок? Да
Сколько распределений по бухгалтерским счетам (сумма без учета скидок и наценок, налог с продаж, расходы и т. д.) имеется в строке накладной? Опять же, применяйте правило 80-20. Сумма без учета скидок и наценок: 2 Налог: 2 Расходы: 2
Содержат ли накладные распределения по бухгалтерским счетам также и в заголовке накладной? Если да, должны ли эти распределения по бухгалтерским счетам были доступны на устройстве? Не используется
Требуется ли пользователям просматривать вложения для накладной на устройстве? Да

Далее

Можно сделать следующие изменения для сценария 1 в соответствии с требованиями для сценария 2. Этот раздел служит для повышения эффективности работы с мобильными приложениями.

  1. Так как в сценарии 2 ожидается больше строк в накладной, следующие изменения в структуре помогут оптимизировать работу пользователей на мобильном устройстве:

    1. Вместо просмотра строк накладной на странице сведения (как в сценарии 1), пользователи могут выбрать просмотр строк на отдельной странице мобильного устройства.
    2. Так как в этом сценарии ожидается более одной строки накладной, если использовать страницу VendMobileInvoiceAllDistributionTree при создании страницы распределений для мобильных устройств (как в сценарии 1), пользователю может быть сложно сопоставить строки с распределениями. Поэтому для создания страницы распределений используйте страницу VendMobileInvoiceLineDistributionTree.
    3. В идеальном случае в этом сценарии распределения должны отображаться в контексте строки накладной. Поэтому убедитесь, что пользователь может перейти в строку для просмотра страницы распределений. Используйте возможность ссылки на страницу для установления детализации, так же, как это было сделано для страниц заголовка и сведений в сценарии 1.
  2. Так как в сценарии 2 ожидается более одного типа сумм в распределениях (налог с продаж, расходы и т. д.), будет полезно отобразить описание типа суммы. (Мы опустили эти сведения в сценарии 1.)