К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как в 1С изменить разрядность числа

Как изменить разрядность числового реквизита в 1С через конфигуратор: длина, точность, влияние на данные, ограничения типовых конфигураций и проверка результата.

Разрядность числового реквизита в 1С определяется двумя параметрами: длиной (общее количество цифр) и точностью (количество знаков после запятой). Если в документе «цена» хранится с точностью 2 знака, а вам нужно учитывать цены с точностью до 4 знаков — например, при работе с валютными тарифами или весовым товаром, — потребуется изменить свойства реквизита в конфигураторе.

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

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

Что такое длина и точность числа в 1С

У числового типа данных в 1С есть два ключевых параметра. Длина — общее количество цифр в числе, включая дробную часть. Точность — количество цифр после десятичной точки. Например, длина 15 и точность 2 означают, что число может содержать до 13 цифр в целой части и 2 в дробной.

Дополнительно задаётся признак «Неотрицательное»: если он установлен, отрицательные значения в реквизит записать нельзя. Это важно учитывать, потому что изменение признака тоже влияет на существующие данные — отрицательные значения при реструктуризации могут быть обрезаны или вызвать ошибки.

Физически числа в 1С хранятся в формате с фиксированной точкой, а не с плавающей запятой. Поэтому увеличение точности не приводит к «плавающим» ошибкам округления — значения хранятся точно в заданной разрядности.

Где именно меняется разрядность: реквизиты, ресурсы, измерения

Параметры длины и точности встречаются в разных объектах конфигурации, и менять их нужно именно там, где данные физически хранятся:

  • реквизиты справочников, документов и их табличных частей;
  • ресурсы и измерения регистров накопления и сведений;
  • реквизиты регистров бухгалтерии (субконто имеют собственные настройки);
  • константы и критерии отбора;
  • общие реквизиты и определяемые типы.

Частая ситуация: разрядность меняют в документе, но забывают про ресурс регистра, в который документ делает движения. В результате в документе число хранится с 4 знаками, а при проведении в регистр записывается округлённое до 2 знаков значение. Перед изменением проверьте все объекты, где используется нужное значение, — это удобно сделать через поиск ссылок на объект (правый клик по реквизиту — «Поиск ссылок на объект»).

Пошаговая инструкция по изменению разрядности

Порядок действий одинаков для большинства объектов конфигурации. Перед началом работы сделайте выгрузку информационной базы (файл .dt) или резервную копию средствами СУБД.

Порядок действий
  1. 1
    Откройте конфигуратор и разблокируйте конфигурацию от поддержки, если она на поддержке (Конфигурация — Поддержка — Настройка поддержки).
  2. 2
    Найдите нужный объект (справочник, документ, регистр) и откройте палитру свойств реквизита.
  3. 3
    В свойствах найдите поля «Длина» и «Точность» — они расположены рядом с типом данных.
  4. 4
    Установите новые значения: длина должна быть больше точности минимум на 1.
  5. 5
    Сохраните конфигурацию (Ctrl+S) и выполните обновление конфигурации базы данных (F7).
  6. 6
    В окне реструктуризации проверьте список изменяемых таблиц и подтвердите операцию.
  7. 7
    Откройте базу в режиме «Предприятие» и проверьте значения в изменённых полях.

Если конфигурация типовая и полностью закрыта для изменений, потребуется включить возможность изменения. Учтите: это усложнит последующие обновления — при обновлении платформа может предложить вернуть изменённый реквизит к типовому состоянию, и ваши настройки придётся восстанавливать вручную.

Изменение через расширение конфигурации

Альтернатива прямой доработке — расширение конфигурации. Однако здесь есть существенное ограничение: расширения не позволяют изменять тип и разрядность существующих реквизитов типовой конфигурации. Через расширение можно добавить новый реквизит с нужной разрядностью и использовать его параллельно, но для изменения существующего поля придётся снимать объект с поддержки.

Реструктуризация и риски потери данных

При обновлении конфигурации базы данных платформа выполняет реструктуризацию — физическое изменение таблиц. Поведение зависит от направления изменения:

  • Увеличение длины или точности — безопасная операция, существующие данные сохраняются полностью;
  • Уменьшение длины — значения, не помещающиеся в новый формат, могут быть обрезаны или обнулены;
  • Уменьшение точности — дробная часть округляется до новой разрядности, «лишние» знаки теряются безвозвратно.

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

Особенности для типовых конфигураций

В типовых решениях (1С:Бухгалтерия, УТ, ERP и др.) разрядность ключевых реквизитов обычно продумана разработчиками, и менять её без необходимости не стоит. Типичный легальный сценарий — увеличение точности цен или количества, когда отраслевая специфика требует более точных расчётов.

Помните о связанных объектах: в типовых конфигурациях цена документа связана с ресурсами регистров, итогами, механизмами округления в печатных формах и отчётах. Изменение одной разрядности может потянуть за собой необходимость правки запросов и формул в нескольких местах.

Сравнение вариантов

Изменение реквизита в конфигураторе

Полноценное решение: данные хранятся в нужной разрядности во всех механизмах. Ограничение — снятие с поддержки и риски при обновлении типовой конфигурации.

Новый реквизит через расширение

Безопасно для обновлений, типовая конфигурация не меняется. Ограничение — стандартные отчёты и проведение не используют новый реквизит без доработки.

Хранение в дополнительном реквизите

Не требует изменения конфигурации вообще. Ограничение — не участвует в проведении и типовых расчётах, подходит только для справочного хранения.

Проверка результата после изменения

После обновления конфигурации базы данных убедитесь, что изменения применились корректно и данные не пострадали:

Контрольные точки

Как проверить результат

Ввод значения в режиме «Предприятие»
Норма

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

Тревожный признак

Значение округляется до старой точности — реструктуризация не выполнена или изменён не тот реквизит

Движения документа по регистрам
Норма

В регистре значения хранятся с новой точностью

Тревожный признак

В регистре значения округлены — забыли изменить ресурс регистра

Старые данные
Норма

Ранее введённые значения на месте, суммы итогов не изменились

Тревожный признак

Часть значений обрезана или обнулена — признак некорректного уменьшения разрядности

Отчёты и печатные формы
Норма

Значения выводятся корректно, суммы сходятся

Тревожный признак

В отчётах расхождения или ошибки округления

Дополнительно полезно выполнить тестирование и исправление базы (в тестовом режиме) и проверить несколько документов разных периодов. Если конфигурация дорабатывалась, проверьте места, где значение обрабатывается кодом: функции округления и явные приведения типов могут «резать» точность независимо от настроек реквизита.

Типичные ошибки
01
Изменили реквизит документа, но не ресурс регистра — в движениях данные округляются до старой точности.
02
Уменьшили точность без анализа существующих данных — дробные части значений потеряны безвозвратно.
03
Запустили реструктуризацию большой базы в рабочее время без копии — долгое простаивание и риск повреждения при прерывании.
04
Забыли про определяемый тип — изменили один реквизит, а остальные поля того же типа остались со старой разрядностью.
05
Не проверили код с функциями округления — форма показывает новую точность, а расчёты по-прежнему округляют.

Частые вопросы

Можно ли изменить разрядность без конфигуратора, в режиме «Предприятие»?

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

Что будет со старыми данными при увеличении точности?

Ничего плохого: существующие значения сохранятся полностью, просто у них появится возможность иметь больше знаков после запятой. Например, значение 125,50 при увеличении точности с 2 до 4 останется 125,50, а новые значения смогут быть вида 125,5025.

Почему после изменения разрядности поле всё равно округляет значения?

Наиболее вероятные причины: изменён не тот реквизит (значение хранится в ресурсе регистра или в реквизите определяемого типа), в коде есть явный вызов функции округления, либо обновление конфигурации базы данных не было выполнено. Проверьте цепочку хранения значения от формы до регистра.

Можно ли изменить разрядность в типовой конфигурации без снятия с поддержки?

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

Сколько времени занимает реструктуризация при изменении разрядности?

Зависит от объёма изменяемых таблиц: в небольшой файловой базе — секунды или минуты, в клиент-серверной базе с миллионами записей — от десятков минут до нескольких часов. Точное время заранее предсказать нельзя, поэтому операцию планируют на период минимальной нагрузки.

Чем отличается длина от точности на практике?

Длина — это общий «бюджет» цифр числа, точность — часть этого бюджета под дробную часть. При длине 10 и точности 3 в целой части доступно максимум 7 цифр: число 1234567,891 поместится, а 12345678,91 — уже нет. Увеличивая точность, не забудьте при необходимости увеличить и длину.

Итог

Что важно запомнить

Разрядность числа в 1С задаётся длиной и точностью в свойствах реквизита конфигуратора и требует обновления конфигурации базы данных с реструктуризацией. Увеличение разрядности безопасно, уменьшение может уничтожить данные. Меняйте параметры во всех связанных объектах — документах, регистрах, определяемых типах — и всегда работайте с резервной копией.