Как отключить округление в дополнительных реквизитах в 1С:Управление торговлей 11.4?

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

При работе с конфигурацией 1С:Управление торговлей 11.4 пользователи часто сталкиваются с ситуацией, когда числовые дополнительные реквизиты (например, «Метров на поддоне» или «Вес нетто») автоматически округляются до двух знаков после запятой. Это происходит даже в тех случаях, когда бизнес-процесс требует более высокой точности, например, четырех или пяти знаков. Разберем подробно, почему так происходит и как корректно настроить систему, чтобы избежать потери точности данных.

Понимание разницы между типом значения и форматом вывода

Прежде чем приступать к настройкам, нам необходимо четко разграничить два понятия в платформе 1С: Тип значения и Формат. В этом часто кроется корень ошибки: пользователь меняет визуальное представление, но не меняет параметры хранения данных в базе.

Тип значения (Число) — это жесткая настройка в базе данных. Если для реквизита установлена точность 2, то платформа физически не сможет записать в это поле число с тремя знаками. Любое значение будет отсекаться или округляться при попытке записи объекта.

Формат вывода — это лишь «маска» отображения. Если в типе данных стоит точность 2, а в формате вы указали 4 знака, система покажет вам что-то вроде 33.3400. То есть она просто добавит нули к уже округленному значению.

Проанализируем ситуацию: если программа округляет 33.3385 до 33.34, это означает, что на уровне Типа значения в Плане видов характеристик установлена точность «2».

Способ 1. Изменение точности через интерфейс «Дополнительные реквизиты»

Рассмотрим пошагово, как изменить точность для существующего или нового реквизита. Важно помнить, что в 1С:УТ 11 дополнительные реквизиты привязаны к конкретным наборам (например, «Общие для всех видов номенклатуры» или индивидуальные наборы для каждого вида номенклатуры).

  1. Перейдем в раздел НСИ и администрирование — Администрирование — Общие настройки.
  2. Развернем подраздел Дополнительные реквизиты и сведения.
  3. Откроем ссылку Дополнительные реквизиты.
  4. Найдем в списке нужный объект (например, «Номенклатура») и выберем наш реквизит.
  5. Нажмем кнопку Изменить.
  6. В открывшейся карточке реквизита нам нужно найти поле Тип значения. По умолчанию там написано «Число». Нажмем на кнопку выбора (три точки) рядом с типом.
  7. В окне Описание типов мы увидим параметры числа. Посмотрим на поле Точность. Именно здесь нужно заменить «2» на «4» или «5».

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

Способ 2. Создание нового реквизита (рекомендуемый метод)

Если система не дает изменить тип существующего реквизита из-за наличия данных, самым надежным способом будет создание нового свойства с правильными параметрами «с нуля».

Разберем, как правильно настроить параметры при создании:

  1. В справочнике Дополнительные реквизиты нажмем Создать — Новый.
  2. Укажем наименование.
  3. В поле Тип значения сразу выберем «Число» и установим Длину (например, 15 или 17) и Точность (например, 4 или 5).
  4. Перейдем на вкладку Главное и настроим Формат. В строке формата также убедимся, что количество знаков после запятой соответствует выбранной точности.

Выясним причину, почему это лучше: при создании нового элемента ПВХ (Плана видов характеристик) платформа создает чистую запись в метаданных с правильной квалификацией числа. После этого останется только перенести данные из старого реквизита в новый (например, с помощью обработки «Групповое изменение реквизитов») и удалить старый.

Способ 3. Изменение через Конфигуратор (для продвинутых задач)

В некоторых версиях конфигураций 1С:Управление торговлей могут существовать ограничения в самих метаданных Плана видов характеристик ДополнительныеРеквизитыИСведения. Если программный интерфейс не позволяет выбрать точность более 3 знаков, нам придется обратиться к Конфигуратору.

Рассмотрим алгоритм действий в Конфигураторе:

  1. Откроем дерево метаданных и найдем Планы видов характеристик — Дополнительные реквизиты и сведения.
  2. Перейдем на вкладку Основные и нажмем кнопку Тип значения характеристик.
  3. Найдем в списке Число. Проанализируем установленные для него ограничения. Если там жестко задана точность 3, увеличим её до нужного значения (например, 5).

Обратите внимание: Дополнительные реквизиты физически хранятся в табличных частях объектов. Например, для справочника Номенклатура это табличная часть ДополнительныеРеквизиты, где значение хранится в поле Значение с типом Характеристика.ДополнительныеРеквизитыИСведения. Изменение типа в ПВХ автоматически расширяет возможности хранения в этих табличных частях.

Способ 4. Использование обработки «Групповое изменение реквизитов»

Если нам нужно программно «заставить» систему изменить точность у уже существующего реквизита, не удаляя его, воспользуемся стандартной обработкой.

Выполним следующие шаги:

  1. Откроем НСИ и администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов.
  2. В поле Выбирать элементы типа выберем Дополнительные реквизиты и сведения (План видов характеристик).
  3. Нажмем Добавить условие и выберем наш конкретный реквизит по наименованию.
  4. В списке реквизитов для изменения найдем Тип значения.

Здесь есть технический нюанс: поле типа значения является сложным объектом (ОписаниеТипов). Напрямую через стандартную форму группового изменения его редактировать сложно. В таких случаях часто используется код для изменения квалификаторов числа.

Пример программного изменения точности (для использования во внешних обработках):


// Получаем объект дополнительного реквизита
ДопРеквизитОбъект = СсылкаНаРеквизит.ПолучитьОбъект();

// Создаем новые квалификаторы числа (Длина 15, Точность 4)
КвалификаторыЧисла = Новый КвалификаторыЧисла(15, 4);
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Число"));

// Устанавливаем новый тип значения
ДопРеквизитОбъект.ТипЗначения = Новый ОписаниеТипов(МассивТипов, , КвалификаторыЧисла);

// Записываем объект
ДопРеквизитОбъект.Записать();

Проверка дублирующих наборов

Если вы изменили настройки, но округление все равно происходит, нужно проанализировать структуру наборов свойств. В УТ 11.4 для каждого Вида номенклатуры может быть создан свой уникальный набор дополнительных реквизитов.

Рассмотрим ситуацию: у вас есть реквизит «Метров на поддоне» в наборе для вида «Строительные материалы» и точно такой же реквизит в наборе для вида «Инструменты». Если вы изменили настройки только в одном месте, а товар относится к другому виду номенклатуры, округление сохранится. Убедитесь, что вы правите реквизит именно в том наборе, который используется в карточке проблемного товара.

Особенности программного округления в коде

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

Разберем, как это работает: При вызове метода ОбщегоНазначения.ЗаписатьОбъект() или стандартной процедуры ПередЗаписью, система обращается к коллекции дополнительных реквизитов. Если платформа видит, что тип значения в ПВХ не соответствует передаваемому числу, она выполняет автоматическое преобразование. Чтобы этого не происходило, всегда проверяйте актуальность кэша (команда /ClearCache в строке запуска), так как настройки Планов видов характеристик активно кэшируются платформой 1С.

Итоговый алгоритм действий

Для гарантированного решения проблемы рекомендуем придерживаться следующей последовательности:

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

Следуя этим инструкциям, мы сможем добиться хранения данных с любой необходимой точностью, обеспечив корректность управленческого учета в 1С:Управление торговлей 11.4.

← На главную