При работе в программе 1С:Бухгалтерия предприятия 3.0 пользователи иногда сталкиваются с досадной ситуацией: при создании нового элемента в справочнике Контрагенты поле ввода юридического адреса оказывается заблокированным. Оно либо отображается серым цветом, либо в нем полностью отсутствует кнопка "Заполнить". При этом ввод данных через ИНН или копирование существующего контрагента может работать корректно, что вводит в заблуждение и заставляет думать о серьезном сбое в базе данных.
В этой статье мы подробно разберем, почему возникает такая проблема, проанализируем внутренние механизмы платформы 1С и Библиотеки стандартных подсистем (БСП), а также рассмотрим несколько способов решения — от простых пользовательских настроек до использования программного кода.
Для начала проанализируем ситуацию. В современных конфигурациях 1С на управляемых формах за хранение и отображение адресов отвечает подсистема "Контактная информация". Все настройки того, как должен выглядеть адрес (строкой или в отдельном диалоговом окне), хранятся в справочнике ВидыКонтактнойИнформации.
Основная причина блокировки ввода заключается в том, что для конкретного вида информации (в нашем случае — "Юридический адрес контрагента") в системных настройках устанавливается флаг ЗапретитьРедактированиеПользователем. Когда этот флаг активен, программа блокирует интерфейсные элементы управления для этого поля, считая их "системными" и не подлежащими изменению. Это может произойти после некорректного обновления конфигурации, сбоя при реструктуризации базы данных или из-за специфических программных ошибок в релизах.
Прежде чем переходить к радикальным мерам, проверим стандартные настройки. Рассмотрим шаги, которые необходимо выполнить в первую очередь:
Если поле доступно для редактирования, нам нужно убедиться, что установлена галочка "Редактировать только в диалоге". Однако, как показывает практика, именно на этом этапе пользователи обнаруживают, что галочка недоступна для изменения или само поле настроек заблокировано. Если это ваш случай, переходим ко второму способу.
Если стандартный интерфейс не позволяет внести изменения, мы можем воспользоваться мощным инструментом — обработкой "Групповое изменение реквизитов". Это позволит нам изменить скрытые системные флаги без написания кода.
Рассмотрим порядок действий по шагам:
Виды контактной информации.ЗапретитьРедактированиеПользователем и установим значение в Ложь (снимите галочку).После этой операции вернемся в справочник видов контактной информации (как в Способе 1). Теперь возможность редактирования настроек должна появиться, и вы сможете установить флаг "Редактировать только в диалоге".
Для программистов или администраторов, имеющих доступ к консоли кода или созданию внешних обработок, этот метод будет самым быстрым. Мы можем напрямую обратиться к объекту справочника и программно снять блокировку. Проанализируем пример кода, который решает данную задачу:
&НаСервере
Процедура ИсправитьБлокировкуАдресаНаСервере()
// Получаем объект юридического адреса контрагентов
ВидАдресаОбъект = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента.ПолучитьОбъект();
Если ВидАдресаОбъект <> Неопределено Тогда
// Снимаем системный запрет на редактирование
ВидАдресаОбъект.ЗапретитьРедактированиеПользователем = Ложь;
// Дополнительно можно сразу включить редактирование в диалоге
ВидАдресаОбъект.РедактироватьТолькоВДиалоге = Истина;
Попытка
ВидАдресаОбъект.Записать();
Сообщить("Настройки юридического адреса успешно обновлены!");
Исключение
Сообщить("Ошибка при записи объекта: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецПроцедуры
Этот код снимает флаг ЗапретитьРедактированиеПользователем, который и является корнем проблемы. После выполнения данного фрагмента кода форма контрагента начнет отображать кнопку заполнения адреса в привычном режиме.
Иногда проблема кроется глубже — в повреждении структуры предопределенных элементов. В справочнике Виды контактной информации предусмотрен штатный механизм восстановления. Разберем, как им воспользоваться:
Важно: это действие сбросит настройки отображения (например, порядок следования полей или их обязательность) для всех видов контактной информации к "заводским". Если вы ранее вносили индивидуальные настройки в адреса или телефоны, их придется восстановить вручную.
Если вышеперечисленные методы не помогли, проанализируем еще два фактора:
1. Адресный классификатор (ФИАС): Проверьте, загружены ли данные классификатора. Хотя отсутствие ФИАС обычно позволяет вводить адрес "вручную" строкой, в некоторых релизах 3.0 отсутствие актуальных индексов или регионов блокирует вызов формы ввода, если в настройках стоит жесткое требование проверки по ФИАС.
2. Формат хранения XML/JSON: В новых версиях 1С адрес внутри базы хранится как сложная структура. Если вы перенесли данные из очень старой версии программы, поле может быть заблокировано из-за несоответствия старого строкового формата новому структурному. В этом случае заполнение адреса по ИНН помогает "пробить" блокировку, так как сервис 1С:Контрагент записывает данные сразу в правильном новом формате.
Мы рассмотрели все основные причины и способы исправления недоступности юридического адреса. Как правило, сочетание Способа 2 (Групповое изменение) и Способа 1 (Включение редактирования в диалоге) решает проблему в 99% случаев без необходимости внесения изменений в саму конфигурацию.