Объединение нескольких разрозненных информационных баз конфигурации «1С:Бухгалтерия предприятия» (БП) в одну общую базу, да еще и с переходом на версию КОРП — это масштабный проект, который требует от архитектора и программиста 1С не только глубоких технических знаний платформы, но и понимания тонкостей методологии бухгалтерского и налогового учета. Часто на первый взгляд задача кажется тривиальной: перенести справочники и документы с помощью типовых средств выгрузки-загрузки XML. Однако на практике специалисты сталкиваются с целым комплексом скрытых проблем, способных парализовать учет в объединенной базе.
В этой статье мы подробно проанализируем технические и методологические сложности, с которыми вам придется столкнуться, разберем причины их возникновения и наметим пути решения этих задач.
Перенос данных «по уникальным идентификаторам» (UUID) отлично работает только для тех объектов, которые изначально создавались в одной базе или имеют жестко заданные системные идентификаторы. Во всех остальных случаях нас ждет лавина дублирующих записей. Выясним, в каких справочниках это наиболее критично:
ИНН и КПП (для юрлиц). Однако помните, что договоры контрагентов привязаны к владельцу. Если вы объедините двух контрагентов в одного, вам придется корректно переподчинить их договоры, избежав при этом дублирования самих договоров с одинаковыми номерами и датами.Проанализируем пример сопоставления контрагентов при переносе данных с помощью простейшего кода. Нам потребуется написать алгоритм, который перед записью нового контрагента проверяет наличие элемента с таким же ИНН в базе-приемнике:
// Пример функции поиска существующего контрагента по ИНН/КПП
Функция НайтиКонтрагентаНаПриемнике(Знач ИНН, Знач КПП) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН = &ИНН
| И (&БезКПП Или Контрагенты.КПП = &КПП)";
Запрос.УстановитьПараметр("ИНН", ИНН);
Запрос.УстановитьПараметр("КПП", КПП);
Запрос.УстановитьПараметр("БезКПП", ПустаяСтрока(КПП));
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецЕсли;
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецФункции
Рассмотрим ситуацию, когда в исходных базах существуют документы с одинаковыми номерами в пределах одного периода (например, две «Реализации товаров и услуг» № 0000-000001 от 15.01.2023). При попытке записать их в одну базу платформа выдаст ошибку уникальности номеров.
Решение этой проблемы лежит в плоскости использования префиксов:
Организации в новой базе необходимо присвоить свой уникальный префикс (например, «МСК», «СПБ»).Если мы используем обработку выгрузки-загрузки данных с установленным свойством ОбменДанными.Загрузка = Истина, то платформа отключит контроль уникальности номеров при записи. Загрузка пройдет успешно, но мы получим базу с неуникальными номерами документов, что в дальнейшем сделает невозможным ручной ввод или перенумерацию. Поэтому перенумерацию объектов (или добавление префиксов) лучше делать непосредственно в процессе переноса или сразу после его завершения с помощью специализированных обработок.
Параметр ОбменДанными.Загрузка = Истина используется для ускорения процесса переноса данных и отключения стандартных платформенных проверок. Разберем по шагам, к каким катастрофическим последствиям может привести бездумное использование этого режима:
ПередЗаписью и ПриЗаписи. Это значит, что сопутствующие регистры (например, регистры сведений, хранящие состояние документов или дополнительные реквизиты) не будут заполнены автоматически.Учет НДС в программе «1С:Бухгалтерия» является одним из самых сложных блоков. Он завязан на большое количество специализированных регистров накопления: НДСПредъявленный, НДСРаздельныйУчет, НДСПокупки, НДСПродажи и др.
Если при переносе документов нарушится ссылочная связь между цепочкой документов (например: Поступление (акт, накладная, УПД) -> Счет-фактура полученный -> Формирование записей книги покупок), то программа не сможет корректно заполнить Книгу покупок и Книгу продаж. В результате регламентированная декларация по НДС за прошлые периоды просто не сойдется с отправленной ранее в налоговую.
Рекомендация: Не пытайтесь переносить детальные документы за прошлые закрытые периоды. Правильнее всего перенести только остатки по счетам учета (включая остатки по регистрам НДС) на начало текущего отчетного периода, а документы переносить только за текущий незакрытый период.
Даже если кадровый учет и расчет зарплаты велся непосредственно в БП, при объединении баз возникают следующие проблемы:
ИНН и СНИЛС. В противном случае расчет НДФЛ и страховых взносов пойдет неверно, а отчетность 6-НДФЛ и ЕФС-1 не пройдет проверки контролирующих органов.Версия КОРП используется для ведения учета по обособленным подразделениям (филиалам). Выясним особенности реструктуризации данных при переходе:
Подразделения, а проводки по счетам расчетов (например, 60, 62, 76) придется перепривязать к новым аналитикам учета по подразделениям. Также потребуется настроить сквозной учет по направлениям деятельности и распределение налога на прибыль по бюджетам субъектов РФ.При использовании выгрузки/загрузки данных XML часто происходит дублирование предопределенных элементов конфигурации (например, конкретных ставок НДС, видов субконто, статей затрат по умолчанию). Стандартный поиск и удаление дублей не всегда справляется с этой задачей, так как ссылки на предопределенные элементы жестко прописаны в программном коде конфигурации.
Если в базе появится два предопределенных элемента «Основное подразделение» или «Без НДС» (один — родной для базы-приемника, второй — загруженный из источника), это приведет к труднодиагностируемым ошибкам при автоматическом проведении документов или закрытии месяца.
Объединение баз приводит к резкому росту объема единой информационной базы. Проанализируем технические последствия:
Для того чтобы минимизировать риски и провести слияние баз максимально безболезненно, рекомендуем придерживаться следующего пошагового алгоритма: