Как исправить задвоение предопределенных счетов в 1С:Бухгалтерия 3.0?

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

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

Почему возникают дубли предопределенных счетов?

Начиная с версии платформы 1С 8.3, архитектура связи между объектами конфигуратора и записями в пользовательском режиме была изменена. Теперь связь осуществляется не жестко по внутренним идентификаторам, а через специальный строковый реквизит ИмяПредопределенныхДанных. Платформа допускает ситуацию, когда этот реквизит заполнен у нескольких элементов пользовательского режима одновременно. Проанализируем основные причины, приводящие к этому:

  1. Некорректное использование обработок типа «Универсальный обмен данными в формате XML».
  2. Масштабный перенос данных (например, при апгрейде с редакции БП 2.0 на БП 3.0).
  3. Обмены в Распределенных информационных базах (РИБ). Если данные загружаются в базу с параметром ОбменДанными.Загрузка = Истина без правильной синхронизации уникальных идентификаторов (GUID), система просто записывает новый элемент, оставляя ему то же имя предопределенных данных.

В некоторых случаях за дублирование ошибочно принимают структурные изменения типового Плана счетов самой фирмой «1С». Например, когда счет 10.03 превращается в группу, а для учета создаются новые субсчета 10.03.1 и 10.03.2. В таких ситуациях старый счет не удаляют, а корректно перекатывают остатки на новые субсчета. Однако, если вы видите два абсолютно одинаковых счета с одинаковым кодом, это явный технический дубль.

Как определить правильный предопределенный счет?

Перед тем как приступать к удалению, выясним причину и найдем «истинный» счет. Нельзя произвольно отвязывать и удалять любой из дублей. Если мы удалим правильный счет, который находится на поддержке у поставщика, то при следующем же обновлении конфигурации платформа не найдет нужный элемент по GUID и снова создаст пустой предопределенный счет, вернув нас к исходной проблеме.

Проанализируем ситуацию через сравнение конфигураций. Откроем Конфигуратор и перейдем в диалог настройки поддержки. Нажмем кнопку «Сравнить, объединить с конфигурацией поставщика». В отчете о сравнении мы четко увидим, какой именно предопределенный элемент Плана счетов находится на поддержке поставщика. Тот элемент, который не числится за конфигурацией поставщика — это и есть наш дубль, с которым мы будем работать дальше.

Способ 1: Программная отвязка счета-дубля

Так как предопределенные счета невозможно просто пометить на удаление, сначала нам нужно лишить дубль статуса предопределенности. Процесс «отвязки» заключается в банальной очистке реквизита ИмяПредопределенныхДанных. Рассмотрим пример программного кода, который решает эту задачу. Вы можете выполнить его во внешней обработке:


ОбъектДанных = СчетДубль.ПолучитьОбъект();
ОбъектДанных.ИмяПредопределенныхДанных = "";

// Обязательно отключаем признак предопределенности и у подчиненных видов субконто
Для каждого СтрокаСубконто Из ОбъектДанных.ВидыСубконто Цикл
    СтрокаСубконто.Предопределенное = Ложь;
КонецЦикла;

// Включаем загрузку, чтобы обойти платформенные проверки
ОбъектДанных.ОбменДанными.Загрузка = Истина;
ОбъектДанных.Записать();

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

Способ 2: Использование стандартных обработок

Если вы не хотите писать код, воспользуйтесь готовыми инструментами. Существует стандартная обработка УстановкаПредопределенныхЭлементов, а также множество пользовательских внешних обработок на профильных порталах, которые выводят список всех счетов и позволяют в один клик визуально снять признак предопределенности.

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

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

Система автоматически найдет все документы, проводки и регистры, где был задействован неправильный счет, заменит его на оригинал, а сам дубль безопасно пометит на удаление.

Способ 3: Глобальный метод через выгрузку/загрузку Плана счетов

Если задвоение носит массовый характер и в базе образовались десятки дублей, ручная отвязка каждого может занять много времени. В таких сложных ситуациях рассмотрим более кардинальный алгоритм действий (все операции проводим строго на резервной копии базы!):

  1. С помощью массовой обработки программно отвязываем все счета от предопределенных данных, очищая реквизит ИмяПредопределенныхДанных.
  2. Помечаем все счета на удаление (на время они становятся обычными элементами).
  3. Создаем полностью пустую базу 1С:Бухгалтерия 3.0 со 100% валидной конфигурацией той же версии, что и проблемная.
  4. Выгружаем План счетов из эталонной пустой базы (например, через обработку «ВыгрузкаЗагрузкаДанныхXML») и загружаем его в нашу проблемную базу.
  5. По итогу загрузки элементы с правильными эталонными GUID восстановят свой статус предопределенности и снимут с себя пометку на удаление.
  6. Все ошибочные дубли (с неверными GUID) останутся с пометкой на удаление.
  7. Запускаем типовую обработку Поиск и удаление дублей, где массово переносим ссылки с удаленных элементов на правильные предопределенные.
  8. В завершение запускаем процедуру Тестирования и исправления ИБ (ТИИ), чтобы пересчитать итоги и проверить логическую целостность базы данных.

Резюмируем: Проблема задублированных предопределенных элементов решается очисткой связи через реквизит платформы с последующей заменой ссылок. Всегда проверяйте, какой элемент остается в базе, через сравнение с конфигурацией поставщика, и обязательно делайте резервную копию перед любыми операциями с метаданными!

← На главную