Как изменить родителя для счета в Плане счетов 1С?

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

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

Почему не удается сменить родителя у счета

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

  1. Предопределенный характер счетов: В платформе 1С:Предприятие (в частности, в ветках 8.2 и 8.3) предопределенные элементы жестко связаны с метаданными. Если счет заложен разработчиком в конфигураторе, изменить его базовую структуру прямо в пользовательском режиме «1С:Предприятие» не всегда возможно без предварительных настроек или специальных прав.
  2. Наличие записей в регистре бухгалтерии: В системе 1С счет, имеющий подчиненные субсчета, обычно выступает группой с признаком «Запретить использовать в проводках». Если по счету, который вы хотите сделать родителем, уже зарегистрированы проводки, система не позволит превратить его в группу, пока прямые остатки и обороты не будут перенесены на подчиненные счета.
  3. Ограничения интерфейса и логики конфигурации: Часто в форме элемента плана счетов свойство Родитель блокируется программно разработчиками (устанавливается ТолькоПросмотр = Истина или Доступность = Ложь), либо в обработчике ПередЗаписью модуля плана счетов прописана проверка, предотвращающая непреднамеренное нарушение иерархии.
  4. Маска кода и автопорядок: Если у плана счетов настроена маска кода (например, @@.@@), код подчиненного субсчета обязан точно вписываться в шаблон кода своего нового родителя. При несовпадении форматов платформа блокирует запись объекта.

Способ 1. Изменение иерархии через Конфигуратор (для предопределенных счетов)

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

  1. Откроем нужную информационную базу в режиме Конфигуратор.
  2. В дереве метаданных найдем ветку Планы счетов и дважды кликнем по целевому плану счетов.
  3. Перейдем на вкладку Прочие и нажмем кнопку Предопределенные.
  4. В открывшемся дереве предопределенных счетов найдем подчиненный счет. Откроем окно его свойств и в реквизите Родитель выберем вышестоящий счет (или класс счетов). Также перемещение можно выполнить перетаскиванием мышью.
  5. Проверим соответствие кода счета маске (при наличии субсчетов код субсчета должен начинаться с кода родителя).
  6. Обновим конфигурацию базы данных с помощью клавиши F7.

Этот вариант подходит в ситуации, когда конфигурация находится на поддержке с возможностью редактирования или является полностью самописной, а также если по будущему счету-родителю еще нет проводок.

Способ 2. Действия при наличии движений по счету-родителю

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

Разберем порядок действий, если движения уже есть:

  1. Создаем новый вспомогательный субсчет, который станет конечным получателем существующих проводок.
  2. С помощью документа ручной корректировки или специализированной обработки переносим все остатки и обороты с родительского счета на созданный субсчет.
  3. Убеждаемся, что на родительском счете сальдо и обороты равны нулю.
  4. Устанавливаем для счета-родителя признак «Запретить использовать в проводках».
  5. После освобождения счета от проводок выполняем привязку остальных подчиненных счетов к данному родителю.

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

Способ 3. Программная смена родителя внешней обработкой

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

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


СчетОбъект = СчетСсылка.ПолучитьОбъект();
СчетОбъект.Родитель = НовыйРодитель;

// Если маска требует изменения кода субсчета, корректируем его:
// СчетОбъект.Код = НовыйКод;

Попытка
    СчетОбъект.Записать();
    Сообщить("Родитель для счета " + Строка(СчетОбъект) + " успешно изменен.");
Исключение
    Сообщить("Ошибка записи: " + ОписаниеОшибки());
КонецПопытки;

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

← На главную