Подробный гайд: Почему в веб-клиенте 1С кнопки становятся неактивными - Часть 3
10. Если кнопка стандартная: «Записать», «Провести», «Записать и закрыть»
Если неактивны стандартные кнопки платформы, часто не нужно сразу лезть в код. Платформа сама управляет их доступностью.
Причины
1. Форма только просмотр
Проверьте, открыта ли форма в режиме только просмотр.
2. Объект не изменён
Некоторые стандартные команды могут быть недоступны, если данные не изменены. Например, форма уже записана, пользователь ничего не менял, и кнопка «Записать» может быть неактивна.
Иногда в разработке делают так:
ЭтаФорма.Модифицированность = Истина;
Но это нужно использовать осторожно. Это заставит форму считать данные изменёнными.
3. Нет прав
Проверьте права:
- изменение;
- запись;
- проведение;
- отмена проведения;
- удаление;
- интерактивная активация;
- использование нужных команд.
4. Объект заблокирован
Если объект заблокирован, стандартные команды записи могут быть недоступны.
5. Статус или бизнес-логика
В типовых конфигурациях часто нельзя менять:
- проведённые документы;
- закрытые периоды;
- документы в определённом статусе;
- элементы с пометкой удаления;
- объекты после закрытия месяца;
- объекты чужой организации;
- объекты чужого склада или подразделения.
11. Если кнопка находится в списке
Если кнопка относится к динамическому списку, доступна/недоступна она может быть по другим правилам.
Возможные причины
1. Не выбрана текущая строка
Например, кнопка «Открыть», «Изменить», «Удалить» должна быть доступна только при выбранной строке.
Проверьте:
Элементы.МойСписок.ТекущиеДанные
Если ТекущиеДанные = Неопределено, кнопка может быть неактивна.
Пример логики:
&НаКлиенте
Процедура ОбновитьДоступностьКнопки()
Элементы.МояКнопка.Доступность =
Элементы.МойСписок.ТекущиеДанные <> Неопределено;
КонецПроцедуры
Такую процедуру можно вызывать при:
- открытии формы;
- активизации строки;
- смене текущего элемента;
- обновлении списка.
2. Список пуст
Если данных нет, кнопки, зависящие от текущей строки, могут быть неактивны.
3. Нет прав на строки из-за RLS
Пользователь может видеть список, но не иметь прав на изменение конкретных строк.
4. Настройки списка
Пользователь мог настроить список так, что:
- нет текущей строки;
- отбор скрывает данные;
- список не заполнен;
- данные ещё не загружены.
12. Проверка пользовательских настроек формы
Пользовательские настройки иногда ломают ожидаемое поведение.
Что сделать:
- Открыть проблемную форму.
- Нажать кнопку «Ещё».
- Найти пункт изменения формы или настроек.
- Сбросить настройки на стандартные.
В разных конфигурациях название может отличаться:
Ещё -> Изменить форму
Ещё -> Настроить форму
Ещё -> Установить стандартные настройки
Также можно очистить сохранённые настройки пользователя через администрирование, если это допустимо в вашей системе.
Признак, что дело в настройках:
- у одного пользователя кнопка неактивна;
- у другого активна;
- в тонком клиенте и веб-клиенте ведёт себя по-разному;
- после сброса настроек становится нормально.
13. Проверка расширений конфигурации
Если используются расширения, они могут быть источником проблемы.
Проверьте:
- расширение активно;
- расширение подключено к нужной базе;
- расширение не конфликтует с основной конфигурацией;
- в расширении нет переопределения модуля формы;
- в расширении нет своей версии
ПриСозданииНаСервере; - расширение не добавляет обработчик, который меняет доступность;
- расширения применяются в веб-клиенте так же, как в тонком клиенте.
Особенно важно, если в расширении есть:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// свой код
КонецПроцедуры
или:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// свой код
КонецПроцедуры
Иногда основная конфигурация работает нормально, а расширение в веб-клиенте даёт побочный эффект.
14. Особенности веб-клиента, которых нет в тонком клиенте
Веб-клиент — это не просто «та же 1С в браузере». Есть важные отличия.
1. Асинхронность
В веб-клиенте многие пользовательские взаимодействия асинхронные. Нельзя рассчитывать, что диалог вернёт результат сразу, если используется старый синхронный стиль.
Проверяйте все места с:
Вопрос
Предупреждение
ВвестиЧисло
ВвестиСтроку
ВвестиДату
ВыбратьФайл
и аналогичными.
Для веб-клиента предпочтительны асинхронные методы:
ПоказатьВопрос
ПоказатьПредупреждение
ПоказатьВводЧисла
ПоказатьВводСтроки
ПоказатьВводДаты
ПоказатьВыборФайла
2. Модальные окна
Если открыто модальное окно, основная форма блокируется.
В браузере это может быть неочевидно:
- окно могло открыться неактивным;
- браузер мог заблокировать всплывающее окно;
- окно могло потеряться среди вкладок;
- пользователь мог не заметить диалог;
- модальное окно могло зависнуть.
3. Долгие серверные вызовы
Пока сервер обрабатывает запрос, платформа может блокировать интерфейс. Если серверный вызов длится долго, кнопки становятся неактивными и появляется состояние ожидания.
Причины:
- тяжёлый запрос;
- блокировка таблицы;
- фоновое задание;
- взаимоблокировка;
- большая транзакция;
- медленный сервер;
- проблемы с веб-сервером;
- сетевые задержки.
4. Ошибки сети
Веб-клиент сильно зависит от сети. Если соединение оборвалось или сервер не ответил, интерфейс может остаться в некорректном состоянии.
Что проверить:
- стабильность сети;
- файрвол;
- таймауты веб-сервера;
- HTTP-коды в браузере;
- ошибки в журнале регистрации.
5. Кэш браузера
Иногда старый скрипт, кэш формы или кэш платформы даёт некорректное поведение.
Сделайте:
- очистку кэша браузера;
- открытие в режиме инкогнито;
- проверку в другом браузере;
- перезапуск веб-сервера, если есть подозрение на кэш публикации;
- перезапуск сеанса пользователя.
6. Расширения браузера
Мешать могут:
- блокировщики рекламы;
- блокировщики всплывающих окон;
- антивирусы с веб-защитой;
- расширения для приватности;
- корпоративные политики;
- плагины, блокирующие скрипты.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.