Как перенести данные и документы «Операция, введенная вручную» из одной базы БП 3.0 в другую без дублирования плана счетов?

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

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

Почему возникают дубли при использовании «Выгрузки и загрузки XML»?

Рассмотрим причину возникновения дублей. Стандартная универсальная обработка «Выгрузка и загрузка данных XML» работает по внутренним идентификаторам объектов — GUID (Globally Unique Identifier). Если две базы создавались независимо (а не путем копирования одной и той же информационной базы), то GUID предопределенных элементов, таких как счета плана счетов, ставки НДС или статьи затрат, в них будут разными.

Проанализируем ситуацию: для системы 1С счет 01.01 с одним GUID и счет 01.01 с другим GUID — это два абсолютно разных объекта, даже если их коды и наименования полностью совпадают. При загрузке данных обработка ищет объект по GUID, не находит его в базе-приемнике и создает новый элемент. Так как удалять предопределенные элементы система запрещает, мы получаем «задвоение» плана счетов.

Решение №1: Использование типового механизма синхронизации данных

Самый надежный и «чистый» способ, который рекомендуют опытные разработчики — это использование встроенных планов обмена. Рассмотрим по шагам, как это реализовать:

  1. В базе-источнике перейдем в раздел Администрирование — Синхронизация данных.
  2. Создадим новую настройку синхронизации с базой «Бухгалтерия предприятия, редакция 3».
  3. Выберем вариант подключения (через прямой доступ к базе или через сетевой каталог/FTP).
  4. Важный момент: в настройках правил отправки данных укажем фильтр по конкретной организации, которую мы переносим.
  5. Запустим процесс выгрузки.

Почему это работает? Типовые правила синхронизации, заложенные в конфигурацию разработчиками 1С, настроены на сопоставление ключевых справочников и планов счетов не по GUID, а по полям поиска (Код, Наименование, ИНН/КПП). Это позволяет системе автоматически «узнать» счет 01.01 в базе-приемнике и привязать к нему загружаемые проводки.

Решение №2: Переход через механизм «Выгрузка данных для перехода в сервис»

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

В базе-источнике перейдем в Администрирование — Сервис — Выгрузить данные для перехода в сервис. Система сформирует файл в формате ZIP, содержащий данные в формате JSON. Этот механизм отличается от простого XML тем, что он гораздо эффективнее обрабатывает ссылки на предопределенные данные. При загрузке в базу-приемник через «Загрузить данные из сервиса» система выполнит интеллектуальное сопоставление объектов конфигурации.

Решение №3: Тонкая настройка в «Конвертации данных 2.1» (КД 2)

Если задача требует выборочного переноса только конкретных документов ОперацияБух с движениями, нам поможет «Конвертация данных». Проанализируем типичную ошибку: отсутствие выгрузки метаданных для 8.3. На самом деле, в составе дистрибутива КД 2.1 всегда идет обработка MD83Exp.epf, предназначенная именно для управляемых форм.

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

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

Для переноса проводок документа ОперацияБух нужно помнить, что сами данные лежат не в документе, а в регистре бухгалтерии Хозрасчетный. В правилах конвертации документа (ПВД) обязательно укажем необходимость выгрузки движений регистров.

Решение №4: Что делать, если дубли уже созданы?

Если перенос уже выполнен и план счетов «поплыл», не спешите удалять базу и начинать сначала. Проанализируем ситуацию: у нас есть два одинаковых счета, на одном из которых (новом) есть проводки, а старый (предопределенный) пуст.

Воспользуемся встроенным инструментом «Поиск и замена дублей» (раздел Администрирование — Обслуживание — Корректировка данных):

  1. Выберем область поиска: План счетов — Хозрасчетный.
  2. Укажем критерий сравнения — Код.
  3. В результатах поиска система покажет пары счетов. Выберем в качестве «Оригинала» тот счет, который помечен пиктограммой предопределенного (желтый шарик), а в качестве дублей — загруженные элементы.
  4. Нажмем «Заменить все».

Система автоматически найдет все ссылки на дубль (в проводках, в субконто, в настройках) и перепишет их на правильный предопределенный счет, после чего удалит лишний элемент (если на него не останется ссылок в конфигурации).

Технический нюанс переноса документов «ОперацияБух»

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


// Пример записи движений для документа ОперацияБух
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);

// Добавляем проводку
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ДатаОперации;
НоваяЗапись.Организация = ОрганизацияПриемник;
НоваяЗапись.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("01.01");
НоваяЗапись.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("000");
НоваяЗапись.Сумма = 1000;

НаборЗаписей.Записать();

Подведем итог. Для качественного переноса остатков из БП 3.0 в БП 3.0 без дублей лучше всего использовать штатную синхронизацию данных. Если же вы используете внешние обработки выгрузки, всегда отключайте поиск по GUID для планов счетов и переходите на сопоставление по кодам. Это сэкономит время на последующую чистку базы от дублей и обеспечит корректность бухгалтерского учета в объединенной базе.

← На главную