Почему в УПП после обновления нарушился порядок плана счетов и как его восстановить?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

Ситуация, когда после обновления конфигурации УПП (особенно при переходе с очень старых релизов на актуальные) «съезжает» порядок следования счетов в ПланеСчетов, является известной технической особенностью. Давайте разберемся, почему это происходит и какими способами мы можем вернуть порядок счетов в исходное состояние.

Выясним причину нарушения порядка

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

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

Рассмотрим способы решения проблемы

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

Способ 1: Автоматизированная перезапись всех счетов

Если счетов много, делать это вручную неэффективно. Мы можем написать небольшую обработку, которая переберет все счета и запишет их. Давайте рассмотрим примерный алгоритм действий:

  1. Создадим внешнюю обработку или воспользуемся «Консолью кода».
  2. Выполним выборку всех элементов плана счетов.
  3. Принудительно запишем каждый элемент, чтобы система обновила его служебные атрибуты.

Пример кода для программной записи:


Выборка = ПланыСчетов.Хозрасчетный.Выбрать();
Пока Выборка.Следующий() Цикл
    СчетОбъект = Выборка.Ссылка.ПолучитьОбъект();
    Если СчетОбъект <> Неопределено Тогда
        СчетОбъект.Записать();
    КонецЕсли;
КонецЦикла;

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

Способ 2: Использование механизма первоначального заполнения

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

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

Проанализируем меры предосторожности

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

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

← На главную