Разработчики, работающие с платформой 1С:Предприятие 7.7, часто сталкиваются с неочевидными ограничениями интерфейса конфигуратора. Одной из таких «загадок» является установка длины строкового реквизита в табличной части документа или справочника. На первый взгляд кажется, что система ограничивает нас 99 символами, а флажок «Неограниченная длина» при этом заблокирован. В данной статье мы разберем, как обойти это визуальное ограничение, выясним причины блокировки неограниченной длины и проанализируем последствия увеличения этого параметра для производительности базы данных.
Рассмотрим ситуацию: при создании или редактировании реквизита табличной части с типом Строка в поле «Длина» по умолчанию стоит значение, которое визуально позволяет ввести только две цифры. Попытка набрать на клавиатуре «100» или «150» часто заканчивается неудачей, так как поле ввода «обрезает» третий символ. Это происходит из-за особенностей графического интерфейса конфигуратора 1С 7.7, который создавался в эпоху низких разрешений экранов и жестких стандартов визуальных компонентов.
Выясним причину, почему флажок «Неограниченная длина» недоступен для реквизитов табличных частей. Платформа 7.7 использует разные механизмы хранения данных. Строки неограниченной длины хранятся во внешних файлах (формат .dbt для DBF-версии или тип TEXT/IMAGE для SQL). Архитектура табличных частей документов (файлы DT*) не предусматривает связи с этими внешними хранилищами для каждой строки таблицы. Поэтому в табличной части мы вынуждены использовать только строки фиксированной длины.
Проанализируем самый простой и эффективный способ увеличить длину реквизита. Как ни странно, решение кроется не в программном коде, а в использовании стандартных элементов управления Windows, которые в 1С 7.7 работают несколько шире, чем кажется на первый взгляд.
Spin-button).Таким образом можно установить значение вплоть до 999 символов. Это абсолютный предел для строкового реквизита фиксированной длины в версии 7.7. Разберем подробнее, почему не стоит бездумно использовать этот максимум.
Посмотрим на ситуацию со стороны хранения данных. В 1С 7.7 (особенно в DBF-версии) строки фиксированной длины занимают в файле ровно столько места, сколько указано в конфигураторе, независимо от того, заполнены они текстом или нет. Каждая пустая ячейка в базе данных будет заполнена пробелами.
Проанализируем расчет объема данных:
DT*.dbf) примерно на 100 КБ.В SQL-версии ситуация несколько лучше, так как современные драйверы могут оптимизировать хранение, но нагрузка на сеть при передаче широких таблиц все равно возрастет. Кроме того, индексация по полям длиной более 255 символов либо невозможна, либо крайне неэффективна, что приведет к замедлению работы отчетов и поисковых запросов.
Существует и более радикальный метод, который упоминается опытными разработчиками. Если вам неудобно постоянно пользоваться стрелочками, можно изменить саму маску ввода в ресурсах платформы. Для этого используются специализированные редакторы ресурсов, такие как Resource Hacker или Restorator.
Разберем этот процесс (только для ознакомления, так как это нарушает целостность исполняемых файлов):
1crcrus.dll (в папке установки платформы BIN).Важно: Мы настоятельно не рекомендуем этот метод для рабочих систем, так как после обновления платформы или при работе на другом компьютере проблема вернется, а модификация системных файлов может вызвать нестабильность работы Конфигуратора.
Вместо того чтобы раздувать табличную часть до 999 символов, рассмотрим более изящные способы хранения больших объемов информации в 1С 7.7:
ID).Подводя итог, можно сказать, что ограничение в 99 символов в 1С 7.7 — это всего лишь «трудности перевода» интерфейса. Используя обычные кнопки прокрутки, вы легко добьетесь нужной длины, но всегда помните о «цене» каждого лишнего байта в архитектуре «семерки».