Как при загрузке в регистр сведений программно установить значение реквизита, если его нет в стандартном поиске?

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

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

Решение проблемы через обработчик ПоляПоиска

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

Разберем по шагам, как реализовать этот механизм:

  1. Откройте нужную настройку ПКО в Конвертации данных 2.1.
  2. Перейдите в обработчик Поля поиска.
  3. Напишите алгоритм, который самостоятельно находит объект и возвращает нужную ссылку.

Посмотрим на пример кода, который позволяет выполнить поиск по реквизитам и передать значение Партнера, установив флаг прекращения стандартного поиска:


// Пример программного поиска и установки значения
Контр = Справочники.Контрагенты.НайтиПоРеквизиту("НаименованиеПолное", СвойстваПоиска.Получить("НаименованиеПолное"));

Если НЕ Контр.Пустая() Тогда
    // Получаем значение Партнера у найденного контрагента
    СсылкаНаОбъект = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контр, "Партнер");
КонецЕсли;

// Указываем системе, что стандартный поиск выполнять не нужно
ПрекратитьПоиск = Истина;

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

Альтернативный подход: передача данных через структуру

Если вы используете метод ВыгрузитьРегистр() в обработчике После выгрузки на стороне источника, у вас есть возможность передать расширенную структуру данных. Это позволяет избежать сложных поисков на стороне приемника.

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

Советы по отладке и оптимизации

Проанализируем некоторые важные аспекты работы с кодом:

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

← На главную