CRM 2016 Автозаполнение

В настоящее время я пытаюсь реализовать автозаполнение нового CRM в онлайн-среде CRM 2016.

Я использовал код из Пример: автозаполнение в элементах управления CRM и убедились, что он работает с формой учетной записи и другим уже существующим настраиваемым объектом. Однако, когда я использую один конкретный пользовательский объект и любое из его строковых полей, окно автозаполнения не появляется.

Попытки:

  • Создание новой формы
  • Создание нового текстового поля для запуска автозаполнения
  • Подтверждено, что он достигает ext.getEventSource().showAutoComplete(resultSet);
  • Подтверждено, что мои JS не выдают никаких ошибок

У кого-нибудь есть идеи, что может быть не так? Я думаю, что это как-то связано с моей сущностью или формой сущности, а не с кодом или текстовым полем.

 /** Sample JavaScript code to demonstrate the auto-completion feature.
This sample configures the auto-complete feature for the "Account Name"
field in the account form. */

function suggestAccounts() {
    // List of sample account names to suggest
    accounts = [
      { name: 'A. Datum Corporation', code: 'A01' },
      { name: 'Adventure Works Cycles', code: 'A02' },
      { name: 'Alpine Ski House', code: 'A03' },
      { name: 'Bellows College', code: 'A04' },
      { name: 'Best For You Organics Company', code: 'A05' },
      { name: 'Blue Yonder Airlines', code: 'A06' },
      { name: 'City Power & Light', code: 'A07' },
      { name: 'Coho Vineyard', code: 'A08' },
      { name: 'Coho Winery', code: 'A09' },
      { name: 'Coho Vineyard & Winery', code: 'A10' },
      { name: 'Contoso, Ltd.', code: 'A11' },
      { name: 'Contoso Pharmaceuticals', code: 'A12' },
      { name: 'Contoso Suites', code: 'A13' },
      { name: 'Consolidated Messenger', code: 'A14' },
      { name: '​Fabrikam, Inc.', code: 'A15' },
      { name: 'Fabrikam Residences', code: 'A16' },
      { name: '​First Up Consultants', code: 'A17' },
      { name: 'Fourth Coffee', code: 'A18' },
      { name: 'Graphic Design Institute', code: 'A19' },
      { name: 'Humongous Insurance', code: 'A20' },
      { name: 'Lamna Healthcare Company', code: 'A21' },
      { name: 'Litware, Inc.', code: 'A22' },
      { name: 'Liberty Delightful Sinful Bakery & Cafe', code: 'A23' },
      { name: 'Lucerne Publishing', code: 'A24' },
      { name: 'Margie Travel', code: 'A25' },
      { name: '​Munson Pickles and Preserves Farm', code: 'A26' },
      { name: 'Nod Publishers', code: 'A27' },
      { name: 'Northwind Electric Cars', code: 'A28' },
      { name: 'Northwind Traders', code: 'A29' },
      { name: 'Proseware, Inc.', code: 'A30' },
      { name: 'Relecloud', code: 'A31' },
      { name: 'School of Fine Art', code: 'A32' },
      { name: 'Southridge Video', code: 'A33' },
      { name: 'Tailspin Toys', code: 'A34' },
      { name: 'Trey Research', code: 'A35' },
      { name: 'The Phone Company', code: 'A36' },
      { name: 'VanArsdel, Ltd.', code: 'A37' },
      { name: 'Wide World Importers', code: 'A38' },
      { name: '​Wingtip Toys', code: 'A39' },
      { name: 'Woodgrove Bank', code: 'A40' }    
    ];

    var keyPressFcn = function (ext) {
        try {
            var userInput = Xrm.Page.getControl("name").getValue();
            resultSet = {
                results: new Array(),
                commands: {
                    id: "sp_commands",
                    label: "Learn More",
                    action: function () {
                        // Specify what you want to do when the user
                        // clicks the "Learn More" link at the bottom
                        // of the auto-completion list.
                        // For this sample, we are just opening a page
                        // that provides information on working with
                        // accounts in CRM.
                        window.open("http://www.microsoft.com/en-us/dynamics/crm-customer-center/create-or-edit-an-account.aspx");
                    }
                }
            };

            var userInputLowerCase = userInput.toLowerCase();
            for (i = 0; i < accounts.length; i++) {
                if (userInputLowerCase === accounts[i].name.substring(0, userInputLowerCase.length).toLowerCase()) {
                    resultSet.results.push({
                        id: i,
                        fields: [accounts[i].name]
                    });
                }
                if (resultSet.results.length >= 10) break;
            }

            if (resultSet.results.length > 0) {
                ext.getEventSource().showAutoComplete(resultSet);
            } else {
                ext.getEventSource().hideAutoComplete();
            }
        } catch (e) {
            // Handle any exceptions. In the sample code,
            // we are just displaying the exception, if any.
            console.log(e);
        }
    };

    Xrm.Page.getControl("name").addOnKeyPress(keyPressFcn);    
}

person zabby    schedule 17.02.2016    source источник


Ответы (1)


У вас должен быть элемент управления поиском в форме, чтобы автозаполнение отображалось. Звучит странно, но на данный момент это лучший обходной путь. Я поставил свой, чтобы не быть видимым. Примечание: это любое поле поиска, независимо от того, какую связь вы выберете. Наличие поля поиска устанавливает что-то в форме для загрузки отсутствующих библиотек.

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

Я предполагаю, что Microsoft пытается не включать ресурсы, в которых они не видят настроенной потребности, и поэтому файлы автозаполнения отсутствуют (пока вы не добавите для них требование).

person Jimmy Briggs    schedule 01.08.2016
comment
Это странно, но это правда. Работал и в моей среде. - person Grigory; 06.09.2016
comment
На самом деле на странице в строке состояния есть сообщение об ошибке, и если вы запустите отладчик Jscript в Visual Studio, вы увидите ошибку в окне вывода. Говорит 0x800a138f - ошибка времени выполнения JavaScript: невозможно получить свойство indexOf неопределенной или нулевой ссылки - person Grigory; 06.09.2016
comment
Я не могу поверить ... даже в последней версии CRM Online это все еще проблема. Только что попробовал, это правильно - person zabby; 08.12.2016