При объединении нескольких баз «1С:Бухгалтерия предприятия 3.0» (например, при превращении самостоятельной организации в филиал) специалисты часто сталкиваются с неприятным эффектом: после переноса данных план счетов «раздваивается». Появляются копии предопределенных счетов (например, два счета 01.01), при этом один из них пустой, а на втором висят обороты. Разберем подробно, почему это происходит и какими способами можно выполнить перенос корректно, сохранив целостность движений документа ОперацияБух.
Рассмотрим причину возникновения дублей. Стандартная универсальная обработка «Выгрузка и загрузка данных XML» работает по внутренним идентификаторам объектов — GUID (Globally Unique Identifier). Если две базы создавались независимо (а не путем копирования одной и той же информационной базы), то GUID предопределенных элементов, таких как счета плана счетов, ставки НДС или статьи затрат, в них будут разными.
Проанализируем ситуацию: для системы 1С счет 01.01 с одним GUID и счет 01.01 с другим GUID — это два абсолютно разных объекта, даже если их коды и наименования полностью совпадают. При загрузке данных обработка ищет объект по GUID, не находит его в базе-приемнике и создает новый элемент. Так как удалять предопределенные элементы система запрещает, мы получаем «задвоение» плана счетов.
Самый надежный и «чистый» способ, который рекомендуют опытные разработчики — это использование встроенных планов обмена. Рассмотрим по шагам, как это реализовать:
Почему это работает? Типовые правила синхронизации, заложенные в конфигурацию разработчиками 1С, настроены на сопоставление ключевых справочников и планов счетов не по GUID, а по полям поиска (Код, Наименование, ИНН/КПП). Это позволяет системе автоматически «узнать» счет 01.01 в базе-приемнике и привязать к нему загружаемые проводки.
Если по каким-то причинам настроить синхронизацию невозможно, воспользуемся механизмом, предназначенным для облачных решений (фреша). Разберем этот алгоритм:
В базе-источнике перейдем в Администрирование — Сервис — Выгрузить данные для перехода в сервис. Система сформирует файл в формате ZIP, содержащий данные в формате JSON. Этот механизм отличается от простого XML тем, что он гораздо эффективнее обрабатывает ссылки на предопределенные данные. При загрузке в базу-приемник через «Загрузить данные из сервиса» система выполнит интеллектуальное сопоставление объектов конфигурации.
Если задача требует выборочного переноса только конкретных документов ОперацияБух с движениями, нам поможет «Конвертация данных». Проанализируем типичную ошибку: отсутствие выгрузки метаданных для 8.3. На самом деле, в составе дистрибутива КД 2.1 всегда идет обработка MD83Exp.epf, предназначенная именно для управляемых форм.
Чтобы избежать дублей в Плане счетов, при настройке Правил Конвертации Объектов (ПКО) выполним следующие действия:
Хозрасчетный (План счетов) на закладке «Настройки поиска» снимем флаг «Искать объект по внутреннему идентификатору».Код.Для переноса проводок документа ОперацияБух нужно помнить, что сами данные лежат не в документе, а в регистре бухгалтерии Хозрасчетный. В правилах конвертации документа (ПВД) обязательно укажем необходимость выгрузки движений регистров.
Если перенос уже выполнен и план счетов «поплыл», не спешите удалять базу и начинать сначала. Проанализируем ситуацию: у нас есть два одинаковых счета, на одном из которых (новом) есть проводки, а старый (предопределенный) пуст.
Воспользуемся встроенным инструментом «Поиск и замена дублей» (раздел Администрирование — Обслуживание — Корректировка данных):
Система автоматически найдет все ссылки на дубль (в проводках, в субконто, в настройках) и перепишет их на правильный предопределенный счет, после чего удалит лишний элемент (если на него не останется ссылок в конфигурации).
При работе с программным переносом движений важно понимать структуру этого объекта. В отличие от типовых документов (например, «Реализация»), ОперацияБух не имеет автоматического проведения. Все записи в регистр бухгалтерии записываются напрямую в наборы записей. Рассмотрим пример кода, который может потребоваться при написании собственных обработок переноса, чтобы обеспечить корректную запись движений:
// Пример записи движений для документа ОперацияБух
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);
// Добавляем проводку
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ДатаОперации;
НоваяЗапись.Организация = ОрганизацияПриемник;
НоваяЗапись.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("01.01");
НоваяЗапись.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("000");
НоваяЗапись.Сумма = 1000;
НаборЗаписей.Записать();
Подведем итог. Для качественного переноса остатков из БП 3.0 в БП 3.0 без дублей лучше всего использовать штатную синхронизацию данных. Если же вы используете внешние обработки выгрузки, всегда отключайте поиск по GUID для планов счетов и переходите на сопоставление по кодам. Это сэкономит время на последующую чистку базы от дублей и обеспечит корректность бухгалтерского учета в объединенной базе.