Как исправить ошибку превышения количества субконто на счете РВ.2 и дублирование счета УСН.22 при обновлении БП 2.0 на 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Переход с редакции 2.0 на редакцию 3.0 конфигурации «Бухгалтерия предприятия» — это не просто очередное обновление, а полноценная конвертация базы данных. В процессе этого перехода Платформа «1С:Предприятие» выполняет реструктуризацию таблиц, перенос данных и сопоставление метаданных, включая План счетов Хозрасчетный. На этом этапе нередко возникают критические ошибки, блокирующие процесс обновления.

В данной статье мы подробно разберем, почему возникает ошибка «превышение максимального количества видов субконто» на вспомогательных забалансовых счетах (в частности, на счете РВ.2), как правильно подготовить базу данных к обновлению, а также что делать, если в результате некорректных действий в системе образовались скрытые дубли предопределенных счетов (например, счета УСН.22).

Часть 1. Анализ и решение ошибки превышения количества видов субконто на счетах группы РВ

Рассмотрим ситуацию: при обновлении базы данных и принятии изменений в Конфигураторе система прерывает процесс с сообщением о превышении максимального количества видов субконто у счетов группы РВ (например, счета РВ.2 «НДС в наличной нераспределенной розничной выручке»). При этом в Конфигураторе исходной базы БП 2.0 на данном счете может отображаться стандартное количество субконто (обычно два: Склады и Ставки НДС), а лимит плана счетов установлен в значение 3. Выясним, почему это происходит.

Основная причина кроется в различии между метаданными конфигурации и фактическим состоянием данных в режиме «1С:Предприятие». Проанализируем механизмы, которые приводят к этой ошибке:

  1. Пользовательские настройки аналитики: В процессе ведения учета пользователи (или сторонние обработки/настройки учетной политики) могли вручную добавить дополнительные субконто к счетам в режиме «1С:Предприятие». В конфигураторе этого изменения не видно, но в самой базе данных запись уже существует. При конвертации на БП 3.0 система пытается записать новые предопределенные субконто поверх существующих пользовательских, что приводит к выходу за лимит в 3 субконто.
  2. Непоследовательное обновление (пропуск транзитных релизов): Переход с БП 2.0 на БП 3.0 должен выполняться строго по рекомендованным фирмами-разработчиками шагам. Если попытаться обновить устаревший релиз БП 2.0 сразу на современный релиз БП 3.0, минуя промежуточные дистрибутивы конвертации, обработчики обновления не смогут корректно сопоставить и перенести старые и новые аналитики.
  3. Изменение параметров учета: Переключение признаков ведения учета (например, партионного учета или учета по складам в разрезе сумм и количеств) в режиме «Предприятие» автоматически добавляет субконто на счета учета номенклатуры (счета 10, 41 и др.). При некорректном переносе эти автоматические настройки могут попытаться прописаться на непредназначенные для этого счета.

Проанализируем по шагам, как правильно решить эту проблему до запуска процесса обновления:

Шаг 1. Проверка Плана счетов в режиме «1С:Предприятие»

Запустите исходную базу БП 2.0 в режиме «1С:Предприятие». Откройте План счетов и найдите группу счетов РВ (РВ.1, РВ.2, РВ.3, РВ.4). Обратите внимание на пиктограммы рядом с субконто. Предопределенные субконто отмечены специальным желтым кружком. Если вы видите субконто без этого значка — это аналитики, добавленные пользователями. Запишите, какие это аналитики (возможно, на них есть данные, которые нужно сохранить или перенести), и удалите их из этих счетов перед обновлением.

Шаг 2. Тестирование и исправление базы данных

Перед повторным запуском обновления обязательно проведите полное тестирование базы в Конфигураторе. Для этого выберите меню Администрирование — Тестирование и исправление. Установите следующие настройки:

В правилах обработки битых ссылок выберите пункт «Очищать ссылки», чтобы удалить некорректно привязанные несуществующие виды субконто, которые могут вызывать сбои при конвертации метаданных.

---

Часть 2. Что делать, если база уже снята с поддержки и возникли дубли предопределенных счетов?

Рассмотрим сценарий, когда администратор пошел по обходному пути: снял конфигурацию с поддержки, вручную увеличил свойство плана счетов Хозрасчетный «Максимальное количество субконто» до 8, успешно применил обновление до БП 3.0, удалил лишние дублирующиеся субконто, но столкнулся со следующей проблемой при попытке вернуть конфигурацию поставщика на место. Попытка загрузить типовой файл конфигурации (CF-файл) без сравнения и объединения приводит к ошибке дублирования предопределенного счета УСН.22 («Расчеты с покупателями в валюте за товары комитента»). При этом в пользовательском режиме данный счет может не отображаться или отображаться некорректно.

Выясним причину этой ошибки. При грубом снятии конфигурации с поддержки и последующем неконтролируемом изменении плана счетов нарушается связь по уникальным идентификаторам (UUID/GUID) между предопределенными элементами в конфигурации поставщика и реальными предопределенными записями в таблицах базы данных. При попытке полной загрузки конфигурации платформа считывает метаданные из файла поставщика, видит там предопределенный счет УСН.22 с конкретным GUID и пытается его создать. В то же время в базе данных уже существует аналогичный счет, но с другим внутренним идентификатором. Возникает коллизия уникальности имен и кодов счетов.

Разберем детальный алгоритм, как исправить эту ошибку, объединить дублирующиеся счета и корректно вернуть базу данных на стандартную поддержку разработчика.

Шаг А. Восстановление свойств Плана счетов и возврат на поддержку

Проанализируем, как правильно вернуть исходные свойства метаданных без вызова ошибок уникальности:

  1. Откройте Конфигуратор вашей обновленной базы БП 3.0.
  2. Вместо функции «Загрузить конфигурацию из файла» используйте команду меню Конфигурация — Сравнить, объединить с конфигурацией из файла.... Выберите чистый дистрибутив (CF-файл) точно такого же релиза БП 3.0, до которого вы обновились.
  3. В открывшемся дереве сравнения снимите галочки со всех объектов.
  4. Найдите в списке План счетов Хозрасчетный. Разверните его свойства. Нам необходимо вернуть свойство «Максимальное количество субконто» к исходному значению поставщика (равному 3). Поставьте галочку только напротив этого свойства.
  5. Нажмите кнопку «Выполнить». При запросе настройки правил поддержки укажите для измененных объектов признак «Редактируется с сохранением поддержки» или полностью поставьте «На замок» (Не редактируется).
  6. Обновите конфигурацию базы данных, нажав клавишу F7.

Шаг Б. Программная «отвязка» дублирующего счета и его удаление

Если после объединения в пользовательском режиме все равно наблюдается задвоение счета УСН.22, Платформа не позволит вам просто так удалить предопределенный элемент, поскольку на него наложена защита. Нам потребуется временно снять признак предопределенности у «неправильного» дубликата. Сделаем это с помощью внешней обработки или написав простой программный код в консоли кода:


// Пример программного кода для очистки признака предопределенности счета УСН.22
УстановитьПривилегированныйРежим(Истина);

СсылкаНаСчет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("УСН.22");
Если Не СсылкаНаСчет.Пустая() Тогда
    // Получаем объект счета для редактирования
    ОбъектСчета = СсылкаНаСчет.ПолучитьОбъект();
    
    // Очищаем имя предопределенных данных, переводя счет в статус "пользовательского"
    ОбъектСчета.ИмяПредопределенныхДанных = "";
    ОбъектСчета.Записать();
    
    Сообщить("Счет УСН.22 успешно отвязан от метаданных конфигурации.");
КонецЕсли;

После того как дублирующий счет перестал быть предопределенным (стал обычной пользовательской записью), выполните следующие действия:

  1. Перейдите в режим «1С:Предприятие» под правами Администратора.
  2. Откройте встроенную типовую обработку «Поиск и удаление дублей» (она находится в разделе Администрирование — Обслуживание — Корректировка данных).
  3. В поле «Искать в:» выберите объект План счетов «Хозрасчетный».
  4. В качестве критерия отбора укажите Код счета, равный УСН.22.
  5. Запустите поиск. Система найдет две записи. Выберите в качестве Оригинала тот счет, который сохранил признак предопределенного (отмечен специальной точкой), а «отвязанный» счет укажите как Дубль.
  6. Нажмите кнопку «Объединить». Программа автоматически заменит все ссылки на неправильный счет во всех проводках, субконто и документах на правильный предопределенный счет, после чего безвозвратно удалит дублирующий элемент.

Шаг В. Инициализация предопределенных данных на уровне платформы

Чтобы закрепить результат и восстановить правильные связи между конфигурацией и базой данных на уровне платформы, рекомендуется выполнить принудительное обновление предопределенных данных. Рассмотрим два способа реализации этой задачи.

Способ 1. Запуск через параметры командной строки

Закройте все сеансы работы с базой данных. Запустите командную строку и выполните команду запуска Конфигуратора со специальным ключом инициализации данных:

1cv8.exe DESIGNER /F "ПутьКВашейБазе" /UpdateDBSchema /UpdateCfg -UpdatePredefinedData

Этот ключ заставит платформу сопоставить существующие в базе данных предопределенные элементы с описанием в метаданных и устранит возможные нестыковки UUID.

Способ 2. Программный вызов обновления

Вы можете выполнить принудительное обновление предопределенных данных непосредственно из встроенного языка 1С, запустив следующий фрагмент кода в консоли или при начале работы системы:


// Установка режима автоматического обновления предопределенных данных для плана счетов
ПланыСчетов.Хозрасчетный.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.Авто);
Сообщить("Параметр обновления предопределенных данных успешно инициализирован.");

---

Резюме и рекомендации по предотвращению подобных проблем

Мы подробно разобрали причины возникновения ошибок со счетами РВ.2 и УСН.22 при переходе с редакции 2.0 на 3.0. Чтобы избежать подобных трудностей при последующих обновлениях нетиповых баз данных, рекомендуем придерживаться следующих правил:

← На главную