При переходе с платформы 1С 7.7 на 1С 8.3 или при необходимости синхронизировать данные между этими системами, одной из самых частых задач становится перенос банковских выписок. Основная сложность заключается в том, что в «семерке» выписка часто представляет собой многострочный документ, в то время как в 1С 8.3 каждое поступление или списание — это отдельный объект. В этой статье мы подробно разберем, как реализовать экспорт данных, какие штатные средства для этого существуют и как правильно подготовить файл для загрузки в современную конфигурацию.
Рассмотрим самый доступный метод, который не требует программирования. Большинство типовых конфигураций 1С 7.7 (например, «Бухгалтерский учет» или «Торговля и Склад») содержат встроенную обработку для обмена с банками. Несмотря на название, её можно использовать для формирования текстового файла, который легко «поймет» 1С 8.3.
Проанализируем шаги, которые необходимо выполнить в 1С 7.7:
1C_to_KL.txt.В результате мы получим текстовый файл со структурой ключей и значений. Выясним причину, почему это удобно: 1С 8.3 имеет стандартную обработку «Загрузка выписки банка», которая настроена именно на этот формат. При загрузке система автоматически создаст документы Поступление на расчетный счет и Списание с расчетного счета, пытаясь сопоставить контрагентов по ИНН и расчетным счетам.
Если нам нужно не просто перекинуть «текст», а перенести документы с сохранением всей аналитики (субконто, статьи движения денежных средств), разберем использование штатной обработки перехода. Фирма 1С поставляет вместе с конфигурациями 8.3 специальные правила для переноса данных из 7.7.
Посмотрим на алгоритм действий:
tmplts) найдите папку с правилами обмена для 7.7. Там должен находиться файл V77Exp.ert.ExtForms базы 1С 7.7 и откроем через «Файл» — «Открыть».ACC77_8x.xml).Проанализируем ситуацию: этот метод гораздо надежнее, так как он учитывает типы данных. Если в 7.7 документ был проведен, обработка постарается перенести его в 8.3 также в проведенном состоянии, заполнив счета учета в соответствии с настроенными правилами сопоставления.
Бывают ситуации, когда типовые средства не подходят (например, сильно кастомизированная конфигурация 7.7). В этом случае мы можем написать небольшую обработку самостоятельно. Выясним, как программно перебрать строки выписки и записать их в файл.
Рассмотрим пример кода на языке 1С 7.7 для выгрузки данных в упрощенный формат CSV:
// Создание объекта для записи в файл
Текст = СоздатьОбъект("Текст");
Док = СоздатьОбъект("Документ.Выписка");
Док.ВыбратьДокументы(ДатаНачала, ДатаКонца);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Проведен() = 0 Тогда
Продолжить;
КонецЕсли;
// Перебор строк многострочной части выписки
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
СтрокаВыгрузки = Строка(Док.ДатаДок) + ";" +
Строка(Док.НомерДок) + ";" +
Строка(Док.Субконто1.Наименование) + ";" +
Строка(Док.Сумма);
Текст.ДобавитьСтроку(СтрокаВыгрузки);
КонецЦикла;
КонецЦикла;
Текст.Записать(ПутьКФайлу);
Предупреждение("Экспорт завершен успешно!");
В данном примере мы используем объект СоздатьОбъект("Текст") для формирования файла. Метод ВыбратьДокументы позволяет нам ограничить выборку нужным периодом, а цикл ВыбратьСтроки внутри документа Выписка позволяет добраться до каждой финансовой операции. Обратите внимание на использование Строка(Док.Субконто1.Наименование) — это позволяет выгрузить текстовое представление контрагента для последующего поиска в новой базе.
Если вы хотите избежать промежуточных файлов, мы можем использовать технологию COM. В этом случае инициатором обмена выступает 1С 8.3, которая «подключается» к 1С 7.7 как к внешнему источнику данных.
Разберем, как это выглядит со стороны кода 1С 8.3:
// Код в 1С 8.3
ПутьКБазе77 = "C:\Bases\Salary77\";
Пользователь77 = "Админ";
Пароль77 = "123";
V7 = Новый COMОбъект("V77.Application");
Открыта = V7.Initialize(V7.RMTrade, "/D" + ПутьКБазе77 + " /N" + Пользователь77 + " /P" + Пароль77, "NO_SPLASH_SHOW");
Если Открыта Тогда
Выписка77 = V7.CreateObject("Документ.Выписка");
Выписка77.SelectDocuments(НачалоПериода, КонецПериода);
Пока Выписка77.GetDocument() = 1 Цикл
// Здесь мы читаем данные из 7.7 и создаем объекты в 8.3
НовоеПоступление = Документы.ПоступлениеНаРасчетныйСчет.СоздатьДокумент();
НовоеПоступление.Дата = Выписка77.DocDate;
// ... заполнение остальных реквизитов
НовоеПоступление.Записать();
КонецЦикла;
КонецЕсли;
Важно помнить, что при использовании V77.Application на компьютере должна быть установлена и лицензирована версия 1С 7.7, а разрядность платформы 1С 8 (32 или 64 бита) должна соответствовать установленным COM-компонентам.
После того как экспорт в файл и последующая загрузка в 1С 8.3 завершены, необходимо выполнить проверку. Проанализируем основные точки контроля:
Поступление на расчетный счет статьи проставились корректно, иначе отчет «Отчет о движении денежных средств» будет неверным.Таким образом, мы рассмотрели различные варианты выгрузки выписок: от самых простых пользовательских методов до сложных программных решений. Выбор конкретного пути зависит от объема данных и ваших навыков программирования в среде 1С.