Как настроить перенос данных из 1С:Комплексная автоматизация 2.4 в 1С:Бухгалтерия предприятия 3.0 с помощью Конвертации данных 2.1?

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

Перенос данных между такими сложными конфигурациями, как 1С:Комплексная автоматизация 2.4 (КА 2.4) и 1С:Бухгалтерия предприятия 3.0 (БП 3.0), часто требует индивидуальной настройки через Конвертацию данных 2.1. Хотя типовые механизмы синхронизации через универсальный формат (EnterpriseData) покрывают большинство задач, разработчикам нередко приходится сталкиваться с необходимостью доработки правил для переноса специфических реквизитов или кастомной логики. Рассмотрим основные этапы, проблемы и программные решения этой задачи.

Подготовка инструментов и решение платформенных ошибок

Прежде всего, необходимо убедиться, что используемая обработка УниверсальныйОбменДаннымиXML.epf соответствует версии платформы. Начиная с версии 1С:Предприятия 8.3.10.х, у регистров сведений было изменено право «Удаление». Это часто приводит к ошибкам при загрузке правил обмена. Если вы столкнулись с подобной проблемой в старых версиях КД, проанализируем код модуля обработки и найдем блок проверки прав.

В коде обработки может потребоваться закомментировать проверку права на удаление для регистров, так как структура метаданных теперь обрабатывается иначе. Рассмотрим пример исправления:


// В модуле обработки УниверсальныйОбменДаннымиXML
// Находим блок проверки права доступа "Удаление"
// Если Не ПравоДоступа("Удаление", МетаданныеОбъекта) Тогда
//     ... (закомментировать проверку для регистров сведений)
// КонецЕсли;

Настройка ПКО для документов и определение Вида операции

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

Выясним причину ошибки «Индекс находится за границами массива». Она часто возникает, если документ перенесен, но его ВидОперации не определен или определен некорректно для конфигурации-приемника. Посмотрим на пример кода в обработчике ПКС:


// Обработчик Перед выгрузкой для свойства ВидОперации
Если Источник.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
    Значение = "Товары"; // Значение для БП 3.0
ИначеЕсли Источник.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда    
    Значение = "ПередачаНаКомиссию";
КонецЕсли;

Важно: Присваиваемое значение Значение должно соответствовать имени (идентификатору) значения перечисления в базе-приемнике в виде строки.

Перенос договоров и решение проблемы с Соглашениями

В КА 2.4 учет может вестись в разрезе Соглашений, тогда как в БП 3.0 обязательным реквизитом является ДоговорКонтрагента. Рассмотрим ситуацию, когда в источнике договор не заполнен. В этом случае нам необходимо в обработчике ПКС Договор прописать логику поиска основного договора или создания нового.

Проанализируем алгоритм сопоставления. Если ПКО для договоров уже настроено, необходимо убедиться, что передаются поля поиска: Организация, Владелец (Контрагент) и Наименование. Если договор не найден, можно использовать следующий код в обработчике После загрузки объекта документа:


// В обработчике После загрузки документа в БП 3.0
Если Не ЗначениеЗаполнено(Объект.ДоговорКонтрагента) Тогда
    Объект.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор", Ложь, , Объект.Контрагент);
КонецЕсли;

Счета-фактуры: преобразование Табличной части в Реквизит

Сложность переноса документа СчетФактураПолученный из КА 2.4 в БП 3.0 заключается в том, что в источнике основания хранятся в табличной части ДокументыОснования, а в старых версиях приемника это мог быть одиночный реквизит (хотя в актуальных версиях БП 3.0 также используется ТЧ). Разберем, как извлечь первое основание и правильно назначить правило конвертации.

Посмотрим на пример кода в ПКС ДокументОснование (или в обработчике ТЧ):


Если Источник.ДокументыОснования.Количество() > 0 Тогда
    // Получаем ссылку на первый документ основания
    ДокОснование = Источник.ДокументыОснования[0].ДокументОснование;
    Значение = ДокОснование;
    
    // Указываем конкретное имя правила конвертации (ПКО), если их несколько для данного типа
    Если ТипЗнч(ДокОснование) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
        ИмяПравила = "ПоступлениеТоваровУслуг";
    КонецЕсли;
КонецЕсли;

Заполнение служебных реквизитов: Счета учета и Валюты

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

Выясним, как установить значение СчетКасса равным "50.01". В обработчике Перед выгрузкой для соответствующего ПКС пишем:


// Вариант 1: Через строку (если в ПКО приемника настроен поиск по коду)
Значение = "50.01";

// Вариант 2: Поиск объекта в приемнике (обработчик После загрузки)
Если Объект.ВалютаДокумента.Пустая() Тогда
    Объект.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("643");
КонецЕсли;

Проведение документов при загрузке

Хотя проводить документы непосредственно в момент загрузки через XML не рекомендуется (это замедляет процесс и может вызвать блокировки), иногда это необходимо для проверки корректности данных. Разберем, как это сделать в обработчике После загрузки.

Проанализируем ситуацию: нам нужно провести документ только в том случае, если он был проведен в базе-источнике. Для этого предварительно передадим статус проведения через ПараметрыОбъекта.


// В ПКО документа в обработчике После загрузки
Попытка
    Если Объект.Проведен Тогда
        Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
    КонецЕсли;
Исключение
    Инфо = ИнформацияОбОшибке();
    Сообщить("Документ " + Объект + " не проведен: " + ПодробноеПредставлениеОшибки(Инфо));
КонецПопытки;

Краткие итоги и рекомендации

  1. Всегда проверяйте соответствие Видов операций. Это корень 90% ошибок открытия форм в БП 3.0.
  2. Для реквизита Номер в счетах-фактурах полученных в БП 3.0 используйте НомерВходящегоДокумента, так как системный номер 1С и номер поставщика — это разные поля.
  3. Если в КА 2.4 используются соглашения без договоров, обязательно создавайте «заглушку» в виде основного договора в БП 3.0, иначе проводки не сформируются.
  4. Используйте ИмяПравила в ПКС, чтобы явно указать Конвертации данных, по какому алгоритму преобразовывать сложные ссылки (например, ПриобретениеТоваровУслуг -> ПоступлениеТоваровУслуг).

Соблюдение этих правил и использование приведенных примеров кода позволит вам создать надежный механизм миграции данных между учетными системами.

← На главную