Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

«Undefined is not function» або чому перестав працювати веб-клієнт «1С» в Google Chrome 37

Останній реліз популярного браузера Google Chrome крім чергових нововведень і багфіксів приніс головний біль 1С-розробникам. Помилка виявляється при використанні веб-клієнта "1C" в браузері Google Chrome 37 і всіх інших бродилках, заснованих на Chromium (наприклад, Opera). При спробі викликати модальне вікно, Google Chrome 37 випльовує помилку: «Underfined is not function». При натисканні єдиної кнопки «ok» веб-клієнт згенерує стандартне повідомлення «Відкриття нового вікна було заблоковано, мабуть спрацював блокувальник спливаючих вікон» і запропонує перезапустити програму. Перезапуск додатки поверне на вікно авторизації і далі все по колу.

Перезапуск додатки поверне на вікно авторизації і далі все по колу

Спосіб вирішення # 0

Переписати ділянки коду з викликом модальних вікон відповідно до рекомендацій компанії "1С". Мій проект на поточній стадії не був готовий до використання нових функцій, тому на етапах виклику вікна завантаження файлів і виклику будь-якого модального вікна я ловив [bold] «Underfined is not function» [/ bold].

Мій проект на поточній стадії не був готовий до використання нових функцій, тому на етапах виклику вікна завантаження файлів і виклику будь-якого модального вікна я ловив [bold] «Underfined is not function» [/ bold]

Спосіб вирішення # 1

Найпростіший спосіб вирішити проблему - попросити клієнтів перейти на Mozilla FireFox. Там подібна помилка не проявляється і в цілому все працює добре. Саме так я і вчинив. Однак, у деяких клієнтів почали виникати проблеми при скролинг елементів в формах списків. З незрозумілих причин FireFox генерував помилку і браузер падав. Помилка виявлялася не у всіх, але чекати поки з проблемою зіткнутися всі користувачі я не міг.

Спосіб вирішення # 2

Далі я вирішив спробувати перевести проблемних клієнтів на старі версії браузера Google Chrome. Мені вдалося роздобути в мережі дистрибутив «Google Chrome 32» і він успішно був впроваджений кільком клієнтам з відключеною функцією автоматичного оновлення. Спосіб знову ж робочий, але не елегантний - не можна ж усіх позбавити можливості оновлення браузера.

Спосіб вирішення # 3

Попередні способи мають явні мінуси, тому я вирішив відправитися і почитати інформацію з ChangeLog'а до останньої версії Google Chrome. Пошук по слову «modal» вивів мене на пункт, де чітко говорилося, що підтримка функції showModalDialog () в новій версії Google Chrome видалена. Відмінно, вже хоч щось.

Перейшовши в детальний опис цієї фічі, я побачив, що при необхідності цю функцію можна активувати (!!!). Розробники Google Chrome вчинили мудро і залишили шляхи відступу, якими можна користуватися аж до травня 2015 року. Цього часу вистачить, щоб розробники встигли оновити свої рішення.

Тепер власне кажучи саме рішення. Відкриваємо редактор реєстру Windows (regedit) і переходимо в розділ «HKEY_LOCAL_MACHINESOFTWAREPolicies». Тут вам потрібно створити нові розділи: «GoogleChromeEnableDeprecatedWebPlatformFeatures»

Після переходите в розділ «EnableDeprecatedWebPlatformFeatures» і створіть в ньому строковий ключ з ім'ям «1С» і надайте йому значення «ShowModalDialog_EffectiveUntil20150430». Має вийти щось на зразок цього:

На цьому кроці редактор реєстру можна закривати і відкривати Google Chrome. В адресному рядку дії вводимо: «chrome: // policy /» (без лапок) і переходимо за цією адресою. Повинна відкриватися сторінка з політиками Chrome.

Спочатку вона буде порожньою. Натискаємо кнопку «Повторно завантажити політики». Якщо ви все зробили правильно в реєстрі, то після натискання кнопки ви побачите табличку c одним записом про функції «showModalDialog».

Якщо ви все зробили правильно в реєстрі, то після натискання кнопки ви побачите табличку c одним записом про функції «showModalDialog»

Тепер ніяких помилок в веб-клієнті не буде. Ваші клієнти зможу продовжувати працювати, а ви отримаєте час для адаптації конфігурації до нововведень. Щоб трохи полегшити процес, я зробив експорт описаних вище ключів в файлик. Можете його завантажити і імпортувати в свій реєстр. Експорт робив в Windows 7.

Виправлення помилки веб-клієнта в Google Chrome 37: chrome37_fix_by_spider_net.zip

Я перевірив розглянутий в замітці спосіб на двадцяти користувачів - все прекрасно запрацювало. Не пощастило 21-му. Всі ключі до реєстру імпортувалися нормально, але на сторінці chrome: // policy так нічого і не з'явилося. Виявилося, що подібні проблеми з політиками Chrome не тільки у мене. У користувачів на «StackOverflow» виникали аналогічні ситуації, і виявилося, що спосіб з додаванням ключів до реєстру працює тільки у тих, чиї комп'ютери входять в домен. Мій комп'ютер і машини тих 20 користувачів входять в домени, тому у нас все запрацювало відразу. Я знову взявся шукати вирішення проблеми і в підсумку знайшов. Спосіб трохи складніше, але в підсумку проблема вирішилася остаточно.

Отже, якщо ваш комп'ютер не входить в домен, і ви зіткнулися з помилкою веб-клієнта 1С «underfined is not function» виконайте декілька кроків:

  • Завантажуємо по цій засланні адміністративний шаблон налаштувань політик Chrome. За посиланням доступний adm шаблон. Якщо потрібно в форматі admx або json для Linux, то качаємо повний архів з шаблонами звідси (http://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip). Розпаковуємо в якусь директорію.
  • Відкриваємо консоль локальних групових політик gpedit.msc (наприклад, через «пуск» -> «Виконати»).

  • Розкриваємо вузол «Конфігурація комп'ютера» і натискаємо правою кнопкою миші по «Адміністративні шаблони». У контекстному меню вибираємо «Додати або видалити шаблони».

  • У вікні натискаємо кнопку «Додати» і вибираємо файл «chrome.adm», який ми витягли з завантаженого в пункті 1 архіву. Наш шаблон повинен з'явитися в списку поточних шаблонів політики. Натискаємо кнопку «Закрити».

  • Переходимо в вузол «Адміністративні шаблони» -> «Класичні адміністративні шаблони» -> «Google». У цьому вузлі шукаємо пункт «Включити застарілі функції веб-платформи».

  • Двічі клікаємо по ньому і у вікні встановлюємо перемикач на позицію «Включити». У розділі «Параметри» активується кнопка «Показати». Натискаємо її.

  • У вікні натискаємо по першому рядку і вводимо: «ShowModalDialog_EffectiveUntil20150430» (без лапок). Після цього натискаємо «Ok» і аналогічну кнопку в вікні «Включити застарілі функції веб-платформи». Потім закриваємо редактор локальних групових політик.

  • Відкриваємо в Google Chrome вже знайому сторінку «chrome: // policy» і натискаємо на кнопку «Повторно завантажити політики».

Тепер все має працювати, як і спочатку було задумано.

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.