При адаптации решений из старых конфигураций, таких как УПП 1.3, в современные системы на базе 1С:Бухгалтерия предприятия 3.0, разработчики часто сталкиваются с архитектурными различиями. Одной из таких проблем является использование строковых значений в качестве субконто на счетах бухгалтерского учета. В типовой конфигурации БП 3.0 для плана видов характеристик ВидыСубконтоХозрасчетные тип значения Строка зачастую отключен по умолчанию. Рассмотрим подробнее, как решить эту задачу, какие существуют риски и какие альтернативные подходы будут более правильными с точки зрения производительности системы.
Разберем самый прямой путь, который часто выбирают для быстрого переноса функционала. Если нам необходимо, чтобы в списке доступных типов при создании нового вида субконто появилась Строка, нам нужно изменить настройки самого объекта метаданных. Проанализируем, где именно скрыта эта настройка.
ВидыСубконтоХозрасчетные.Строка.После этого при создании нового элемента в пользовательском режиме (через «План видов характеристик -> Виды субконто») вы сможете выбрать тип значения Строка. Однако помните, что внесение изменений в типовой объект снимает его с поддержки, что усложнит последующие обновления конфигурации.
Чтобы не изменять типовую конфигурацию и сохранить возможность беспрепятственного обновления, воспользуемся механизмом расширений. Проанализируем этот современный подход.
Создадим новое расширение или откроем существующее. Нам необходимо заимствовать в него ПланВидовХарактеристик.ВидыСубконтоХозрасчетные. В расширении мы также открываем окно редактирования типов и добавляем Строка. Это позволит системе «видеть» новый доступный тип, не затрагивая основной код поставщика. При этом в регистре бухгалтерии данные будут храниться корректно, так как расширение дополняет структуру типов метаданных.
Выясним причину, по которой опытные разработчики рекомендуют избегать строковых субконто. В БП 3.0 существует универсальный справочник Субконто. Он создан специально для того, чтобы не загромождать дерево метаданных сотнями мелких справочников под каждую аналитическую задачу.
Вместо того чтобы плодить строки, которые невозможно контролировать, выполним следующие шаги:
Субконто.Этот метод гораздо эффективнее, так как система будет оперировать ссылками (GUID), а не текстовыми данными. Это упрощает поиск, исключает ошибки дублирования из-за лишних пробелов и значительно ускоряет работу отчетов.
Рассмотрим ситуацию на уровне базы данных SQL. Когда субконто является ссылочным типом (Справочник, Документ), в таблице регистра бухгалтерии хранится идентификатор длиной 16 байт. Если же вы используете тип Строка, то в каждую запись регистра (которых могут быть миллионы) записывается полный текст. Рассмотрим подробнее последствия:
"Проект 1" и "Проект 1 " (с пробелом в конце) являются разными объектами. Бухгалтер получит «разорванное» сальдо и некорректные итоги, которые будет очень сложно вычистить.Если заказчик настаивает на использовании строки (например, для прямой совместимости при обмене данными), крайне важно правильно настроить длину. Проанализируем пример:
// Пример программного создания вида субконто с типом строка (в коде конфигурации)
НовыйВид = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СоздатьЭлемент();
НовыйВид.Наименование = "Идентификатор УПП";
// Устанавливаем тип с ограничением длины
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));
КвалификаторыСтроки = Новый КвалификаторыСтроки(50); // Ограничиваем до 50 символов
НовыйВид.ТипЗначения = Новый ОписаниеТипов(МассивТипов, , КвалификаторыСтроки);
НовыйВид.Записать();
Использование неограниченной длины для полей, участвующих в итогах регистра бухгалтерии, недопустимо, так как такие поля не могут быть проиндексированы в СУБД, что приведет к катастрофическому падению скорости работы системы при проведении документов и формировании отчетности.
Посмотрим на задачу под другим углом. Если данные из УПП нужны бухгалтеру только для справки и по ним не требуется строить обороты (анализировать дебет и кредит в разрезе этих значений), то лучше использовать механизм Дополнительных реквизитов и сведений. Это штатный механизм БП 3.0, который позволяет «приклеить» любую строковую информацию к документу или проводке, не меняя структуру регистра бухгалтерии.
Подведем итог. Несмотря на то, что техническая возможность включить тип Строка существует через изменение ПланВидовХарактеристик.ВидыСубконтоХозрасчетные, мы рекомендуем использовать справочник Субконто или расширения с жестким ограничением длины строки. Это обеспечит стабильную работу программы и корректность бухгалтерских итогов в долгосрочной перспективе.