Ячейка или поле в 1С 8.3 не редактируется: находим источник блокировки и снимаем её

· 10 мин

Содержание

Чтобы убрать защиту ячейки в 1С 8.3, сначала определите, что именно её заблокировало. В табличном документе (печатная форма, макет, отчёт) за это отвечают свойства Защита и ТолькоПросмотр. В поле формы — право роли, условное оформление, свойство элемента ТолькоПросмотр или код модуля формы. Снимать защиту наугад бесполезно: пока не найден источник, правка в одном месте перекрывается другим.

Источники блокировки идут от простых к сложным. Окно печати, права и даты запрета решаются в режиме 1С:Предприятие без программиста, остальные требуют Конфигуратора.

С чего начать: определяем, какая защита стоит на ячейке

Посмотрите, как выглядит заблокированное место и на что оно похоже. От этого зависит раздел, в который идти.

Что видитеСкорее всегоГде снимать
Печатная форма открыта, курсор в ячейку не ставитсяТабличный документ в режиме просмотраКнопка редактирования в окне печати, свойство Защита
Вся форма документа серая, ни одно поле не меняетсяНет права «Изменение» или дата запрета измененияРоли пользователя, даты запрета
Серые одно-два поля, остальные работаютСвойство ТолькоПросмотр элемента или запрет редактирования реквизитовКоманда «Разрешить редактирование реквизитов», Конфигуратор
Поле серое только в части строк таблицыУсловное оформление с параметром «Только просмотр»Условное оформление формы
Поле разблокируется и тут же снова блокируетсяКод модуля формыОбработчики ПриИзменении, ПриАктивизацииСтроки
Ячейка в Excel после выгрузки из 1С не правитсяЗащищённый просмотр ExcelЖёлтая панель «Разрешить редактирование» в Excel

💡 Последний случай к 1С не относится. Excel открывает скачанные и полученные по почте файлы в защищённом просмотре. Достаточно нажать кнопку в жёлтой полосе над таблицей.

Три быстрых проверки до Конфигуратора

  1. Откройте ту же форму под пользователем с ролью «Полные права». Если там поле редактируется — дело в правах.
  2. Проверьте дату документа. Если она попадает в закрытый период, система не даст изменить ни одно поле.
  3. Откройте меню Ещё в командной панели формы. Ищите команды со словами «Редактировать» или «Разрешить редактирование».
Диагностика: выберите симптом

Как снять защиту ячеек в табличном документе и печатной форме

Табличный документ — это всё, что похоже на лист Excel внутри 1С: печатные формы, макеты, результаты некоторых отчётов. У него два уровня защиты.

  • 🔒 ТолькоПросмотр у документа целиком — нельзя изменить ни одну ячейку.
  • 🔐 Защита у документа плюс Защита у конкретных областей — заблокированы только отмеченные ячейки, остальные открыты.

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

В режиме 1С:Предприятие

В типовых конфигурациях на базе БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) окно печати открывает форму только для просмотра. В командной панели этого окна есть кнопка, которая переключает режим редактирования, обычно с пиктограммой карандаша. После нажатия ячейки становятся доступны для ввода.

⚠️ Правки в печатной форме не попадают в документ базы. Вы меняете только этот экземпляр бумаги. При следующей печати форма соберётся заново из данных документа.

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

В Конфигураторе: макет

  1. Откройте макет печатной формы (объект → Макеты или общие макеты).
  2. Выделите ячейки и откройте палитру свойств (Alt+Enter).
  3. Снимите флаг Защита у области.
  4. Сохраните конфигурацию и обновите конфигурацию базы данных.

Если макет печатной формы в типовой конфигурации, менять его напрямую не стоит — это снимет конфигурацию с поддержки или создаст конфликт при обновлении. Используйте расширение (последний раздел) или пользовательский макет: в типовых базах на БСП макеты меняются в режиме 1С:Предприятие через Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм.

Программно

Если табличный документ собирается в коде, защиту снимают так:

// ТабДок — объект ТабличныйДокумент, который выводится в форму
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.Защита = Ложь;

// Или оставить защиту, но открыть конкретную область
ТабДок.Защита = Истина;
ОбластьВвода = ТабДок.Область("R5C2:R20C6");
ОбластьВвода.Защита = Ложь;

Когда документ показан в поле формы, проверьте и сам элемент: у поля табличного документа есть свои свойства ТолькоПросмотр и Редактирование.

Элементы.ПолеРезультата.ТолькоПросмотр = Ложь;
Элементы.ПолеРезультата.Редактирование = Истина;

Права ролей: когда ячейку блокирует не форма, а доступ

Если у пользователя нет права «Изменение» на объект, форма откроется, но все поля будут серыми. Платформа делает это сама, никакого кода не нужно.

Как проверить в типовой конфигурации

  1. Откройте Администрирование → Пользователи и права → Пользователи.
  2. Откройте карточку пользователя и перейдите к правам доступа (группы доступа или профили).
  3. Сравните его профиль с профилем коллеги, у которого поле редактируется.

В конфигурациях на БСП права напрямую ролям не выдаются: роль входит в профиль группы доступа, а пользователь — в группу. Добавлять роль руками в Конфигураторе в такой базе не нужно, правьте состав групп доступа.

Права на отдельный реквизит

Одна из причин, почему серое только одно поле: в роли отключено право «Редактирование» на конкретный реквизит. В Конфигураторе это видно так.

  1. Откройте роль, которая есть у пользователя.
  2. Найдите объект (справочник, документ) и раскройте его реквизиты.
  3. У нужного реквизита проверьте флаги «Просмотр» и «Редактирование».

Не выдавайте полные права, чтобы обойти одну заблокированную ячейку. Пользователь получит доступ ко всей базе, включая администрирование и удаление данных .

Дата запрета изменения

В Бухгалтерии 3.0 и ЗУП 3.1 есть механизм дат запрета изменения. Документ с датой раньше запрета открывается, но записать его нельзя, и поля по сути защищены. Раскрывать закрытый период надо только по согласованию с главным бухгалтером. Дата задаётся в настройках «Даты запрета изменения», команду проще всего найти через поиск по разделу Администрирование.

Условное оформление: защита по условию

Условное оформление умеет не только раскрашивать строки. У него есть параметр «Только просмотр». С его помощью разработчик блокирует поле, когда выполняется условие: документ проведён, статус «Согласован», в строке стоит флаг.

Признак именно этой причины — поле серое не всегда, а при определённом значении в соседнем поле или строке.

Где искать в Конфигураторе

  1. Откройте форму объекта.
  2. Найдите свойство Условное оформление у формы (в палитре свойств формы или на вкладке реквизитов).
  3. Просмотрите элементы оформления, у которых в настройке оформления включено «Только просмотр».
  4. Проверьте, какие поля попадают в список «Оформляемые поля» и какое условие стоит в отборе.

Оформление может создаваться и программно. Ищите в модуле формы строку:

Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);

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

💡 Глобальный поиск по конфигурации — Ctrl+Shift+F. Ищите имя реквизита и слово ТолькоПросмотр: обычно это сразу показывает, кто ставит защиту.

Код модуля формы: программная блокировка поля

Самый частый источник защиты в доработанных базах — строки вида:

Элементы.Цена.ТолькоПросмотр = Истина;
Элементы.Цена.Доступность = Ложь;
ЭтаФорма.ТолькоПросмотр = Истина;

ТолькоПросмотр позволяет выделить и скопировать значение, но не изменить его. Доступность = Ложь делает поле полностью неактивным. Если в Конфигураторе флаг «Только просмотр» снят, а поле серое, проверьте второе свойство.

Какие обработчики проверить

  • 📌 ПриСозданииНаСервере и ПриОткрытии — блокировка при открытии формы.
  • 📌 ПриЧтенииНаСервере — блокировка по данным записанного объекта.
  • 📌 ПриИзменении полей — защита включается после выбора значения в другом поле.
  • 📌 ПриАктивизацииСтроки табличной части — защита разная для разных строк.
  • 📌 Общие процедуры вида УстановитьДоступностьЭлементов() или УправлениеФормой(). Их вызывают из многих мест сразу.

Последний пункт важен. Если поправить только ПриСозданииНаСервере, а процедура управления формой вызывается ещё и при изменении поля, защита вернётся при первом же вводе.

Как найти место, где ставится защита

  1. Откройте модуль формы и найдите имя элемента (Ctrl+F).
  2. Поставьте точку останова (F9) на каждой найденной строке.
  3. Запустите отладку (F5) и воспроизведите действия пользователя.
  4. Остановка покажет, какой обработчик и при каком условии блокирует поле.

Ячейки в таблицах и списках

Табличная часть документа — отдельная история. Защита там бывает на трёх уровнях: вся таблица, колонка, отдельная ячейка.

УровеньЧем задаётсяКак снять
Вся таблицаТолькоПросмотр у элемента таблицы формыЭлементы.Товары.ТолькоПросмотр = Ложь
КолонкаТолькоПросмотр у поля колонкиЭлементы.ТоварыЦена.ТолькоПросмотр = Ложь
Ячейка в отдельных строкахУсловное оформление или код в ПриАктивизацииСтрокиНайти условие и изменить его
Динамический списокСписок отображает записи базы и не редактируется в строкеОткрыть сам объект двойным щелчком

Имя колонки в коде — это имя элемента формы, а не реквизита. Обычно оно составное: имя таблицы плюс имя реквизита (ТоварыЦена). Точное имя видно в дереве элементов формы.

Динамический список (журналы документов, списки справочников) редактировать прямо в строке не задуман. Если пользователь жалуется, что «в списке не правится ячейка», это не защита: значение меняется в форме самого элемента.

Расчётные колонки

В зарплатных и расчётных документах суммы часто рассчитываются автоматически, и колонка закрыта от ручного ввода. В ЗУП 3.1 для таких документов предусмотрен режим ручного исправления результатов расчёта — найдите в форме документа флаг или команду ручной корректировки. Снимать защиту колонки кодом здесь нельзя: расчёт перезапишет ручную правку при следующем заполнении.

Запрет редактирования ключевых реквизитов

В типовых конфигурациях на БСП у справочников есть механизм запрета редактирования реквизитов. После того как элемент использовали в документах, часть полей блокируется: например, вид номенклатуры.

Снять блокировку можно без Конфигуратора:

  1. Откройте карточку элемента.
  2. В командной панели нажмите Ещё → Разрешить редактирование реквизитов.
  3. Подтвердите действие. Система предупредит, где элемент уже используется.

Это не ошибка, а защита от искажения учёта. Изменение вида номенклатуры после проведения документов может испортить уже сформированные данные.

Снять защиту через расширение конфигурации

Если блокировка зашита в типовую форму, правка напрямую в основной конфигурации снимет её с поддержки. Расширение решает задачу без вмешательства в типовой код и переживает обновления. Расширения доступны с платформы 8.3.6.

Пошагово

  1. В Конфигураторе откройте Конфигурация → Расширения конфигурации и добавьте новое расширение.
  2. В дереве основной конфигурации найдите нужную форму, в контекстном меню выберите Добавить в расширение.
  3. Откройте заимствованную форму в расширении.
  4. В палитре свойств формы у события ПриСозданииНаСервере создайте обработчик с типом вызова «После».
  5. Впишите код снятия защиты.
  6. Сохраните расширение и обновите конфигурацию базы данных.
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)

	Элементы.Цена.ТолькоПросмотр = Ложь;
	Элементы.Цена.Доступность = Истина;

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

Имя процедуры Конфигуратор сформирует сам — префикс зависит от настройки расширения.

Что учесть

  • ⚠️ Если в типовом коде защита ставится повторно в ПриИзменении или в процедуре управления формой, добавьте такой же обработчик «После» и там.
  • ⚠️ Расширение работает для всех пользователей. Если поле нужно открыть только бухгалтеру, проверяйте роль в коде через РольДоступна().
  • ⚠️ Снимайте защиту осознанно. Её часто ставят, чтобы не сломать проводки или зависимые расчёты.

Перед установкой расширения в рабочую базу сделайте резервную копию и проверьте его на копии. Обновление конфигурации базы данных обрывает работу, поэтому делайте его в нерабочее время или предупредите пользователей.

Частые вопросы о защите ячеек

Почему в табличном документе стоит флаг «Защита» у ячеек, а редактировать их можно?
Защита областей работает, только если включено свойство Защита у всего табличного документа. Без него флаги на ячейках игнорируются.
Можно ли снять защиту ячейки без доступа к Конфигуратору?
Да, если блокирует окно печати, запрет редактирования реквизитов, права или дата запрета. Защиту из кода формы и условного оформления без Конфигуратора не снять.
Чем отличается «Только просмотр» от «Доступность»?
При «Только просмотр» значение видно, его можно выделить и скопировать. При выключенной доступности поле полностью неактивно и не получает фокус.
Сохранится ли правка в печатной форме при повторной печати?
Нет. Печатная форма каждый раз собирается заново из данных документа. Постоянные изменения вносят в макет или в сам документ.
Почему после обновления конфигурации поле снова заблокировано?
Правку внесли в типовую форму, и обновление её перезаписало. Перенесите снятие защиты в расширение конфигурации.