В релизе 1С:Бухгалтерия предприятия 3.0.105.14 многие пользователи столкнулись с неожиданной ситуацией: в карточке контрагента исчезло поле Код. Даже при попытке изменить состав полей через стандартные настройки формы, поле не всегда удается вернуть. Разберем подробно, почему это произошло и какими способами можно восстановить привычный функционал.
Разработчики фирмы «1С» в рамках концепции упрощения интерфейса («понятный учет») приняли решение скрыть системные поля, которые, по их мнению, не несут прямой бухгалтерской нагрузки. Идентификация контрагента в современных реалиях чаще всего происходит по ИНН или Наименованию. Однако для многих компаний код остается критически важным: он используется для синхронизации с внешними CRM-системами, складским софтом или для связи с бумажными архивами.
В релизе 3.0.105.14 было внесено изменение, которое программно отключало видимость поля Код на уровне модуля формы. Это означало, что даже если пользователь ставил галочку в настройках, система принудительно скрывала элемент при открытии карточки.
Рассмотрим самый простой вариант. Если ваша конфигурация обновлена или в ней установлены актуальные исправления, поле можно вернуть через интерфейс. Проанализируем последовательность действий:
Код и вид (в некоторых версиях она может называться Вид и код).Код.Если после этих действий поле появилось, значит, ваша база содержит необходимые исправления. Если же поля нет в списке или оно не отображается после активации — переходим к следующим методам.
Для исправления этой проблемы фирма «1С» выпустила экстренный патч под номером EF_10235167. Его название прямо говорит о назначении: «В карточке контрагента отключена видимость у поля Код».
Выясним, как проверить наличие и установить патч:
EF_10235167, нажмем «Поиск и установка исправлений» (требуется доступ к интернет-поддержке).После установки патча и перезапуска сеанса стандартный метод через «Изменить форму» начнет работать корректно.
Если вы по каким-то причинам не можете установить патч или используете сильно кастомизированную форму, оптимальным решением будет создание небольшого расширения. Рассмотрим пример кода, который гарантированно выведет поле на форму, даже если оно отсутствует в метаданных формы элемента.
Для этого создадим расширение и добавим в него процедуру-перехватчик для формы элемента справочника Контрагенты. Разберем причесанный и надежный вариант кода:
&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)
// Проверяем, что мы находимся именно в форме элемента справочника Контрагенты
Если Форма.ИмяФормы = "Справочник.Контрагенты.Форма.ФормаЭлемента" Тогда
ИмяЭлемента = "Код";
ИмяГруппы = "ЛеваяКолонка"; // Группа, куда будет добавлен код, если его нет
ЭлементФормы = Форма.Элементы.Найти(ИмяЭлемента);
Если ЭлементФормы = Неопределено Тогда
// Если элемента нет на форме, создаем его программно
ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);
Если ГруппаФормы <> Неопределено Тогда
ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ГруппаФормы);
ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементФормы.ПутьКДанным = "Объект." + ИмяЭлемента;
КонецЕсли;
Иначе
// Если элемент есть, но скрыт — принудительно включаем видимость
ЭлементФормы.Видимость = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
В данном примере мы используем метод Найти, чтобы избежать ошибок при обращении к несуществующим объектам. Если поле Код уже присутствует в структуре формы (но скрыто), мы просто устанавливаем свойство Видимость в значение Истина. Если же разработчики полностью удалили элемент из состава формы в конкретном обновлении, мы создаем его динамически через Элементы.Добавить, привязывая к данным Объект.Код.
Если вам нужно изменить код разово и вы не хотите вносить изменения в код программы, можно воспользоваться встроенной обработкой. Посмотрим на алгоритм:
Контрагенты.Код. Вы сможете задать новое значение для выбранных элементов.Важное предупреждение: При ручном изменении кодов помните о риске нарушения автонумерации. Если вы установите код вручную (например, «1» вместо «00-000001»), система может потерять логику префиксации, и при создании следующего контрагента возникнет ошибка «Код не уникален».
Проанализировав ситуацию, мы видим, что проблема «исчезновения» кода в релизе 3.0.105.14 носит временный характер и связана с программным ограничением видимости. Самым правильным решением для администратора будет установка патча EF_10235167, а для программиста — использование расширения с переопределением видимости в событии ПриСозданииНаСервере.