Переход с конфигурации «1С:Бухгалтерия предприятия» версии ПРОФ на продвинутую версию КОРП — это стандартная задача, с которой сталкиваются развивающиеся компании при необходимости ведения учета по обособленным подразделениям или организации сложного корпоративного учета. Несмотря на то что фирма «1С» предоставляет штатные файлы обновления для безболезненного перехода, на практике технические специалисты часто сталкиваются с непредвиденными ошибками на этапе обновления базы данных (применения изменений в Конфигураторе).
В этой статье мы подробно проанализируем ситуацию, когда процесс обновления прерывается критическим сбоем СУБД, связанным с регистром сведений СостоянияОбменовДанными, разберем причины этой проблемы и по шагам рассмотрим самые эффективные способы её решения.
При переходе с версии ПРОФ на КОРП в Конфигураторе применяется файл конфигурации (.cf) или файл обновления (.cfu) версии КОРП. На первом этапе (обновление метаданных) процесс проходит штатно. Однако при попытке обновить базу данных (нажатием клавиши F7 или синей бочки) система выдает ошибку неуникальности записей или несоответствия типов в регистре сведений СостоянияОбменовДанными (или СостояниеОбменовДанных в некоторых релизах).
Почему это происходит? Проанализируем архитектурные различия версий. В версии КОРП используются специфические планы обмена, структура которых адаптирована под многофилиальный учет. Во время реструктуризации СУБД пытается перестроить таблицы существующих регистров под новые требования метаданных КОРП. Из-за изменения состава измерений или смены типов ключевых полей ранее уникальные записи «схлопываются» по ключевым полям на уровне базы данных. СУБД расценивает это как попытку записи дубликатов в уникальный индекс и блокирует транзакцию, отменяя все обновление.
Поскольку данные в регистре СостоянияОбменовДанными носят служебный характер (там фиксируются даты и статусы последних синхронизаций), их полная очистка перед обновлением является абсолютно безопасной процедурой. После перехода на версию КОРП параметры синхронизации в любом случае рекомендуется настроить заново.
Самый простой и быстрый способ решить проблему без написания кода — удалить записи регистра непосредственно в режиме «1С:Предприятие» перед запуском процесса реструктуризации. Разберем этот процесс по шагам:
СостоянияОбменовДанными и откройте его двойным щелчком мыши.После этого можно смело закрывать сеанс «1С:Предприятие», переходить в Конфигуратор и запускать процедуру обновления конфигурации базы данных. Ошибка больше не появится.
Иногда объем записей в служебных регистрах настолько велик, что интерактивное удаление через форму списка вызывает зависание интерфейса. В этом случае рассмотрим альтернативный вариант очистки с помощью встроенного инструмента:
УниверсальныйОбменДаннымиВФорматеXML.СостоянияОбменовДанными.Данный инструмент производит быструю очистку таблиц на уровне платформы, минуя длительную прорисовку элементов интерфейса, что гарантирует мгновенный результат.
Если вам необходимо автоматизировать этот процесс или вы предпочитаете использовать внешние обработки, мы можем прибегнуть к программному удалению записей через объект РегистрСведенийНаборЗаписей. Посмотрим на пример кода, который решает эту задачу:
// Создаем пустой набор записей регистра сведений
НаборЗаписей = РегистрыСведений.СостоянияОбменовДанными.СоздатьНаборЗаписей();
// Записываем пустой набор с флагом замещения (Истина).
// Это приведет к полному удалению всех существующих записей в СУБД.
Попытка
НаборЗаписей.Записать(Истина);
Сообщить("Очистка регистра СостоянияОбменовДанными выполнена успешно!");
Исключение
ВызватьИсключение "Не удалось очистить регистр: " + ОписаниеОшибки();
КонецПопытки;
Этот код можно внедрить в простую внешнюю обработку и запустить в режиме «1С:Предприятие» перед началом обновления.
Чтобы миграция с ПРОФ на КОРП прошла максимально гладко, рассмотрим ключевые технические нюансы, о которых часто забывают ИТ-специалисты:
Переходить на версию КОРП можно только в рамках абсолютно одинаковых номеров релизов. Например, если ваша текущая база ПРОФ имеет версию 3.0.143.32, то файл перехода (конфигурация КОРП) должен иметь точно такой же номер релиза — 3.0.143.32. Попытка обновиться на более высокий или низкий релиз КОРП напрямую приведет к критическому сбою структуры данных. Сначала обновите ПРОФ-версию до актуального релиза, и только затем применяйте аналогичный релиз перехода.
При реструктуризации больших баз данных на серверах MS SQL, PostgreSQL или IBM DB2 часто возникают блокировки транзакций или переполнение логов транзакций СУБД. Разберем проверенный лайфхак, который используют опытные администраторы 1С:
.dt)..dt.Этот подход экономит время, страхует от зависаний процессов на сервере приложений 1С и исключает ошибки нехватки оперативной памяти СУБД.
Существует распространенное заблуждение, что для работы конфигурации БП КОРП требуется обязательная покупка серверных и клиентских лицензий платформы уровня КОРП. На самом деле это не так. Сама конфигурация КОРП будет стабильно функционировать на стандартных лицензиях уровня ПРОФ. Лицензии уровня КОРП требуются только в том случае, если вам необходим расширенный функционал администрирования кластера серверов 1С (например, гибкое распределение нагрузки, профили безопасности) или если в базе одновременно работают более 500 пользователей.
После успешного обновления конфигурация КОРП не активирует все новые возможности автоматически. Перейдите в меню «Главное» — «Настройки» — «Функциональность» и включите флажок «Обособленные подразделения», а также выберите «Полную функциональность». Будьте готовы к двум главным сложностям:
В конфигурации КОРП системное измерение Подразделение становится балансовым сквозным разрезом учета практически для всех счетов (включая счета учета активов 01, 02, затратные счета и т.д.). В документах прошлых периодов, которые были созданы еще в ПРОФ-версии, это поле, естественно, окажется пустым.
Если вам потребуется перепровести документы прошлых закрытых периодов или запустить процедуру «Закрытие месяца» заново, система начнет выдавать ошибки о незаполненном подразделении. Решение: Крайне не рекомендуется перепроводить старые закрытые периоды. Если это неизбежно, используйте встроенную обработку «Групповое изменение реквизитов», чтобы точечно заполнить пустые реквизиты подразделений в документах и проводках по счетам, где зависли остатки.
Полная функциональность КОРП более жестко контролирует равенство БУ и НУ по различным регистрам. Если ваша база в прошлом переживала переходы с УСН на ОСНО, ручные корректировки или исправления регистров, после перехода на КОРП все скрытые ошибки могут «вылезти» в оборотно-сальдовой ведомости. Будьте готовы провести ручной аудит и корректировку остатков по регистрам налогового учета прошлых лет.