Переход с отраслевого решения, такого как «1С:Бухгалтерия строительной организации» (БСО), на типовую «1С:Бухгалтерия предприятия» (БП) — это сложная техническая задача. Несмотря на то, что БСО построена на базе БП, наличие специфических объектов, модулей защиты (СЛК) и измененных механизмов учета НДФЛ может вызвать серьезные ошибки при попытке конвертации базы. Проанализируем основные сценарии перехода и методы устранения возникающих ошибок.
Рассмотрим два основных пути решения задачи:
Чаще всего пользователи выбирают первый вариант из-за его кажущейся простоты, но именно здесь возникают критические ошибки при обновлении конфигурации базы данных. Для более безопасного сценария выгрузки через XML можно использовать правила обмена для переноса документов с отбором по организациям.
Разберем типичную ситуацию: конфигурация БСО снята с поддержки, в нее загружен файл конфигурации (.cf) от аналогичного релиза БП. При попытке выполнить команду «Обновить конфигурацию базы данных» система выдает ошибку: «Записи регистра сведений стали не уникальными: РазмервычетовНДФЛВторичный».
Выясним причину этой коллизии. Данный регистр является вспомогательным. В БСО логика формирования записей в этом регистре может отличаться от типовой БП. При замене структуры метаданных система пытается переиндексировать данные, и из-за различий в измерениях или алгоритмах заполнения возникают дубли по ключевым полям. Проблема осложняется тем, что в пользовательском интерфейсе регистр может отображаться как пустой, хотя на уровне таблиц базы данных в нем содержатся записи.
Если стандартное удаление записей через интерфейс невозможно или не дает результата, необходимо прибегнуть к программному методу. Рассмотрим пошаговый алгоритм очистки регистра РазмерВычетовНДФЛВторичный.
Проанализируем ситуацию: при попытке очистки может возникнуть ошибка «Редактирование общих данных запрещено». Это указывает на включенное разделение данных (механизм работы в облаке/модели сервиса). Для решения нам потребуется создать внешнюю обработку, которая будет игнорировать проверку прав и режим разделения.
Используем следующий код для полной очистки записей регистра:
НаборЗаписей = РегистрыСведений.РазмерВычетовНДФЛВторичный.СоздатьНаборЗаписей();
// Устанавливаем признак загрузки, чтобы обойти проверки в модуле набора записей
НаборЗаписей.ОбменДанными.Загрузка = Истина;
// Записываем пустой набор, что фактически удаляет все записи из таблицы
НаборЗаписей.Записать();
Важно помнить: если база работает в режиме разделения, перед выполнением этого кода необходимо убедиться, что сеанс запущен с параметрами, позволяющими редактировать общие данные, либо использовать расширение для установки ОбменДанными.Загрузка = Истина непосредственно в момент вызова обновления.
Если очистка «на живую» не помогает, воспользуемся проверенным методом через промежуточное хранилище:
РазмерВычетовНДФЛВторичный (если они там есть и важны) с помощью обработки «Выгрузка и загрузка данных XML».РазмерВычетовНДФЛ. Если этого не произошло, можно загрузить ранее выгруженные данные обратно.Посмотрим на ситуацию со стороны бухгалтерского учета. В конфигурации БСО часто присутствуют специфические счета, например 19.КВ (НДС по объектам капитального строительства). В типовой «Бухгалтерии предприятия» такого счета нет.
При переходе крайне важно выполнить следующие действия:
19.КВ на 19.08).Рассмотрим краткий чек-лист для успешного перехода:
chdbfl.exe.ОбменДанными.Загрузка = Истина.Таким образом, переход с БСО на БП требует не только технических навыков программирования на платформе 1С, но и понимания структуры метаданных обеих конфигураций. Ошибка с уникальностью регистра — это лишь следствие конфликта данных, которое успешно решается путем принудительной очистки вспомогательных таблиц перед обновлением.