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