Как правильно настроить перенос субконто регистра бухгалтерии в Конвертации данных?

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

Перенос движений регистра бухгалтерии — одна из типовых задач при интеграции или переносе данных между конфигурациями 1С. Однако начинающие разработчики часто сталкиваются с трудностями при выгрузке аналитики по дебету и кредиту (СубконтоДт и СубконтоКт). Выясним причину возникающих ошибок и разберем по шагам доступные способы переноса субконто.

Штатный перенос субконто по умолчанию

В большинстве случаев платформа и конфигурация 1С:Конвертация данных обрабатывают коллекцию субконто в автоматическом режиме. Если планы счетов и виды субконто в источнике и приемнике идентичны по структуре, дополнительный программный код писать не требуется.

Проанализируем обязательные условия для корректной работы штатного механизма:

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

Тонкая настройка через события ПередВыгрузкой и ПриВыгрузке

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

  1. ИмяПКОВидСубконто — имя правила конвертации для типа субконто (элемента плана видов характеристик).
  2. ВидСубконто — конкретный вид субконто, для которого передается значение.
  3. Субконто — само выгружаемое значение аналитики.

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

Перенос через таблицу значений при различиях в планах счетов

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

Разберем вариант выгрузки через ручное формирование таблицы значений в обработчике ПередВыгрузкой свойства СубконтоДт (или СубконтоКт):


// Отключаем стандартную обработку выгрузки свойства
Отказ = Истина;

// Создаем и заполняем структуру субконто для приемника
ТаблицаСубконто = Новый ТаблицаЗначений;
ТаблицаСубконто.Колонки.Добавить("ВидСубконто");
ТаблицаСубконто.Колонки.Добавить("Значение");

СтрокаСубконто = ТаблицаСубконто.Добавить();
СтрокаСубконто.ВидСубконто = Источник.СубконтоДт.Владелец; // или конкретный вид ПВХ
СтрокаСубконто.Значение = Источник.СубконтоДт.Контрагент;

Значение = ТаблицаСубконто;

Программная установка в обработчике ПослеЗагрузки

Еще один распространенный и надежный способ — отказаться от прямой выгрузки реквизитов СубконтоДт и СубконтоКт в ПКС и выполнить заполнение субконто на стороне приемника в обработчике ПослеЗагрузки набора записей или строки движения.

Посмотрим на пример установки субконто в строке набора записей:


// СтрокаЗаписи — текущая строка регистра бухгалтерии
// ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные — коллекция видов аналитики приемника
ВидСубконтоКонтрагенты = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты;
СтрокаЗаписи.СубконтоДт.Вставить(ВидСубконтоКонтрагенты, ОбъектыКоллекции.Контрагент);

Метод Вставить объекта коллекции субконто проверяет, доступен ли указанный вид субконто для текущего счета проводки, и безопасно помещает значение в нужный слот аналитики.

Отказ от переноса движений в пользу перепроведения документов

Рассмотрим альтернативный архитектурный подход: если задача заключается в переносе самих документов-регистраторов, часто нет необходимости переносить записи регистра бухгалтерии напрямую. Гораздо надежнее исключить регистр бухгалтерии из правил выгрузки, а в целевой информационной базе включить признак проведения перенесенных документов. При вызове метода Записать(РежимЗаписиДокумента.Проведение) документ сам сформирует корректные проводки и заполнит субконто по алгоритмам конфигурации-приемника.

← На главную