Разработка и Конфигурация · 10 мин
Как в 1С изменить разрядность числа
Как изменить разрядность числового реквизита в 1С через конфигуратор: длина, точность, влияние на данные, ограничения типовых конфигураций и проверка результата.
Разрядность числового реквизита в 1С определяется двумя параметрами: длиной (общее количество цифр) и точностью (количество знаков после запятой). Если в документе «цена» хранится с точностью 2 знака, а вам нужно учитывать цены с точностью до 4 знаков — например, при работе с валютными тарифами или весовым товаром, — потребуется изменить свойства реквизита в конфигураторе.
Изменение разрядности выполняется только в конфигураторе, в режиме «Предприятие» это сделать нельзя. Операция затрагивает структуру базы данных, поэтому требует монопольного доступа при обновлении и обязательной резервной копии. В типовых конфигурациях на поддержке изменение реквизитов дополнительно осложняется правилами поддержки.
Ниже разобран полный порядок работы: от поиска нужного реквизита до проверки результата, а также типичные ошибки и ограничения, о которых нужно знать заранее.
Что такое длина и точность числа в 1С
У числового типа данных в 1С есть два ключевых параметра. Длина — общее количество цифр в числе, включая дробную часть. Точность — количество цифр после десятичной точки. Например, длина 15 и точность 2 означают, что число может содержать до 13 цифр в целой части и 2 в дробной.
Дополнительно задаётся признак «Неотрицательное»: если он установлен, отрицательные значения в реквизит записать нельзя. Это важно учитывать, потому что изменение признака тоже влияет на существующие данные — отрицательные значения при реструктуризации могут быть обрезаны или вызвать ошибки.
Физически числа в 1С хранятся в формате с фиксированной точкой, а не с плавающей запятой. Поэтому увеличение точности не приводит к «плавающим» ошибкам округления — значения хранятся точно в заданной разрядности.
Где именно меняется разрядность: реквизиты, ресурсы, измерения
Параметры длины и точности встречаются в разных объектах конфигурации, и менять их нужно именно там, где данные физически хранятся:
- реквизиты справочников, документов и их табличных частей;
- ресурсы и измерения регистров накопления и сведений;
- реквизиты регистров бухгалтерии (субконто имеют собственные настройки);
- константы и критерии отбора;
- общие реквизиты и определяемые типы.
Частая ситуация: разрядность меняют в документе, но забывают про ресурс регистра, в который документ делает движения. В результате в документе число хранится с 4 знаками, а при проведении в регистр записывается округлённое до 2 знаков значение. Перед изменением проверьте все объекты, где используется нужное значение, — это удобно сделать через поиск ссылок на объект (правый клик по реквизиту — «Поиск ссылок на объект»).
Пошаговая инструкция по изменению разрядности
Порядок действий одинаков для большинства объектов конфигурации. Перед началом работы сделайте выгрузку информационной базы (файл .dt) или резервную копию средствами СУБД.
- 1Откройте конфигуратор и разблокируйте конфигурацию от поддержки, если она на поддержке (Конфигурация — Поддержка — Настройка поддержки).
- 2Найдите нужный объект (справочник, документ, регистр) и откройте палитру свойств реквизита.
- 3В свойствах найдите поля «Длина» и «Точность» — они расположены рядом с типом данных.
- 4Установите новые значения: длина должна быть больше точности минимум на 1.
- 5Сохраните конфигурацию (Ctrl+S) и выполните обновление конфигурации базы данных (F7).
- 6В окне реструктуризации проверьте список изменяемых таблиц и подтвердите операцию.
- 7Откройте базу в режиме «Предприятие» и проверьте значения в изменённых полях.
Если конфигурация типовая и полностью закрыта для изменений, потребуется включить возможность изменения. Учтите: это усложнит последующие обновления — при обновлении платформа может предложить вернуть изменённый реквизит к типовому состоянию, и ваши настройки придётся восстанавливать вручную.
Изменение через расширение конфигурации
Альтернатива прямой доработке — расширение конфигурации. Однако здесь есть существенное ограничение: расширения не позволяют изменять тип и разрядность существующих реквизитов типовой конфигурации. Через расширение можно добавить новый реквизит с нужной разрядностью и использовать его параллельно, но для изменения существующего поля придётся снимать объект с поддержки.
Реструктуризация и риски потери данных
При обновлении конфигурации базы данных платформа выполняет реструктуризацию — физическое изменение таблиц. Поведение зависит от направления изменения:
- Увеличение длины или точности — безопасная операция, существующие данные сохраняются полностью;
- Уменьшение длины — значения, не помещающиеся в новый формат, могут быть обрезаны или обнулены;
- Уменьшение точности — дробная часть округляется до новой разрядности, «лишние» знаки теряются безвозвратно.
На крупных базах реструктуризация таблиц с миллионами записей выполняется долго и требует свободного места на диске — ориентировочно сопоставимо с размером изменяемой таблицы. Прерывание процесса может привести базу в нерабочее состояние, восстановление возможно только из резервной копии.
Особенности для типовых конфигураций
В типовых решениях (1С:Бухгалтерия, УТ, ERP и др.) разрядность ключевых реквизитов обычно продумана разработчиками, и менять её без необходимости не стоит. Типичный легальный сценарий — увеличение точности цен или количества, когда отраслевая специфика требует более точных расчётов.
Помните о связанных объектах: в типовых конфигурациях цена документа связана с ресурсами регистров, итогами, механизмами округления в печатных формах и отчётах. Изменение одной разрядности может потянуть за собой необходимость правки запросов и формул в нескольких местах.
Сравнение вариантов
Полноценное решение: данные хранятся в нужной разрядности во всех механизмах. Ограничение — снятие с поддержки и риски при обновлении типовой конфигурации.
Безопасно для обновлений, типовая конфигурация не меняется. Ограничение — стандартные отчёты и проведение не используют новый реквизит без доработки.
Не требует изменения конфигурации вообще. Ограничение — не участвует в проведении и типовых расчётах, подходит только для справочного хранения.
Проверка результата после изменения
После обновления конфигурации базы данных убедитесь, что изменения применились корректно и данные не пострадали:
Как проверить результат
Поле принимает значение с новым количеством знаков после запятой и сохраняет его без округления
Значение округляется до старой точности — реструктуризация не выполнена или изменён не тот реквизит
В регистре значения хранятся с новой точностью
В регистре значения округлены — забыли изменить ресурс регистра
Ранее введённые значения на месте, суммы итогов не изменились
Часть значений обрезана или обнулена — признак некорректного уменьшения разрядности
Значения выводятся корректно, суммы сходятся
В отчётах расхождения или ошибки округления
Дополнительно полезно выполнить тестирование и исправление базы (в тестовом режиме) и проверить несколько документов разных периодов. Если конфигурация дорабатывалась, проверьте места, где значение обрабатывается кодом: функции округления и явные приведения типов могут «резать» точность независимо от настроек реквизита.
Частые вопросы
Можно ли изменить разрядность без конфигуратора, в режиме «Предприятие»?
Нет. Длина и точность числа — это свойства метаданных, они изменяются только в конфигураторе с последующим обновлением конфигурации базы данных. В пользовательском режиме можно лишь настроить округление при выводе в отдельных отчётах, но хранение данных это не затрагивает.
Что будет со старыми данными при увеличении точности?
Ничего плохого: существующие значения сохранятся полностью, просто у них появится возможность иметь больше знаков после запятой. Например, значение 125,50 при увеличении точности с 2 до 4 останется 125,50, а новые значения смогут быть вида 125,5025.
Почему после изменения разрядности поле всё равно округляет значения?
Наиболее вероятные причины: изменён не тот реквизит (значение хранится в ресурсе регистра или в реквизите определяемого типа), в коде есть явный вызов функции округления, либо обновление конфигурации базы данных не было выполнено. Проверьте цепочку хранения значения от формы до регистра.
Можно ли изменить разрядность в типовой конфигурации без снятия с поддержки?
Изменить существующий реквизит — нет, расширения этого не позволяют. Рабочий обходной путь — добавить через расширение собственный реквизит с нужной разрядностью и доработать механизмы, которые должны его использовать. Либо включить возможность изменения конфигурации, приняв усложнение будущих обновлений.
Сколько времени занимает реструктуризация при изменении разрядности?
Зависит от объёма изменяемых таблиц: в небольшой файловой базе — секунды или минуты, в клиент-серверной базе с миллионами записей — от десятков минут до нескольких часов. Точное время заранее предсказать нельзя, поэтому операцию планируют на период минимальной нагрузки.
Чем отличается длина от точности на практике?
Длина — это общий «бюджет» цифр числа, точность — часть этого бюджета под дробную часть. При длине 10 и точности 3 в целой части доступно максимум 7 цифр: число 1234567,891 поместится, а 12345678,91 — уже нет. Увеличивая точность, не забудьте при необходимости увеличить и длину.
Что важно запомнить
Разрядность числа в 1С задаётся длиной и точностью в свойствах реквизита конфигуратора и требует обновления конфигурации базы данных с реструктуризацией. Увеличение разрядности безопасно, уменьшение может уничтожить данные. Меняйте параметры во всех связанных объектах — документах, регистрах, определяемых типах — и всегда работайте с резервной копией.