Почему нельзя изменить или удалить субконто на счете МЦ.04 в 1С:Бухгалтерия 2.0?

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

При работе в конфигурации 1С:Бухгалтерия предприятия 2.0 технические специалисты часто сталкиваются с ситуацией, когда необходимо изменить аналитику на конкретном счете. Одной из самых загадочных проблем является блокировка модификации счета МЦ.04 («Инвентарь и хозяйственные принадлежности в эксплуатации»). Программист видит, что кнопки удаления или замены субконто в форме плана счетов отображаются серыми (недоступными), хотя программная проверка в отладчике может показывать, что свойство Доступность установлено в значение Истина.

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

Разберем природу предопределенных счетов

Первое, на что нам стоит обратить внимание — это статус счета МЦ.04. В системе 1С все элементы плана счетов делятся на две категории: созданные пользователем в режиме «Предприятие» и предопределенные, созданные разработчиком в «Конфигураторе».

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

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

Выясним причину блокировки интерфейса

Проанализируем ситуацию с точки зрения кода. Почему в отладчике кнопка кажется доступной, а на экране — нет? Рассмотрим механизм отрисовки формы в обычных приложениях (на которых построена БП 2.0).

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

Также стоит проверить специализированные механизмы конфигурации. В БП 2.0 существует массив или функция, определяющая список запрещенных к редактированию счетов. Проанализируем модуль объекта плана счетов Хозрасчетный. Найдем там функцию или переменную, отвечающую за список исключений:


// Примерный поиск в модуле объекта плана счетов
Функция ПолучитьСписокЗапрещенныхСчетов()
    Список = Новый Массив;
    Список.Добавить(ПланыСчетов.Хозрасчетный.МЦ04);
    // ... добавление других критически важных счетов
    Возврат Список;
КонецФункции

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

Проанализируем последствия изменения счета МЦ.04

Важно понимать, почему именно счет МЦ.04 так защищен. Рассмотрим, как он используется в документах:

Если нам удастся программно «взломать» структуру и заменить, например, Физ. лицо на другое субконто, все типовые документы перестанут проводиться или будут выдавать ошибки выполнения (Runtime Error), так как они не найдут ожидаемых измерений в регистре. Это критически опасная операция для работающей базы.

Как решить задачу правильно: пошаговая инструкция

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

Вариант 1: Создание субсчета

Вместо изменения предопределенного счета МЦ.04, мы можем создать новый подчиненный счет, например, МЦ.04.01.

  1. Откройте план счетов в режиме «Предприятие».
  2. Создайте новый счет, указав в качестве родителя МЦ.04.
  3. Для нового счета вы можете настроить любой состав субконто.
  4. Внимание: Вам придется доработать документы, чтобы они использовали ваш новый субсчет, либо использовать операции, введенные вручную.

Вариант 2: Использование дополнительных сведений

Если вам нужно добавить аналитику только для отчетности (например, «Место хранения» или «Проект»), не обязательно менять план счетов. Рассмотрим механизм дополнительных сведений:

Используйте справочник НазначениеИспользования или Номенклатура, добавив туда дополнительные реквизиты. Это позволит строить отчеты в разрезе нужных данных, сохранив при этом типовую логику проведения документов по счету МЦ.04. При необходимости можно воспользоваться инструкцией по подключению механизма дополнительных реквизитов к справочникам.

Вариант 3: Программное добавление субконто

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

Важный момент: Новое субконто не должно заменять существующие. Оно может только дополнять их. Помните, что максимальное количество субконто в типовой БП 2.0 обычно ограничено тремя. Чтобы увеличить это число, потребуются изменения в Конфигураторе на уровне свойств Плана счетов Хозрасчетный, что повлечет за собой необходимость значительной переработки всей системы.

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

Вернемся к вопросу автора о том, почему Доступность = Истина, а кнопка серая. В платформе 1С существует понятие «Состояние видимости и доступности», которое вычисляется динамически.

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


Попытка
    СчетОбъект = ПланыСчетов.Хозрасчетный.МЦ04.ПолучитьОбъект();
    СчетОбъект.ВидыСубконто.Удалить(0); // Попытка удалить первое субконто
    СчетОбъект.Записать();
Исключение
    Сообщить("Ошибка: " + ОписаниеОшибки());
КонецПопытки;

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

← На главную