Как увеличить длину кода и изменить маску счета в плане счетов 1С:ERP 2.4?

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

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

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

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

Рассмотрим типовую ситуацию: вы увеличили длину кода в метаданных с 8 до 9 символов и изменили маску с @@@.@@.@ на @@@.@@.@@. Однако при открытии формы счета поле ввода кода по-прежнему ограничивает ввод восьмым символом. Проанализируем, почему это происходит.

В платформе 1С:Предприятие 8 свойства объекта метаданных (Плана счетов) имеют приоритет, но у каждого объекта есть так называемые Стандартные реквизиты. У плана счетов к ним относятся Код, Наименование, Родитель и другие. Проблема заключается в том, что маска ввода может быть продублирована в настройках самого стандартного реквизита Код.

Выясним причину, заглянув в дерево метаданных:

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

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

Комплексный алгоритм изменения структуры счета

Просто поменять маску кода недостаточно для стабильной работы системы. Разберем по шагам, что еще необходимо сделать, чтобы учет не «поплыл».

Шаг 1. Изменение длины кода и порядка

В плане счетов 1С существует два ключевых поля, отвечающих за идентификацию и сортировку: ДлинаКода и ДлинаПорядка. Реквизит Порядок используется платформой для иерархического отображения счетов в отчетах. Если длина кода увеличивается, длина порядка должна быть увеличена пропорционально. В типовой ERP 2.4 часто встречается соотношение: ДлинаКода = 8, ДлинаПорядка = 9. При переходе на 9 символов кода рекомендуем установить длину порядка не менее 10 или 11 символов.

Шаг 2. Настройка кода быстрого выбора

В конфигурациях на базе ERP используется вспомогательный реквизит для удобства пользователей — КодБыстрогоВыбора. Если вы увеличили основной код, но оставили старую длину у кода быстрого выбора, пользователи не смогут вводить новые счета в документах «по памяти» (например, при вводе в поле выбора счета). Найдите этот реквизит в списке обычных реквизитов плана счетов и увеличьте его длину до 9 символов.

Шаг 3. Пересчет порядка существующих счетов

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


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

Риски и последствия модификации плана счетов

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

1. Конфликты при обновлении

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

2. Проблемы обмена с «1С:Бухгалтерия 3.0»

Типовая ERP часто работает в связке с БП 3.0. В БП длина кода остается стандартной (8 символов). Если вы выгрузите документ со счетом 76.07.11 (длина 9), то при загрузке в БП система либо не найдет такой счет, либо обрежет его до 76.07.1. Проанализируем последствия: суммы по разным субсчетам ERP схлопнутся на одном субсчете в БП, что сделает сверку данных невозможной. Вам потребуется модифицировать правила обмена в «Конвертации данных».

3. Влияние на регламентированную отчетность

Алгоритмы заполнения Декларации по НДС, Баланса и других отчетов в ERP часто опираются на маски счетов. Например, код может проверять вхождение счета в группу по первым пяти символам или искать конкретные субсчета по жестко заданным шаблонам. После внедрения 76.07.11 нужно убедиться, что суммы по этому счету попадают в нужные строки отчетности. Рассмотрим пример проверки:


// Пример логики, которая может сломаться
Если Лев(Счет.Код, 8) = "76.07.1" Тогда
    // Обработка данных
КонецЕсли;

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

Альтернативные варианты решения

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

  1. Использование буквенно-цифровых кодов. Маска @@@.@@.@ позволяет использовать буквы. Вместо 76.07.11 можно использовать 76.07.А, 76.07.Б и так далее. Это сохранит длину кода в рамках 8 символов и избавит от проблем с обновлением и обменами.
  2. Дополнительное субконто. Если разделение на 76.07.11 и 76.07.12 требуется для выделения типов аренды или арендодателей, правильнее будет добавить на счет 76.07.1 новое субконто (аналитику). Это штатный механизм 1С, который не требует изменения структуры кода и поддерживается всеми отчетами.

Таким образом, мы выяснили, что основной причиной проблемы с маской в форме счета является настройка Стандартных реквизитов. Исправив её, вы получите возможность вводить длинные коды. Однако помните о необходимости пересчета поля Порядок, расширения КодаБыстрогоВыбора и тщательного тестирования обменов с внешними системами. Выполняйте такие изменения только в том случае, если использование аналитики (субконто) или буквенных кодов категорически не подходит для целей учета вашей организации.

← На главную