Ячейка или поле в 1С 8.3 не редактируется: находим источник блокировки и снимаем её
Содержание
Чтобы убрать защиту ячейки в 1С 8.3, сначала определите, что именно её заблокировало. В табличном документе (печатная форма, макет, отчёт) за это отвечают свойства Защита и ТолькоПросмотр. В поле формы — право роли, условное оформление, свойство элемента ТолькоПросмотр или код модуля формы. Снимать защиту наугад бесполезно: пока не найден источник, правка в одном месте перекрывается другим.
Источники блокировки идут от простых к сложным. Окно печати, права и даты запрета решаются в режиме 1С:Предприятие без программиста, остальные требуют Конфигуратора.
С чего начать: определяем, какая защита стоит на ячейке
Посмотрите, как выглядит заблокированное место и на что оно похоже. От этого зависит раздел, в который идти.
| Что видите | Скорее всего | Где снимать |
|---|---|---|
| Печатная форма открыта, курсор в ячейку не ставится | Табличный документ в режиме просмотра | Кнопка редактирования в окне печати, свойство Защита |
| Вся форма документа серая, ни одно поле не меняется | Нет права «Изменение» или дата запрета изменения | Роли пользователя, даты запрета |
| Серые одно-два поля, остальные работают | Свойство ТолькоПросмотр элемента или запрет редактирования реквизитов | Команда «Разрешить редактирование реквизитов», Конфигуратор |
| Поле серое только в части строк таблицы | Условное оформление с параметром «Только просмотр» | Условное оформление формы |
| Поле разблокируется и тут же снова блокируется | Код модуля формы | Обработчики ПриИзменении, ПриАктивизацииСтроки |
| Ячейка в Excel после выгрузки из 1С не правится | Защищённый просмотр Excel | Жёлтая панель «Разрешить редактирование» в Excel |
💡 Последний случай к 1С не относится. Excel открывает скачанные и полученные по почте файлы в защищённом просмотре. Достаточно нажать кнопку в жёлтой полосе над таблицей.
Три быстрых проверки до Конфигуратора
- Откройте ту же форму под пользователем с ролью «Полные права». Если там поле редактируется — дело в правах.
- Проверьте дату документа. Если она попадает в закрытый период, система не даст изменить ни одно поле.
- Откройте меню
Ещёв командной панели формы. Ищите команды со словами «Редактировать» или «Разрешить редактирование».
Как снять защиту ячеек в табличном документе и печатной форме
Табличный документ — это всё, что похоже на лист Excel внутри 1С: печатные формы, макеты, результаты некоторых отчётов. У него два уровня защиты.
- 🔒
ТолькоПросмотру документа целиком — нельзя изменить ни одну ячейку. - 🔐
Защитау документа плюсЗащитау конкретных областей — заблокированы только отмеченные ячейки, остальные открыты.
Вторая схема работает так: свойство Защита документа включает механизм, а свойство Защита области говорит, какие ячейки под него попадают. Если у документа защита выключена, флаги на областях ничего не делают.
В режиме 1С:Предприятие
В типовых конфигурациях на базе БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) окно печати открывает форму только для просмотра. В командной панели этого окна есть кнопка, которая переключает режим редактирования, обычно с пиктограммой карандаша. После нажатия ячейки становятся доступны для ввода.
⚠️ Правки в печатной форме не попадают в документ базы. Вы меняете только этот экземпляр бумаги. При следующей печати форма соберётся заново из данных документа.
Если ячейку нужно править постоянно (например, всегда дописывать текст в одну графу), правьте не печатную форму, а макет — об этом ниже.
В Конфигураторе: макет
- Откройте макет печатной формы (объект →
Макетыили общие макеты). - Выделите ячейки и откройте палитру свойств (
Alt+Enter). - Снимите флаг
Защитау области. - Сохраните конфигурацию и обновите конфигурацию базы данных.
Если макет печатной формы в типовой конфигурации, менять его напрямую не стоит — это снимет конфигурацию с поддержки или создаст конфликт при обновлении. Используйте расширение (последний раздел) или пользовательский макет: в типовых базах на БСП макеты меняются в режиме 1С:Предприятие через Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм.
Программно
Если табличный документ собирается в коде, защиту снимают так:
// ТабДок — объект ТабличныйДокумент, который выводится в форму
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.Защита = Ложь;
// Или оставить защиту, но открыть конкретную область
ТабДок.Защита = Истина;
ОбластьВвода = ТабДок.Область("R5C2:R20C6");
ОбластьВвода.Защита = Ложь;
Когда документ показан в поле формы, проверьте и сам элемент: у поля табличного документа есть свои свойства ТолькоПросмотр и Редактирование.
Элементы.ПолеРезультата.ТолькоПросмотр = Ложь;
Элементы.ПолеРезультата.Редактирование = Истина;
Права ролей: когда ячейку блокирует не форма, а доступ
Если у пользователя нет права «Изменение» на объект, форма откроется, но все поля будут серыми. Платформа делает это сама, никакого кода не нужно.
Как проверить в типовой конфигурации
- Откройте
Администрирование → Пользователи и права → Пользователи. - Откройте карточку пользователя и перейдите к правам доступа (группы доступа или профили).
- Сравните его профиль с профилем коллеги, у которого поле редактируется.
В конфигурациях на БСП права напрямую ролям не выдаются: роль входит в профиль группы доступа, а пользователь — в группу. Добавлять роль руками в Конфигураторе в такой базе не нужно, правьте состав групп доступа.
Права на отдельный реквизит
Одна из причин, почему серое только одно поле: в роли отключено право «Редактирование» на конкретный реквизит. В Конфигураторе это видно так.
- Откройте роль, которая есть у пользователя.
- Найдите объект (справочник, документ) и раскройте его реквизиты.
- У нужного реквизита проверьте флаги «Просмотр» и «Редактирование».
Не выдавайте полные права, чтобы обойти одну заблокированную ячейку. Пользователь получит доступ ко всей базе, включая администрирование и удаление данных .
Дата запрета изменения
В Бухгалтерии 3.0 и ЗУП 3.1 есть механизм дат запрета изменения. Документ с датой раньше запрета открывается, но записать его нельзя, и поля по сути защищены. Раскрывать закрытый период надо только по согласованию с главным бухгалтером. Дата задаётся в настройках «Даты запрета изменения», команду проще всего найти через поиск по разделу Администрирование.
Условное оформление: защита по условию
Условное оформление умеет не только раскрашивать строки. У него есть параметр «Только просмотр». С его помощью разработчик блокирует поле, когда выполняется условие: документ проведён, статус «Согласован», в строке стоит флаг.
Признак именно этой причины — поле серое не всегда, а при определённом значении в соседнем поле или строке.
Где искать в Конфигураторе
- Откройте форму объекта.
- Найдите свойство
Условное оформлениеу формы (в палитре свойств формы или на вкладке реквизитов). - Просмотрите элементы оформления, у которых в настройке оформления включено «Только просмотр».
- Проверьте, какие поля попадают в список «Оформляемые поля» и какое условие стоит в отборе.
Оформление может создаваться и программно. Ищите в модуле формы строку:
Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Чтобы снять защиту, удалите этот элемент оформления, измените условие или уберите поле из оформляемых. В типовой форме делайте это через расширение — так правки переживут обновление.
💡 Глобальный поиск по конфигурации — Ctrl+Shift+F. Ищите имя реквизита и слово ТолькоПросмотр: обычно это сразу показывает, кто ставит защиту.
Код модуля формы: программная блокировка поля
Самый частый источник защиты в доработанных базах — строки вида:
Элементы.Цена.ТолькоПросмотр = Истина;
Элементы.Цена.Доступность = Ложь;
ЭтаФорма.ТолькоПросмотр = Истина;
ТолькоПросмотр позволяет выделить и скопировать значение, но не изменить его. Доступность = Ложь делает поле полностью неактивным. Если в Конфигураторе флаг «Только просмотр» снят, а поле серое, проверьте второе свойство.
Какие обработчики проверить
- 📌
ПриСозданииНаСервереиПриОткрытии— блокировка при открытии формы. - 📌
ПриЧтенииНаСервере— блокировка по данным записанного объекта. - 📌
ПриИзмененииполей — защита включается после выбора значения в другом поле. - 📌
ПриАктивизацииСтрокитабличной части — защита разная для разных строк. - 📌 Общие процедуры вида
УстановитьДоступностьЭлементов()илиУправлениеФормой(). Их вызывают из многих мест сразу.
Последний пункт важен. Если поправить только ПриСозданииНаСервере, а процедура управления формой вызывается ещё и при изменении поля, защита вернётся при первом же вводе.
Как найти место, где ставится защита
- Откройте модуль формы и найдите имя элемента (
Ctrl+F). - Поставьте точку останова (
F9) на каждой найденной строке. - Запустите отладку (
F5) и воспроизведите действия пользователя. - Остановка покажет, какой обработчик и при каком условии блокирует поле.
Ячейки в таблицах и списках
Табличная часть документа — отдельная история. Защита там бывает на трёх уровнях: вся таблица, колонка, отдельная ячейка.
| Уровень | Чем задаётся | Как снять |
|---|---|---|
| Вся таблица | ТолькоПросмотр у элемента таблицы формы | Элементы.Товары.ТолькоПросмотр = Ложь |
| Колонка | ТолькоПросмотр у поля колонки | Элементы.ТоварыЦена.ТолькоПросмотр = Ложь |
| Ячейка в отдельных строках | Условное оформление или код в ПриАктивизацииСтроки | Найти условие и изменить его |
| Динамический список | Список отображает записи базы и не редактируется в строке | Открыть сам объект двойным щелчком |
Имя колонки в коде — это имя элемента формы, а не реквизита. Обычно оно составное: имя таблицы плюс имя реквизита (ТоварыЦена). Точное имя видно в дереве элементов формы.
Динамический список (журналы документов, списки справочников) редактировать прямо в строке не задуман. Если пользователь жалуется, что «в списке не правится ячейка», это не защита: значение меняется в форме самого элемента.
Расчётные колонки
В зарплатных и расчётных документах суммы часто рассчитываются автоматически, и колонка закрыта от ручного ввода. В ЗУП 3.1 для таких документов предусмотрен режим ручного исправления результатов расчёта — найдите в форме документа флаг или команду ручной корректировки. Снимать защиту колонки кодом здесь нельзя: расчёт перезапишет ручную правку при следующем заполнении.
Запрет редактирования ключевых реквизитов
В типовых конфигурациях на БСП у справочников есть механизм запрета редактирования реквизитов. После того как элемент использовали в документах, часть полей блокируется: например, вид номенклатуры.
Снять блокировку можно без Конфигуратора:
- Откройте карточку элемента.
- В командной панели нажмите
Ещё → Разрешить редактирование реквизитов. - Подтвердите действие. Система предупредит, где элемент уже используется.
Это не ошибка, а защита от искажения учёта. Изменение вида номенклатуры после проведения документов может испортить уже сформированные данные.
Снять защиту через расширение конфигурации
Если блокировка зашита в типовую форму, правка напрямую в основной конфигурации снимет её с поддержки. Расширение решает задачу без вмешательства в типовой код и переживает обновления. Расширения доступны с платформы 8.3.6.
Пошагово
- В Конфигураторе откройте
Конфигурация → Расширения конфигурациии добавьте новое расширение. - В дереве основной конфигурации найдите нужную форму, в контекстном меню выберите
Добавить в расширение. - Откройте заимствованную форму в расширении.
- В палитре свойств формы у события
ПриСозданииНаСервересоздайте обработчик с типом вызова «После». - Впишите код снятия защиты.
- Сохраните расширение и обновите конфигурацию базы данных.
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Элементы.Цена.ТолькоПросмотр = Ложь;
Элементы.Цена.Доступность = Истина;
КонецПроцедуры
Имя процедуры Конфигуратор сформирует сам — префикс зависит от настройки расширения.
Что учесть
- ⚠️ Если в типовом коде защита ставится повторно в
ПриИзмененииили в процедуре управления формой, добавьте такой же обработчик «После» и там. - ⚠️ Расширение работает для всех пользователей. Если поле нужно открыть только бухгалтеру, проверяйте роль в коде через
РольДоступна(). - ⚠️ Снимайте защиту осознанно. Её часто ставят, чтобы не сломать проводки или зависимые расчёты.
Перед установкой расширения в рабочую базу сделайте резервную копию и проверьте его на копии. Обновление конфигурации базы данных обрывает работу, поэтому делайте его в нерабочее время или предупредите пользователей.
Частые вопросы о защите ячеек
Почему в табличном документе стоит флаг «Защита» у ячеек, а редактировать их можно?
Защита у всего табличного документа. Без него флаги на ячейках игнорируются.