Как перенести субконто плана счетов вместе с табличной частью в 1С:Конвертация данных?

Программист IT и автоматизация бизнеса
← На главную

При настройке обмена между базами 1С с помощью конфигурации «Конвертация данных 2» часто возникает задача переноса планов счетов. Одной из главных сложностей является перенос стандартной табличной части ВидыСубконто, так как конвертация не всегда автоматически определяет эту связь. Разберем по шагам, какие существуют подходы для корректного переноса счетов вместе с их субконто.

Вариант 1: Использование сериализации в строку (через параметры)

Этот метод часто применяется как быстрое обходное решение, если стандартные механизмы не срабатывают. Суть заключается в том, чтобы превратить таблицу значений с видами субконто в строку на стороне источника, передать её через параметр, а на стороне приемника восстановить.

  1. В источнике: Создаем строковой параметр для нашего правила конвертации.
  2. В обработчике «Перед выгрузкой» программно формируем таблицу значений (ТЗ), куда помещаем нужные данные (например, имя предопределенного значения и наименование субконто).
  3. Затем преобразуем эту ТЗ во внутреннюю строку с помощью функции ЗначениеВСтрокуВнутр и присваиваем системной переменной Значение:
    
    ТаблицаСубконто = Новый ТаблицаЗначений;
    // ... заполнение таблицы ...
    Значение = ЗначениеВСтрокуВнутр(ТаблицаСубконто);
    
  4. В приемнике: В обработчике «После загрузки» плана счетов читаем переданный параметр, восстанавливаем из него таблицу значений с помощью ЗначениеИзСтрокиВнутр и программно добавляем строки в табличную часть загруженного объекта:
    
    ТЗ = ЗначениеИзСтрокиВнутр(ПараметрыОбъекта["ИмяНашегоПараметра"]);
    // Цикл по ТЗ и добавление строк в Объект.ВидыСубконто
    

Хотя этот метод рабочий, он не является оптимальным с точки зрения архитектуры и производительности обмена.

Вариант 2: Использование стандартных механизмов КД 2 (ПКО для ПВХ)

Табличная часть ВидыСубконто неразрывно связана с Планом Видов Характеристик (ПВХ). Для более правильного переноса проанализируем архитектурно верный подход.

  1. Создаем отдельное Правило Конвертации Объектов (ПКО) для соответствующего ПВХ (например, «Виды Субконто Хозрасчетные»).
  2. Если субконто являются предопределенными в обеих базах, настраиваем в этом ПКО поиск по Имени предопределенных данных. Если они добавляются пользователями, то по Наименованию или Коду.
  3. При выгрузке видов субконто используем специальную системную переменную ИмяПКОВидСубконто. Ей необходимо явно присвоить имя созданного ПКО, чтобы система понимала, по какому правилу конвертировать элементы.

Вариант 3: Передача коллекции через параметры (без преобразования в строку)

Рассмотрим улучшенную версию первого варианта. Вместо сериализации в строку мы можем передавать саму коллекцию.

  1. На стороне источника в обработчике «Перед выгрузкой» формируем структуру или таблицу значений, содержащую виды субконто и их признаки (например, ТолькоОбороты).
  2. Передаем сформированную коллекцию напрямую в системную переменную Значение. Это крайне важно для корректного формирования XML.
  3. На стороне приемника в обработчике «После загрузки» обращаемся к коллекции через ПараметрыОбъекта["ИмяПараметра"] и перебираем её в цикле, заполняя табличную часть ВидыСубконто.

Постобработка и очистка данных

Часто возникает ситуация, когда в базе-источнике субконто больше, чем в базе-приемнике. В таком случае рекомендуется выгружать всю аналитику «как есть», а логику фильтрации реализовывать в базе-приемнике.

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

Используя эти методы, вы сможете настроить надежный и прозрачный перенос планов счетов со всей необходимой аналитикой.

← На главную