Как перенести данные и проводки из документа 1С 8.3 в документ «Операция» в 1С 7.7?

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

При переносе данных между платформой 1С 8.3 и устаревшей конфигурацией 1С 7.7 специалисты часто сталкиваются с нетипичным поведением объектов. Одной из популярных задач является выгрузка данных из документа 1С 8.3 в документ Операция системы 1С 7.7. Проблема заключается в том, что в конфигураторе «Конвертация данных 2.1» (КД 2.1) для объекта-приемника Документ.Операция доступно только ограниченное число реквизитов шапки (Дата, Номер, Содержание, Сумма), а стандартные табличные части проводок отсутствуют. Разберем особенности структуры 1С 7.7 и рассмотрим основные способы выполнения такого переноса.

Выясним причину особенностей структуры 1С 7.7

В платформе 1С 7.7 объект Операция не является обычным документом с привычными табличными частями. Бухгалтерские проводки и аналитические разрезы (субконто) хранятся в отдельном связанном объекте Операция. Из-за этой специфики конфигурация «Конвертация данных 2.1» не может отобразить проводки как стандартную табличную часть документа 8.х. Чтобы перенести не только шапку, но и проводки с аналитикой (Контрагенты, Договоры и т. д.), необходимо использовать специализированные подходы.

Способ 1. Перенос через правила обмена (Конвертация данных 2.1)

Для реализации обмена через XML-файлы с помощью Конвертации данных 2.1 разберем по шагам алгоритм настройки правил:

  1. Формирование коллекции проводок на стороне 1С 8.3: В обработчиках событий правил выгрузки данных (например, ПередВыгрузкой или ПриВыгрузке) выполняется выборка записей регистра бухгалтерии, относящихся к переносимому документу. Эти данные упаковываются в узлы структуры или таблицы значений.
  2. Передача проводок через узлы XML: В КД 2.1 выгрузка записей операции организуется через узлы данных. Поступающая информация передается внешней обработке загрузки v77imp.ert, которая умеет распознавать служебную XML-структуру и создавать записи оперативного или бухгалтерского учета в 7.7.
  3. Сопоставление аналитических разрезов (субконто): В 1С 7.7 аналитика привязана к конкретным порядковым номерам на счетах (Субконто 1, Субконто 2, Субконто 3). В правилах переноса необходимо гарантировать передачу не только самих справочников, но и корректное соответствие номеров субконто типам данных счета.
  4. Использование обработчиков приемника: Если стандартное автоматическое сопоставление субконто отрабатывает некорректно, логику заполнения аналитики прописывают в обработчике ПослеЗагрузки на встроенном языке 1С 7.7.

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

Способ 2. Прямой перенос данных через COM-соединение (OLE)

Если требуется перенести конкретный вид документов или выполнить однократную интеграцию, проще всего использовать прямое программное подключение из 1С 8.3 к базе 1С 7.7 через COM-объект.

Проанализируем программный код, реализующий данный подход:


// Создание COM-подключения к базе 1С 7.7
База77 = Новый COMОбъект("V77.Application");
Запуск = База77.Initialize(База77.RMTrade, "/D""C:\Bases\Base77"" /N""Администратор""", "NO_SPLASH_SHOW");

Если Запуск Тогда
    // Создаем объект Операция в 1С 7.7
    Операция77 = База77.СоздатьОбъект("Операция");
    
    // Создаем новую операцию
    Операция77.Новая();
    Операция77.ДатаДок = ДатаДокумента83;
    Операция77.Содержание = "Перенос из 1С 8.3, док. № " + НомерДокумента83;
    
    // Добавляем проводку
    Операция77.НоваяПроводка();
    Операция77.СчетДт = База77.ОсновнойПланСчетов.НайтиПоКоду("60.1");
    Операция77.СчетКт = База77.ОсновнойПланСчетов.НайтиПоКоду("51");
    Операция77.Сумма = СуммаДокумента83;
    
    // Назначаем субконто по порядковым номерам счетов
    // НазначитьСубконто(НомерСубконто, ЗначениеОбъекта77)
    Операция77.НазначитьСубконто(1, НайденныйКонтрагент77);
    Операция77.НазначитьСубконто(2, НайденныйДоговор77);
    
    // Сохраняем операцию в базе приемника
    Операция77.Записать();
КонецЕсли;

Ограничения и технические нюансы

При использовании любого из методов обратите внимание на следующие технические ограничения:

Разрядность COM-сервера: COM-компонент 1С 7.7 является строго 32-разрядным. Если ваш сервер 1С 8.3 работает в 64-разрядном режиме, вызов метода Новый COMОбъект("V77.Application") непосредственно на сервере вызовет ошибку. Выполняйте код подключения на стороне 32-разрядного клиента или настраивайте изолированный запуск через COM+ (DllHost).

Порядок видов субконто: В 1С 7.7 нельзя назначить субконто типа, который не зафиксирован в плане счетов для конкретного счета Дебета или Кредита. Перед вызовом метода НазначитьСубконто() необходимо проверять настройку видов субконто для выбранного счета.

← На главную