Почему в 1С:Документооборот не редактируется наименование документа и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

При работе в программе «1С:Документооборот 8 КОРП» редакции 2.1 пользователи и администраторы часто сталкиваются с неприятной проблемой: в карточке некоторых внутренних документов поле «Наименование» заблокировано для редактирования. Рядом с ним отображается синий знак вопроса, при нажатии на который система выдает предупреждение: «Наименование документа сформировано автоматически по шаблону, редактирование запрещено».

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

В чем причина блокировки поля «Наименование»?

Для того чтобы понять логику программы, заглянем «под капот» конфигурации. Блокировка поля ввода на форме управляется кодом процедуры УстановитьДоступностьПолей(). Рассмотрим стандартный фрагмент этого алгоритма:


Процедура УстановитьДоступностьПолей()
    
    УстановитьДоступностьПоСостоянию();
    УстановитьДоступностьПоЭП();
    УстановитьДоступностьПоПравам();
    УстановитьДоступностьПоЗапрету();
    
    Если НаименованиеСозданоПоШаблону Тогда 
        Элементы.Заголовок.ТолькоПросмотр = Истина;
        Элементы.Заголовок.Подсказка = НСтр("ru = 'Наименование документа сформировано автоматически по шаблону, редактирование запрещено.'");
        Элементы.Заголовок.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;
    КонецЕсли;
    
КонецПроцедуры

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

  1. Эффект «памяти» документа: Если в момент создания документа в его шаблоне было заполнено наименование, система автоматически устанавливает флаг НаименованиеСозданоПоШаблону в значение Истина. Если позже вы очистите шаблон или измените настройки вида документа, у уже созданных ранее документов этот флаг так и останется включенным. Именно поэтому в списке документов наблюдается разнобой.
  2. Скрытые пробелы в шаблоне: Часто поле наименования в шаблоне кажется пустым, но на самом деле содержит невидимые символы (пробелы, переносы строк, неразрывные пробелы). При создании документа по такому шаблону система считывает эти символы, считает, что наименование задано шаблоном, и блокирует поле.
  3. Настройки вида документа: Если в карточке вида документа включена опция автоматического формирования наименования по формуле, программа будет принудительно устанавливать этот флаг при создании каждого нового документа данного вида.

Почему простое изменение кода формы не решает проблему?

Некоторые разработчики пытаются решить проблему «в лоб», изменяя доступность элемента на форме программно, например, так:


Если НаименованиеСозданоПоШаблону Тогда 
    Элементы.Заголовок.ТолькоПросмотр = Ложь; // Разрешаем редактирование вопреки шаблону
КонецЕсли;

Рассмотрим подробнее, почему этот вариант не работает. Даже если вы сделаете поле доступным на форме и пользователь сможет ввести новое наименование, при попытке записать документ изменения сбросятся. Это происходит потому, что в модуле объекта в обработчике события ПередЗаписью срабатывает жесткая проверка. Система видит, что флаг НаименованиеСозданоПоШаблону равен Истина, игнорирует ручной ввод пользователя и перезаписывает поле по алгоритму шаблона (в данном случае записывая туда пустоту или восстанавливая старое значение).

Инструкция по решению проблемы без изменения кода

Поскольку конфигурация часто находится на поддержке («на замке»), лучшим решением будет исправление состояния данных и настроек в пользовательском режиме. Разберем по шагам три основных этапа решения.

Шаг 1. Сброс флага у существующих документов

Для документов, которые уже созданы и заблокированы, необходимо принудительно установить скрытый реквизит НаименованиеСозданоПоШаблону в значение Ложь. Для этого воспользуемся стандартной обработкой.

  1. Перейдем в раздел «Администрирование» — «Обслуживание» — «Корректировка данных» и выберем инструмент «Групповое изменение реквизитов».
  2. В поле «Изменять» выберем объект Внутренние документы.
  3. Нажмем ссылку «Добавить условия отбора» и настроим фильтр (например, укажем конкретный «Вид документа» или выберем документы по списку ссылок), чтобы случайно не изменить лишние данные.
  4. По умолчанию служебные реквизиты скрыты в обработке. Нажмем кнопку «Дополнительные параметры» (в правом нижнем углу или в меню «Еще») и установим флаг «Показывать служебные реквизиты».
  5. Найдем в списке реквизитов поле Наименование создано по шаблону (имя в конфигураторе — НаименованиеСозданоПоШаблону).
  6. В колонке «Новое значение» снимем галочку (установим значение Ложь).
  7. Нажмем кнопку «Изменить реквизиты».

После выполнения этой операции у всех выбранных документов поле «Наименование» разблокируется и будет успешно сохраняться при ручном изменении.

Шаг 2. Очистка шаблона от скрытых символов

Чтобы проблема не повторялась при создании новых документов по шаблону, проверим сам шаблон на наличие невидимого мусора:

  1. Откроем карточку соответствующего шаблона документа.
  2. Перейдем на вкладку «Реквизиты документа».
  3. Активируем поле «Наименование», выделим весь его текст (даже если визуально там ничего нет) и нажмем комбинацию клавиш Shift + F4 для полной очистки значения. Это гарантирует удаление скрытых пробелов.
  4. Перейдем на вкладку «Настройки заполнения» и убедимся, что напротив реквизита «Наименование» не установлена настройка «Запрещать редактировать».
  5. Сохраним шаблон.

Шаг 3. Анализ настроек Вида документа

Если предыдущие шаги не помогли для вновь создаваемых документов, проанализируем настройки их вида:

  1. Перейдем в справочник «Виды документов» и откроем карточку нужного вида.
  2. Проверим состояние флага «Автоматически формировать наименование». Если данный функционал вам не требуется, снимите этот флаг. Если автоформирование наименования необходимо, то ручное редактирование поля будет заблокировано по умолчанию для всей цепочки документов этого вида, и это является стандартным поведением системы. В таком случае логичным решением будет разделение документов на разные виды: для одних использовать автозаполнение, для других — ручной ввод.

Применяя данные методы, мы сможем восстановить корректную работу системы без внесения изменений в типовую конфигурацию программы.

← На главную