Подробный гайд: Почему в веб-клиенте 1С кнопки становятся неактивными - Часть 1
Гайд по ситуации, когда в веб-клиенте 1С кнопки становятся неактивными, хотя по коду вроде бы всё правильно.
Сразу главная мысль: в веб-клиенте неактивная кнопка почти всегда означает одно из четырёх:
- Элементу формы реально установлено свойство
Доступность = Ложьили форма находится в режиме только просмотр. - Платформа автоматически заблокировала интерфейс на время серверного вызова, ожидания, модального окна или ошибки.
- Кнопка стандартная, и 1С сама управляет её доступностью из-за прав, состояния объекта, модифицированности, блокировки данных или статуса.
- Проблема не в коде, а в браузере, кэше, публикации базы, сети или правах пользователя.
Разберём по порядку.
1. Быстрая диагностика за 5 минут
Пройдитесь по этому списку сверху вниз. Обычно он быстро отделяет проблему кода от проблемы среды.
Шаг 1. Обновите страницу
Нажмите F5 или кнопку обновления в браузере.
Если после обновления кнопки снова активны, значит проблема часто связана с:
- зависшим серверным вызовом;
- ошибкой в клиентском скрипте;
- незавершённым модальным окном;
- потерей связи с сервером;
- кэшем браузера или веб-клиента.
Шаг 2. Проверьте, одна кнопка неактивна или вся форма
Если вся форма серая, все поля и кнопки только для просмотра, вероятные причины:
- форма открыта в режиме только просмотр;
- объект заблокирован другим пользователем;
- у пользователя нет прав на изменение;
- объект закрыт по статусу, дате запрета или логике конфигурации;
- серверный вызов не завершился;
- форма находится в состоянии ожидания.
Если неактивна только одна кнопка, вероятные причины:
- код где-то ставит
Элементы.ИмяКнопки.Доступность = Ложь; - кнопка зависит от выделения строки в списке;
- кнопка зависит от статуса объекта;
- пользовательские настройки формы;
- права или функциональные опции;
- расширение конфигурации переопределяет поведение.
Шаг 3. Откройте эту же форму в тонком клиенте
Если в тонком клиенте всё работает, а в веб-клиенте нет, проблема почти наверняка связана с:
- браузером;
- кэшем;
- синхронными вызовами в коде;
- модальными окнами;
- блокировщиками всплывающих окон;
- расширениями браузера;
- особенностями публикации базы;
- сетевыми таймаутами.
Если в тонком клиенте проблема тоже есть, значит дело чаще в:
- коде;
- правах;
- данных объекта;
- конфигурации;
- расширениях;
- БСП;
- статусе документа или справочника.
Шаг 4. Откройте в другом браузере или в режиме инкогнито
Особенно актуально для Chrome, Edge, Yandex Browser.
Проверьте:
- другой браузер;
- приватный режим;
- отключённые расширения браузера;
- отключённый блокировщик рекламы;
- чистый профиль браузера.
Если в инкогнито работает, очищайте кэш браузера и проверяйте расширения.
Шаг 5. Проверьте права пользователя
Если у пользователя нет прав на изменение объекта, форма может открываться только для просмотра.
Проверьте:
- роли пользователя;
- профиль группы доступа;
- права на запись, изменение, проведение, удаление;
- ограничения на уровне записей, RLS;
- настройки БСП, если используется Библиотека стандартных подсистем.
Типичный признак: кнопка неактивна не из-за кода, а потому что 1С не разрешает пользователю изменять объект.
Шаг 6. Проверьте блокировку объекта
Если объект заблокирован другим пользователем, форма часто становится доступной только для просмотра.
Признаки:
- надпись вроде «Объект заблокирован пользователем…»;
- документ нельзя редактировать, но можно смотреть;
- кнопки «Записать», «Провести», «Ещё» частично недоступны.
Что проверить:
- кто открыл объект;
- активные сеансы;
- не открыт ли объект в другом окне;
- не выполняется ли фоновое задание, которое держит блокировку;
- не было ли аварийного завершения сеанса.
2. Главная ошибка: «по коду всё отлично»
Фраза «по коду всё отлично» часто означает: где-то в коде действительно написано:
Элементы.МояКнопка.Доступность = Истина;
Но кнопка всё равно неактивна.
Возможные причины:
- Этот код вообще не выполняется.
- Код выполняется, но позже другое место снова ставит
Доступность = Ложь. - Меняется доступность не той кнопки.
- Кнопка находится внутри группы, а недоступна сама группа.
- Форма открыта в режиме только просмотр.
- Стандартная команда управляется платформой, а не вашим кодом.
- Кнопка блокируется браузером или веб-клиентом из-за ошибки.
- Свойство устанавливается в модуле объекта, где элементы формы недоступны.
- Расширение конфигурации переопределяет обработчик или свойства.
- Пользовательские настройки формы перекрывают ожидаемое поведение.
То есть важно не только то, что написано, но и:
- где написано;
- когда написано;
- в каком порядке выполняется;
- какой элемент имеется в виду;
- не переопределяется ли это позже.
3. Самая частая причина: форма в режиме только просмотр
Если в веб-клиенте неактивны почти все кнопки, первым делом проверяйте режим формы.
Как проявляется
- поля не редактируются;
- кнопки серые;
- объект можно только смотреть;
- иногда в заголовке видно признак просмотра;
- стандартные команды «Записать», «Провести», «Записать и закрыть» недоступны.
Причины
1. Форма открыта программно в режиме только просмотр
Например:
Параметры = Новый Структура("Ключ", Объект.Ссылка);
ОткрытьФорму(
"Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента",
Параметры,
,
,
Истина // форма открыта только для просмотра
);
Ищите в коде вызовы ОткрытьФорму и проверяйте параметр, отвечающий за открытие только для просмотра.
2. Объект заблокирован
Если объект заблокирован другим пользователем, платформа может открыть форму только для просмотра.
Проверьте:
- кто редактирует объект;
- активные сеансы;
- фоновые задания;
- не открыт ли объект в другом рабочем месте;
- не заблокирован ли объект бизнес-логикой.
3. Нет прав на изменение
Если у пользователя есть только право просмотра, кнопки изменения будут недоступны.
Проверьте роли и права:
- чтение;
- просмотр;
- добавление;
- изменение;
- проведение;
- отмена проведения;
- удаление;
- использование конкретных команд, если права на них настроены отдельно.
4. Ограничения RLS
Если используются ограничения на уровне записей, пользователь может видеть объект, но не иметь права изменять именно этот объект.
Например:
- виден документ только своей организации;
- видны документы только своего подразделения;
- нельзя менять объекты старше определённой даты;
- нельзя менять объекты с определённым статусом.
5. Дата запрета изменения
Во многих конфигурациях есть дата запрета редактирования. Если документ попадает в запрещённый период, кнопки могут быть недоступны.
Проверьте:
- дату запрета;
- пользователя, для которого установлен запрет;
- раздел, документ, регистр;
- настройки администрирования.
6. Статус объекта
Во многих типовых и самописных конфигурациях объект может иметь статус:
- закрыт;
- отменён;
- утверждён;
- завершён;
- не подлежит редактированию;
- только чтение.
В этом случае код специально делает форму недоступной.
4. Неактивна одна кнопка: что проверять
Если неактивна только одна конкретная кнопка, порядок проверки такой.
1. Проверьте имя элемента
В конфигураторе важно смотреть не заголовок кнопки, а именно имя элемента формы.
Например, пользователь видит кнопку:
Записать
А элемент называется:
КнопкаЗаписать
или вообще:
ГруппаКомандПанельКнопкаЗаписать
В коде ищите по имени элемента.
2. Проверьте свойства элемента формы
В конфигураторе откройте форму и найдите кнопку.
Проверьте свойства:
Видимость;Доступность;Редактирование, если применимо;ТолькоПросмотр, если это поле или элемент, у которого есть такое свойство;- родительскую группу;
- командную панель.
Если у группы стоит недоступность, кнопки внутри тоже могут быть недоступны.
3. Проверьте родительскую группу
Очень частая ситуация:
Элементы.ГруппаКоманды.Доступность = Ложь;
Из-за этого все кнопки внутри группы становятся неактивными. Или наоборот: вы включаете кнопку, но родительская группа недоступна.
Проверьте иерархию элементов формы:
- страница;
- группа;
- панель;
- подменю;
- кнопка.
4. Проверьте, кто и когда меняет доступность
Сделайте глобальный поиск по конфигурации и расширениям.
Ищите:
МояКнопка.Доступность
МояКнопка.ТолькоПросмотр
.Доступность
.ТолькоПросмотр
ОткрытьФорму(
Также ищите имя кнопки:
МояКнопка
Если у вас типовая конфигурация, проверяйте также:
- расширения;
- подписки на события;
- общие модули;
- модули менеджеров;
- модули объекта;
- модули формы;
- условное оформление;
- функциональные опции.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.