Подробный гайд: Почему в веб-клиенте 1С кнопки становятся неактивными - Часть 5

Почему в веб-клиенте 1С кнопки становятся неактивными: режим просмотра, права, блокировки, код, кэш и браузер. Практический разбор причин и решений.

2026.10.04                  


Подробный гайд: Почему в веб-клиенте 1С кнопки становятся неактивными - Часть 5Подробный гайд: Почему в веб-клиенте 1С кнопки становятся неактивными - Часть 5

22. Пример правильного включения собственной кнопки

Если у вас собственная кнопка и вы хотите управлять её доступностью, делайте это в модуле формы.

Серверная часть

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    // Другие действия при создании формы

    Элементы.МояКнопка.Доступность = Истина;

КонецПроцедуры

Клиентская часть

Если нужно дополнительно управлять доступностью на клиенте:



&НаКлиенте
Процедура ПриОткрытии(Отказ)

    Элементы.МояКнопка.Доступность = Истина;

КонецПроцедуры

Если кнопка зависит от выбранной строки списка:

&НаКлиенте
Процедура МойСписокПриАктивизацииСтроки(Элемент)

    Элементы.МояКнопка.Доступность =
        Элементы.МойСписок.ТекущиеДанные <> Неопределено;

КонецПроцедуры

23. Пример диагностики кнопки в списке

Если кнопка должна быть доступна только при выбранной строке:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ОбновитьДоступностьМоейКнопки();
КонецПроцедуры

&НаКлиенте
Процедура МойСписокПриАктивизацииСтроки(Элемент)
    ОбновитьДоступностьМоейКнопки();
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДоступностьМоейКнопки()

    Элементы.МояКнопка.Доступность =
        Элементы.МойСписок.ТекущиеДанные <> Неопределено;

КонецПроцедуры

24. Если кнопка программно создаётся

Если вы создаёте кнопку программно, проверьте, что делаете это на сервере, а не на клиенте.

Пример:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    НоваяКнопка = Элементы.Добавить(
        "МояКнопка",
        Тип("КнопкаФормы"),
        Элементы.КоманднаяПанельФормы
    );

    НоваяКнопка.Заголовок = "Моя команда";
    НоваяКнопка.Действие = "МояКоманда";
    НоваяКнопка.Доступность = Истина;

КонецПроцедуры

&НаКлиенте
Процедура МояКоманда(Команда)
    // действие кнопки
КонецПроцедуры

Проверьте:

  • элемент создан;
  • родитель указан верно;
  • действие назначено;
  • процедура существует;
  • кнопка не перекрывается другими элементами;
  • родительская панель видима и доступна.

25. Проверка публикации базы

Если проблема только в веб-клиенте, проверьте публикацию базы.

Что проверить

  1. База опубликована корректно.
  2. Версия платформы на сервере и публикация соответствуют друг другу.
  3. Веб-сервер работает стабильно.
  4. Нет ошибок в логах веб-сервера.
  5. Таймауты не слишком короткие.
  6. Нет проблем с HTTPS/HTTP.
  7. Нет проблем с прокси.
  8. Нет блокировки скриптов.
  9. Нет ошибок в default.vrd, если используется публикация через файл.
  10. После обновления платформы база переопубликована.

Иногда помогает:

  • перезапуск веб-сервера;
  • переопубликация базы;
  • очистка кэша сервера;
  • проверка прав на папку публикации;
  • проверка версии компоненты веб-клиента.

26. Проверка журнала регистрации

Журнал регистрации — один из главных инструментов диагностики.

Что искать:

  • ошибки при открытии формы;
  • ошибки серверного вызова;
  • ошибки доступа;
  • ошибки прав;
  • исключения в обработчиках;
  • ошибки публикации;
  • ошибки веб-клиента;
  • ошибки при записи объекта;
  • ошибки проведения;
  • ошибки блокировок.

Рекомендую временно добавить собственные события, например:

ДиагностикаКнопки
ДиагностикаФормы
МояПодсистема

и писать туда ключевые состояния.


27. Когда не надо принудительно включать кнопку

Важно:

Если кнопка неактивна из-за прав, блокировки, статуса или режима только просмотр, принудительное включение через код может быть неправильным решением.

Например, не следует просто писать:

Элементы.КнопкаЗаписать.Доступность = Истина;

если форма только просмотр из-за прав.

Последствия:

  • пользователь получит ошибку при попытке записи;
  • может нарушиться логика статусов;
  • может нарушиться безопасность;
  • могут появиться ошибки проведения;
  • могут появиться ошибки блокировок;
  • типовая конфигурация может работать некорректно.

Сначала нужно понять, почему платформа или конфигурация сделала кнопку недоступной.


28. Таблица «симптом — вероятная причина»

Симптом Вероятная причина Что проверить
Все кнопки серые Форма только просмотр Права, блокировку объекта, способ открытия формы
Все кнопки серые у одного пользователя Права или настройки пользователя Роли, профиль, браузер, настройки
Все кнопки серые у всех Код, конфигурация, публикация, права Модуль формы, расширения, журнал регистрации
Одна кнопка серая Свойство Доступность, условие в коде Поиск по коду, родительские группы
Кнопка серая в списке Не выбрана строка ТекущиеДанные, отбор, права на строки
Кнопка становится серой после нажатия Обработчик не завершился Ошибки, модальные окна, долгие вызовы
В тонком клиенте работает, в веб нет Браузер, кэш, синхронные вызовы Консоль браузера, другой браузер, код
Иногда работает, иногда нет Сеть, сервер, блокировки, таймауты Журнал регистрации, сервер, сеть
После обновления платформы появилась проблема Публикация, кэш, версия Переопубликация, очистка кэша
После обновления конфигурации появилась проблема Изменилась логика формы Сравнение модулей, расширения



29. Рекомендуемый алгоритм расследования

Я бы действовал так:

Шаг 1. Определить масштаб

Ответьте себе:

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

Шаг 2. Проверить режим формы

Определить:

  • форма только просмотр или нет;
  • объект заблокирован или нет;
  • есть ли права на изменение;
  • не мешает ли статус или дата запрета.

Шаг 3. Проверить среду

  • другой браузер;
  • инкогнито;
  • без расширений браузера;
  • очистка кэша;
  • другой компьютер;
  • другой пользователь.

Шаг 4. Проверить код

Искать:

ИмяКнопки.Доступность
ИмяКнопки.ТолькоПросмотр
ОткрытьФорму(

Проверить обработчики:

ПриСозданииНаСервере
ПриОткрытии
Обработчик кнопки
Обработчики списка

Шаг 5. Проверить расширения

Отключить или временно локализовать расширение. Если после отключения расширения проблема исчезает, значит причина в нём.


Шаг 6. Проверить журнал регистрации

Смотреть ошибки в момент:

  • открытия формы;
  • нажатия кнопки;
  • записи;
  • проведения;
  • закрытия;
  • повторного открытия.

Шаг 7. Проверить консоль браузера

Особенно если проблема только в веб-клиенте.

Искать:

  • ошибки скриптов;
  • ошибки сети;
  • блокировки;
  • таймауты;
  • 500/502/504.

Шаг 8. Проверить серверную часть

Если есть подозрение на зависание:

  • долгие запросы;
  • блокировки;
  • взаимоблокировки;
  • фоновые задания;
  • нагрузка на сервер;
  • таймауты веб-сервера.

30. Минимальный набор проверок для разработчика

Если нужно коротко, проверяйте так:

1. Вся форма или одна кнопка?
2. Только веб-клиент или тонкий клиент тоже?
3. У всех пользователей или у одного?
4. Форма в режиме только просмотр?
5. Объект заблокирован?
6. Есть ли права?
7. Что пишет журнал регистрации?
8. Есть ли ошибки в консоли браузера?
9. Где в коде меняется Доступность?
10. Не перекрывает ли расширение?
11. Не синхронный ли вызов блокирует интерфейс?
12. Не открыто ли скрытое модальное окно?
13. Не зависит ли кнопка от текущей строки списка?
14. Не родительская ли группа недоступна?
15. Не сбросить ли пользовательские настройки формы?

31. Что прислать, если проблема не найдена

Если по этому гайду не удалось быстро найти причину, для дальнейшей диагностики обычно нужны такие данные:

  1. Конфигурация: БП, ЗУП, УТ, ERP, самописная.
  2. Версия платформы 1С.
  3. Версия браузера.
  4. Проблема только в веб-клиенте или в тонком клиенте тоже.
  5. Неактивна одна кнопка или все.
  6. У одного пользователя или у всех.
  7. После какого действия кнопки становятся неактивными.
  8. Скриншот формы.
  9. Имя формы и имя кнопки в конфигураторе.
  10. Код ПриСозданииНаСервере.
  11. Код ПриОткрытии, если есть.
  12. Код обработчика кнопки.
  13. Есть ли расширения.
  14. Ошибки из журнала регистрации.
  15. Ошибки из консоли браузера.



Важно

В 90% подобных случаев причина одна из этих:

  1. Форма открыта в режиме только просмотр.
  2. Объект заблокирован.
  3. Нет прав на изменение.
  4. Кнопка зависит от текущей строки списка.
  5. Код меняет не ту кнопку или не ту группу.
  6. Доступность меняется позже другим обработчиком.
  7. Расширение переопределяет поведение формы.
  8. Веб-клиент заблокирован модальным окном или синхронным вызовом.
  9. Браузерный кэш или расширения мешают работе.
  10. Серверный вызов завис или завершился ошибкой.

Самый быстрый путь диагностики:

Тонкий клиент работает?
    Да -> смотреть браузер, кэш, синхронные вызовы, модальные окна.
    Нет -> смотреть код, права, блокировки, статус объекта, расширения.

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

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