В практике ведения учета в программных продуктах «1С:Предприятие» регулярно возникают ситуации, когда требуется перенести остатки не по всей организации в целом, а лишь по одному конкретному счету или определенной группе счетов. Это может быть связано с исправлением ошибок прошлых периодов, поэтапным переходом на новую информационную базу, выделением отдельного направления бизнеса или сверкой взаиморасчетов. Перелопачивать всю базу заново вручную — трудозатратно и неэффективно.
В данной статье мы подробно разберем пять проверенных и надежных методов переноса остатков по отдельному счету, проанализируем их достоинства и недостатки, а также разберем критически важный методологический нюанс, о котором часто забывают даже опытные специалисты.
Это один из самых доступных и наглядных способов, который отлично подходит для бухгалтеров и пользователей без глубоких навыков программирования. Суть метода заключается в промежуточном сохранении данных в электронную таблицу и последующей загрузке в новую базу.
Рассмотрим пошагово, как реализовать этот вариант:
.xls или .xlsx).ВводНачальныхОстатков по нужному разделу учета.Важное улучшение для современных версий 1С: Главный минус классической загрузки из Excel — это риск появления дублей справочников (например, если контрагент в новой базе будет создан заново по наименованию, а не по уникальному идентификатору). Чтобы избежать этого, в современных версиях загрузчика обязательно настроим поля поиска. Для субконто «Контрагенты» укажем поиск по ИНН и КПП, а для «Номенклатуры» — по артикулу или штрихкоду. Также включим флаг «Создавать новые объекты при ненахождении», чтобы система автоматически создала недостающие элементы в справочниках.
Если база-источник и база-приемник имеют абсолютно одинаковую конфигурацию и релиз (например, две типовые базы «1С:Бухгалтерия 3.0» одного релиза), то использование Excel нецелесообразно. Гораздо эффективнее применить стандартную обработку «Выгрузка и загрузка данных XML» (VygruzkaZagruzkaDannyhXML.epf).
Проанализируем этот сценарий работы:
ВводНачальныхОстатков (или документ ОперацияБух) и заполним его остатками по необходимому счету. Для этого можно воспользоваться стандартными помощниками или автозаполнением.ВводНачальныхОстатков) и установим на него отбор по конкретной ссылке или дате.Основное преимущество этого метода заключается в том, что все связанные объекты справочников (контрагенты, договоры, номенклатура) переносятся с сохранением их уникальных идентификаторов (GUID/UUID). Это полностью исключает дублирование данных в базе-приемнике при повторных переносах.
Этот способ основан на использовании механизмов платформы по свертке данных. Он полезен, когда нужно «вырезать» остатки из работающей крупной базы и перенести их в чистую.
Выясним последовательность действий:
ОперацияБух с содержанием «Ввод остатков по регистрам...».Если базы имеют разные структуры метаданных или требуется гибкая кастомизация логики переноса без создания промежуточных файлов, мы можем написать простую внешнюю обработку, работающую через COM-соединение (COMConnector).
Разберем пример программного кода, который подключается к базе-источнику, считывает остатки по счету 62.01 и создает документ ввода остатков в базе-приемнике:
// Установим параметры подключения к базе-источнику
ПараметрыПодключения = "Srvr=""MyServer"";Ref=""SourceDatabase"";Usr=""Admin"";Pwd=""12345"";";
Connector = Новый COMОбъект("V83.COMConnector");
Попытка
БазаИсточник = Connector.Connect(ПараметрыПодключения);
Исключение
Сообщить("Ошибка подключения к базе-источнику: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
// Формируем запрос к виртуальной таблице остатков в источнике
Запрос = БазаИсточник.NewObject("Запрос");
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК КонтрагентСсылка,
| ХозрасчетныйОстатки.Субконто2 КАК ДоговорСсылка,
| ХозрасчетныйОстатки.СуммаОстатокДт КАК СуммаОстатка
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , ) КАК ХозрасчетныйОстатки";
Запрос.УстановитьПараметр("Период", '20231231235959');
Запрос.УстановитьПараметр("Счет", БазаИсточник.ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01"));
Выборка = Запрос.Выполнить().Выбрать();
// Создаем документ в базе-приемнике
НовыйДок = Документы.ВводНачальныхОстатков.СоздатьДокумент();
НовыйДок.Дата = '20231231235959';
НовыйДок.РазделУчета = Перечисления.РазделыУчетаНовыхОстатков.РасчетыСПокупателями;
Пока Выборка.Следующий() Цикл
// Здесь должна быть логика поиска или создания контрагента по ИНН
// И заполнение табличной части документа ввода остатков
КонецЦикла;
НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ ввода остатков успешно создан и проведен.");
Преимущество такого подхода заключается в абсолютной гибкости: мы можем "на лету" сопоставлять номенклатуру, трансформировать счета учета и проводить любые проверки корректности данных еще до момента их записи в базу-приемник.
В современных конфигурациях, работающих на управляемых формах (1С:ERP, Комплексная автоматизация, Управление нашей фирмой, Бухгалтерия предприятия 3.0), реализован стандарт обмена данными EnterpriseData. Если между вашими базами уже настроена синхронизация, вы можете точечно зарегистрировать нужные данные:
ВводНачальныхОстатков или ОперацияБух, содержащий проводки по интересующему вас счету.Выполняя перенос остатков по какому-то конкретному счету, мы обязаны помнить о базовом правиле бухгалтерского учета — принципе двойной записи. В системе 1С ввод остатков технически осуществляется с использованием вспомогательного клирингового счета 000. Любая дебетовая или кредитовая запись по балансовому счету всегда корреспондирует со счетом 000.
Проанализируем последствия выборочного переноса:
62.01, в базе-приемнике сформируется проводка: Дт 62.01 - Кт 000.000 образуется одностороннее кредитовое сальдо.000 будет висеть остаток.Решение: Если перенос остальных счетов в данную базу не планируется вообще (например, вы создаете базу-сателлит только для ведения расчетов с покупателями), это «зависшее» сальдо на счете 000 необходимо закрыть. Делается это ручной операцией корректировки в корреспонденции со счетами капитала или нераспределенной прибыли (например, счет 84), в зависимости от целей создания информационной базы и согласованной методологии учета.