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

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

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

Способ 1. Включение типа Строка в конфигураторе

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

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

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

Способ 2. Реализация через расширение конфигурации

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

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

Способ 3. Использование справочника Субконто

Выясним причину, по которой опытные разработчики рекомендуют избегать строковых субконто. В БП 3.0 существует универсальный справочник Субконто. Он создан специально для того, чтобы не загромождать дерево метаданных сотнями мелких справочников под каждую аналитическую задачу.

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

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

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

Анализ проблем производительности при использовании строк

Рассмотрим ситуацию на уровне базы данных SQL. Когда субконто является ссылочным типом (Справочник, Документ), в таблице регистра бухгалтерии хранится идентификатор длиной 16 байт. Если же вы используете тип Строка, то в каждую запись регистра (которых могут быть миллионы) записывается полный текст. Рассмотрим подробнее последствия:

Рекомендации по ограничению длины

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


// Пример программного создания вида субконто с типом строка (в коде конфигурации)
НовыйВид = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СоздатьЭлемент();
НовыйВид.Наименование = "Идентификатор УПП";
// Устанавливаем тип с ограничением длины
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));
КвалификаторыСтроки = Новый КвалификаторыСтроки(50); // Ограничиваем до 50 символов
НовыйВид.ТипЗначения = Новый ОписаниеТипов(МассивТипов, , КвалификаторыСтроки);
НовыйВид.Записать();

Использование неограниченной длины для полей, участвующих в итогах регистра бухгалтерии, недопустимо, так как такие поля не могут быть проиндексированы в СУБД, что приведет к катастрофическому падению скорости работы системы при проведении документов и формировании отчетности.

Альтернатива: Дополнительные сведения

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

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

← На главную