Переход с редакции 2.0 на редакцию 3.0 конфигурации «Бухгалтерия предприятия» — это не просто очередное обновление, а полноценная конвертация базы данных. В процессе этого перехода Платформа «1С:Предприятие» выполняет реструктуризацию таблиц, перенос данных и сопоставление метаданных, включая План счетов Хозрасчетный. На этом этапе нередко возникают критические ошибки, блокирующие процесс обновления.
В данной статье мы подробно разберем, почему возникает ошибка «превышение максимального количества видов субконто» на вспомогательных забалансовых счетах (в частности, на счете РВ.2), как правильно подготовить базу данных к обновлению, а также что делать, если в результате некорректных действий в системе образовались скрытые дубли предопределенных счетов (например, счета УСН.22).
Рассмотрим ситуацию: при обновлении базы данных и принятии изменений в Конфигураторе система прерывает процесс с сообщением о превышении максимального количества видов субконто у счетов группы РВ (например, счета РВ.2 «НДС в наличной нераспределенной розничной выручке»). При этом в Конфигураторе исходной базы БП 2.0 на данном счете может отображаться стандартное количество субконто (обычно два: Склады и Ставки НДС), а лимит плана счетов установлен в значение 3. Выясним, почему это происходит.
Основная причина кроется в различии между метаданными конфигурации и фактическим состоянием данных в режиме «1С:Предприятие». Проанализируем механизмы, которые приводят к этой ошибке:
10, 41 и др.). При некорректном переносе эти автоматические настройки могут попытаться прописаться на непредназначенные для этого счета.Проанализируем по шагам, как правильно решить эту проблему до запуска процесса обновления:
Запустите исходную базу БП 2.0 в режиме «1С:Предприятие». Откройте План счетов и найдите группу счетов РВ (РВ.1, РВ.2, РВ.3, РВ.4). Обратите внимание на пиктограммы рядом с субконто. Предопределенные субконто отмечены специальным желтым кружком. Если вы видите субконто без этого значка — это аналитики, добавленные пользователями. Запишите, какие это аналитики (возможно, на них есть данные, которые нужно сохранить или перенести), и удалите их из этих счетов перед обновлением.
Перед повторным запуском обновления обязательно проведите полное тестирование базы в Конфигураторе. Для этого выберите меню Администрирование — Тестирование и исправление. Установите следующие настройки:
В правилах обработки битых ссылок выберите пункт «Очищать ссылки», чтобы удалить некорректно привязанные несуществующие виды субконто, которые могут вызывать сбои при конвертации метаданных.
---
Рассмотрим сценарий, когда администратор пошел по обходному пути: снял конфигурацию с поддержки, вручную увеличил свойство плана счетов Хозрасчетный «Максимальное количество субконто» до 8, успешно применил обновление до БП 3.0, удалил лишние дублирующиеся субконто, но столкнулся со следующей проблемой при попытке вернуть конфигурацию поставщика на место. Попытка загрузить типовой файл конфигурации (CF-файл) без сравнения и объединения приводит к ошибке дублирования предопределенного счета УСН.22 («Расчеты с покупателями в валюте за товары комитента»). При этом в пользовательском режиме данный счет может не отображаться или отображаться некорректно.
Выясним причину этой ошибки. При грубом снятии конфигурации с поддержки и последующем неконтролируемом изменении плана счетов нарушается связь по уникальным идентификаторам (UUID/GUID) между предопределенными элементами в конфигурации поставщика и реальными предопределенными записями в таблицах базы данных. При попытке полной загрузки конфигурации платформа считывает метаданные из файла поставщика, видит там предопределенный счет УСН.22 с конкретным GUID и пытается его создать. В то же время в базе данных уже существует аналогичный счет, но с другим внутренним идентификатором. Возникает коллизия уникальности имен и кодов счетов.
Разберем детальный алгоритм, как исправить эту ошибку, объединить дублирующиеся счета и корректно вернуть базу данных на стандартную поддержку разработчика.
Проанализируем, как правильно вернуть исходные свойства метаданных без вызова ошибок уникальности:
Хозрасчетный. Разверните его свойства. Нам необходимо вернуть свойство «Максимальное количество субконто» к исходному значению поставщика (равному 3). Поставьте галочку только напротив этого свойства.F7.Если после объединения в пользовательском режиме все равно наблюдается задвоение счета УСН.22, Платформа не позволит вам просто так удалить предопределенный элемент, поскольку на него наложена защита. Нам потребуется временно снять признак предопределенности у «неправильного» дубликата. Сделаем это с помощью внешней обработки или написав простой программный код в консоли кода:
// Пример программного кода для очистки признака предопределенности счета УСН.22
УстановитьПривилегированныйРежим(Истина);
СсылкаНаСчет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("УСН.22");
Если Не СсылкаНаСчет.Пустая() Тогда
// Получаем объект счета для редактирования
ОбъектСчета = СсылкаНаСчет.ПолучитьОбъект();
// Очищаем имя предопределенных данных, переводя счет в статус "пользовательского"
ОбъектСчета.ИмяПредопределенныхДанных = "";
ОбъектСчета.Записать();
Сообщить("Счет УСН.22 успешно отвязан от метаданных конфигурации.");
КонецЕсли;
После того как дублирующий счет перестал быть предопределенным (стал обычной пользовательской записью), выполните следующие действия:
План счетов «Хозрасчетный».УСН.22.Чтобы закрепить результат и восстановить правильные связи между конфигурацией и базой данных на уровне платформы, рекомендуется выполнить принудительное обновление предопределенных данных. Рассмотрим два способа реализации этой задачи.
Способ 1. Запуск через параметры командной строки
Закройте все сеансы работы с базой данных. Запустите командную строку и выполните команду запуска Конфигуратора со специальным ключом инициализации данных:
1cv8.exe DESIGNER /F "ПутьКВашейБазе" /UpdateDBSchema /UpdateCfg -UpdatePredefinedData
Этот ключ заставит платформу сопоставить существующие в базе данных предопределенные элементы с описанием в метаданных и устранит возможные нестыковки UUID.
Способ 2. Программный вызов обновления
Вы можете выполнить принудительное обновление предопределенных данных непосредственно из встроенного языка 1С, запустив следующий фрагмент кода в консоли или при начале работы системы:
// Установка режима автоматического обновления предопределенных данных для плана счетов
ПланыСчетов.Хозрасчетный.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.Авто);
Сообщить("Параметр обновления предопределенных данных успешно инициализирован.");
---
Мы подробно разобрали причины возникновения ошибок со счетами РВ.2 и УСН.22 при переходе с редакции 2.0 на 3.0. Чтобы избежать подобных трудностей при последующих обновлениях нетиповых баз данных, рекомендуем придерживаться следующих правил: