Почему после переноса организаций из КА 1.1 в БП 3.0 возникают ошибки незаполненных полей ФИО и вида лица, и как это исправить?

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

При переносе справочника Организации из конфигурации «Комплексная автоматизация 1.1» в «Бухгалтерию предприятия 3.0» через универсальный обмен данными XML пользователи часто сталкиваются с ситуацией: элементы успешно загружаются, однако при попытке открыть карточку организации и записать ее вручную платформа выдает ошибки проверки заполнения:

  1. Поле «Юридическое / физическое лицо» не заполнено;
  2. Поле «Фамилия» не заполнено;
  3. Поле «Имя» не заполнено.

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

Выясним причины возникновения ошибки

Данная проблема вызвана тремя взаимосвязанными факторами структуры метаданных и логики работы платформы 1С:

  1. Несовпадение наименований и типов реквизитов в метаданных: в КА 1.1 вид организации хранится в реквизите ЮрФизЛицо (тип ПеречислениеСсылка.ЮрФизЛицо со значениями ЮридическоеЛицо и ФизическоеЛицо). В БП 3.0 этот реквизит называется ЮридическоеФизическоеЛицо (тип ПеречислениеСсылка.ЮридическоеФизическоеЛицо). Если правила обмена генерируются автоматически без ручной доработки, реквизиты с несовпадающими именами не связываются, и в приемнике реквизит остается пустым.
  2. Особенности режима загрузки данных: при загрузке через обработку УниверсальныйОбменДанными XML используется режим ОбменДанными.Загрузка = Истина. В этом режиме платформенные проверки ОбработкаПроверкиЗаполнения и модульные проверки отключаются, что позволяет записать объект с пустыми обязательными полями. Ошибка проявляется позже — при интерактивном открытии и попытке ручной записи в БП 3.0.
  3. Динамическое управление элементами формы: в управляемой форме справочника Организации в БП 3.0 видимость страниц и реквизитов (поля ввода ФИО индивидуального предпринимателя, страницы паспортных данных, переключатели) рассчитывается программно в зависимости от значения реквизита ЮридическоеФизическоеЛицо. Если реквизит не заполнен, форма переходит в неопределенное состояние, скрывая нужные поля, но при записи требует их обязательного заполнения.

Способ 1. Исправление загруженных данных через групповое изменение реквизитов

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

  1. Откроем меню «Функции для технического специалиста» (или «Все функции») и перейдем в обработку «Групповое изменение реквизитов».
  2. В поле выбора элементов укажем справочник Организации.
  3. Откроем «Дополнительные параметры» обработки и включим флаг «Показывать служебные реквизиты».
  4. В списке реквизитов найдем Юридическое / физическое лицо и установим значение Юридическое лицо (либо Физическое лицо, если переносится индивидуальный предприниматель). Для физических лиц также заполним поля Фамилия и Имя.
  5. Нажмем кнопку «Изменить реквизиты». После этого форма элементов будет открываться и записываться корректно.

Способ 2. Программная корректировка реквизитов через внешнюю обработку

Разберем пример программного заполнения незаполненных реквизитов с помощью встроенного языка 1С:


Выборка = Справочники.Организации.Выбрать();
Пока Выборка.Следующий() Цикл
    ОбъектОрг = Выборка.ПолучитьОбъект();
    
    Если Не ЗначениеЗаполнено(ОбъектОрг.ЮридическоеФизическоеЛицо) Тогда
        // Устанавливаем признак юридического лица по умолчанию
        ОбъектОрг.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
        
        // Для ИП устанавливается признак ФизическоеЛицо и заполняются ФИО:
        // ОбъектОрг.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
        // ОбъектОрг.Фамилия = "Иванов";
        // ОбъектОрг.Имя = "Иван";
        
        ОбъектОрг.ОбменДанными.Загрузка = Истина;
        ОбъектОрг.Записать();
    КонецЕсли;
КонецЦикла;

Способ 3. Корректная настройка правил в «Конвертации данных 2.0»

Чтобы ошибка не повторялась при последующих обменах, доработаем правила конвертации данных (КД 2.0):

  1. Создадим правило конвертации перечисления (ПКО): укажем источник ПеречислениеСсылка.ЮрФизЛицо и приемник ПеречислениеСсылка.ЮридическоеФизическоеЛицо. В таблице значений сопоставим: ЮридическоеЛицо → ЮридическоеЛицо, ФизическоеЛицо → ФизическоеЛицо.
  2. Настроим правило конвертации свойств (ПКС): в ПКО справочника Организации добавим строку сопоставления: источник ЮрФизЛицо → приемник ЮридическоеФизическоеЛицо, указав созданное ранее ПКО перечисления.
  3. Заполним строковые реквизиты ФИО для ИП: в обработчике ПослеЗагрузки ПКО справочника Организации добавим код для автоматического разбора ФИО, если переносится физическое лицо:

Если Объект.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
    Если Не ЗначениеЗаполнено(Объект.Фамилия) Тогда
        СтроковыеФункцииКлиентСервер.РазложитьФИО(Объект.Наименование, Объект.Фамилия, Объект.Имя, Объект.Отчество);
    КонецЕсли;
КонецЕсли;

Способ 4. Использование типовых механизмов переноса

Если перенос данных находится на начальном этапе, рассмотрим типовые варианты перехода без создания самодельных правил:

  1. Встроенный перенос данных в КА 1.1: в меню конфигурации КА 1.1 доступна специализированная обработка переноса данных в 1С:Бухгалтерию предприятия, которая содержит готовые и проверенные правила сопоставления всех обязательных реквизитов.
  2. Двухэтапный перенос через БП 2.0: данные из КА 1.1 выгружаются типовыми правилами в аналогичную по структуре метаданных «Бухгалтерию предприятия 2.0», после чего база штатно обновляется до версии БП 3.0. В процессе обновления встроенные обработчики БСП автоматически преобразуют и заполнят все необходимые служебные реквизиты.
← На главную