Как вернуть отображение и возможность редактирования кода контрагента в 1С:Бухгалтерия 3.0

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

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

Почему исчезло поле «Код»?

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

В релизе 3.0.105.14 было внесено изменение, которое программно отключало видимость поля Код на уровне модуля формы. Это означало, что даже если пользователь ставил галочку в настройках, система принудительно скрывала элемент при открытии карточки.

Способ 1: Использование стандартных настроек (если установлен патч)

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

  1. Откроем карточку любого контрагента.
  2. Нажмем кнопку «Ещё» в верхнем правом углу формы.
  3. Выберем пункт «Изменить форму...».
  4. В появившемся дереве элементов найдем группу Код и вид (в некоторых версиях она может называться Вид и код).
  5. Установим флаг напротив элемента Код.
  6. Нажмем «ОК».

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

Способ 2: Установка официального патча EF_10235167

Для исправления этой проблемы фирма «1С» выпустила экстренный патч под номером EF_10235167. Его название прямо говорит о назначении: «В карточке контрагента отключена видимость у поля Код».

Выясним, как проверить наличие и установить патч:

  1. Перейдем в раздел «Администрирование» — «Обслуживание».
  2. Раскроем блок «Обновление программы».
  3. Перейдем по ссылке «Установленные исправления (патчи)».
  4. Если в списке нет EF_10235167, нажмем «Поиск и установка исправлений» (требуется доступ к интернет-поддержке).

После установки патча и перезапуска сеанса стандартный метод через «Изменить форму» начнет работать корректно.

Способ 3: Программное решение через расширение конфигурации

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

Для этого создадим расширение и добавим в него процедуру-перехватчик для формы элемента справочника Контрагенты. Разберем причесанный и надежный вариант кода:


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

В данном примере мы используем метод Найти, чтобы избежать ошибок при обращении к несуществующим объектам. Если поле Код уже присутствует в структуре формы (но скрыто), мы просто устанавливаем свойство Видимость в значение Истина. Если же разработчики полностью удалили элемент из состава формы в конкретном обновлении, мы создаем его динамически через Элементы.Добавить, привязывая к данным Объект.Код.

Способ 4: Групповое изменение реквизитов

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

  1. Зайдем в Администрирование — Обслуживание — Корректировка данных.
  2. Выберем «Групповое изменение реквизитов».
  3. В поле «Изменять» выберем Контрагенты.
  4. Нажмем кнопку «Дополнительные параметры» и установим флаг «Показывать служебные реквизиты».
  5. Теперь в списке реквизитов появится Код. Вы сможете задать новое значение для выбранных элементов.

Важное предупреждение: При ручном изменении кодов помните о риске нарушения автонумерации. Если вы установите код вручную (например, «1» вместо «00-000001»), система может потерять логику префиксации, и при создании следующего контрагента возникнет ошибка «Код не уникален».

Резюме

Проанализировав ситуацию, мы видим, что проблема «исчезновения» кода в релизе 3.0.105.14 носит временный характер и связана с программным ограничением видимости. Самым правильным решением для администратора будет установка патча EF_10235167, а для программиста — использование расширения с переопределением видимости в событии ПриСозданииНаСервере.

← На главную