Как исправить ошибку «Реквизит недоступен для группы» при обмене из УТ 10.3 в БП 3.0?

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

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

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

Анализ технической причины ошибки

Давайте проанализируем текст ошибки, который выдает система. Основная проблема локализована в объекте ВидыОплатОрганизаций (справочник «Виды оплат организаций»). Ошибка происходит в обработчике события ПослеЗагрузкиОбъекта.

Система пытается выполнить следующий код:


Объект.СчетУчетаРасчетов = Справочники.ВидыОплатОрганизаций.СчетУчетаРасчетовПоУмолчанию(Объект.ТипОплаты);

Разберем ситуацию: в справочнике «Виды оплат» (в УТ 10.3) или «Виды оплат организаций» (в БП 3.0) могут существовать не только элементы, но и группы (папки). Согласно архитектуре платформы 1С:Предприятие, у групп справочника отсутствуют обычные реквизиты, предназначенные для хранения данных (в данном случае СчетУчетаРасчетов). Когда правила обмена пытаются программно записать значение в реквизит объекта, который является группой, платформа генерирует исключение Реквизит недоступен для группы.

Это происходит потому, что в типовых правилах конвертации (ПКО) для данного справочника отсутствует проверка на то, является ли текущий загружаемый объект элементом или папкой.

Способ 1: Проверка и корректировка данных в УТ 10.3

Проанализируем самый простой и быстрый способ решения, который не требует изменения программного кода или правил обмена. Чаще всего ошибка возникает из-за того, что в УТ 10.3 в справочнике «Виды оплат» создана иерархия (папки), которая пытается мигрировать в БП 3.0.

Выполним следующие шаги:

  1. Откроем в конфигурации Управление торговлей 10.3 справочник Виды оплат.
  2. Проверим наличие групп (папок). Если в справочнике созданы папки (например, «Безналичные», «Эквайринг»), это и есть причина сбоя.
  3. Перенесем все элементы из групп в корень справочника и удалим пустые группы.
  4. Если удаление групп невозможно по организационным причинам, нам потребуется исключить их из миграции (см. Способ 3).
  5. После удаления групп в УТ необходимо заново запустить обмен. Система больше не будет пытаться передать объект-группу, и обработчик ПослеЗагрузкиОбъекта отработает корректно только для элементов.

Способ 2: Исправление правил в «Конвертации данных»

Если вы являетесь разработчиком и имеете доступ к конфигурации «Конвертация данных 2.1», мы рекомендуем внести исправление непосредственно в логику правил. Это позволит избежать подобных ошибок в будущем, даже если пользователи снова создадут группы в справочнике.

Разберем алгоритм исправления ПКО:

  1. Загрузим текущие правила обмена (из макета конфигурации или внешнего файла) в базу «Конвертация данных».
  2. Найдем правило конвертации объектов (ПКО) для справочника ВидыОплатОрганизаций.
  3. Перейдем на закладку «Обработчики событий» и найдем событие После загрузки.
  4. Вставим в самое начало обработчика проверку на группу. Код должен выглядеть следующим образом:

Если Объект.ЭтоГруппа Тогда
    Возврат;
КонецЕсли;

// Далее идет типовой код заполнения реквизитов
Объект.СчетУчетаРасчетов = Справочники.ВидыОплатОрганизаций.СчетУчетаРасчетовПоУмолчанию(Объект.ТипОплаты);

Проанализируем, что мы сделали: добавив условие Если Объект.ЭтоГруппа Тогда Возврат;, мы принудительно прерываем выполнение кода для папок. В результате попытка обращения к реквизиту СчетУчетаРасчетов просто не произойдет, и ошибка исчезнет.

Способ 3: Отмена регистрации изменений для групп

Рассмотрим ситуацию, когда мы не можем менять правила и не хотим удалять группы из справочника в УТ 10.3. В этом случае мы можем воспользоваться инструментом регистрации изменений.

Выполним следующие действия:

  1. В УТ 10.3 перейдем в меню «Сервис» — «Обмен данными» — «Все настройки обмена данными».
  2. Найдем нашу настройку обмена с БП 3.0 и откроем «Монитор обмена данными».
  3. Перейдем к детальной настройке регистрации изменений (кнопка с изображением «карандаша» или «лупы» на узле обмена).
  4. Найдем в списке объектов справочник Виды оплат.
  5. Нажмем правую кнопку мыши и выберем пункт «Показать зарегистрированные изменения».
  6. В открывшемся списке найдем объекты, у которых в колонке иерархии стоит значок папки.
  7. Выделим эти строки и нажмем «Отменить регистрацию» (удалить из списка выгрузки).

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

Дополнительные рекомендации при переходе с БП 2.0 на БП 3.0

Как указано в описании проблемы, пользователь обновил «Бухгалтерию» с версии 2.0 до 3.0. Это критический момент для настройки обменов. Рассмотрим, на что стоит обратить внимание:

1. Обновление правил в самой настройке. Даже если в конфигурации УТ 10.3 зашиты новые правила, в старой настройке обмена (созданной еще для связи с БП 2.0) могут «зависнуть» старые алгоритмы. Мы рекомендуем полностью удалить старую настройку обмена и создать её «с нуля», используя встроенный помощник в БП 3.0, а затем выгрузить файл настроек для УТ 10.3.

2. Соответствие версий (ПРОФ/КОРП). Обратите внимание на лог ошибки: Конфигурация приемник: Бухгалтерия предприятия КОРП. Если ваша целевая база — версия ПРОФ, а правила используются от КОРП, могут возникать несоответствия в вызовах методов, таких как СчетУчетаРасчетовПоУмолчанию. Убедитесь, что версии конфигураций в правилах соответствуют реальным.

3. Предопределенные данные. Иногда в БП 3.0 уже существуют предопределенные элементы справочника Виды оплат организаций. Если в УТ 10.3 создан элемент или группа с таким же кодом, может возникнуть конфликт сопоставления. Проверьте справочник в обеих базах на наличие дублей по коду или наименованию.

Резюме

Ошибка Реквизит недоступен для группы — это классическое следствие отсутствия проверки на иерархию в коде правил обмена. Для быстрого исправления удалите группы в справочнике «Виды оплат» в УТ 10.3. Для системного решения — внесите правки в ПКО через «Конвертацию данных», добавив условие Если Объект.ЭтоГруппа Тогда Возврат; КонецЕсли; в обработчик загрузки.

← На главную