Ситуация, когда цена товара в документах или регистрах вдруг становится в 1000 раз больше, является классической проблемой при настройке учета в 1С:Управление торговлей 11.5. Чаще всего это происходит из-за конфликта между базовыми единицами измерения, упаковками и настройками видов цен. Давайте вместе разберем, где искать причину этого сбоя и как привести данные в порядок.
Первое, что необходимо сделать — это заглянуть в карточку номенклатуры. В системе 1С цена всегда привязана к определенной единице измерения. Если у вас в карточке товара задана Упаковка с коэффициентом, например, 1000 относительно базовой единицы (например, 1 грамм = 1 базовая единица, а упаковка = 1000 грамм), то система может автоматически пересчитывать цену, если в документе Установка цен номенклатуры выбрана не та единица, которую ожидает регистр.
Рассмотрим порядок действий:
Номенклатура.Упаковки для конкретного товара.Почему в одном случае цена корректная, а в другом — в 1000 раз больше? Вероятно, в документе Установка цен номенклатуры для разных строк или разных видов цен подставляются разные единицы измерения. Обратите внимание на колонку Упаковка в табличной части документа.
Если в регистре Цены номенклатуры для одной записи указана упаковка, а для другой — нет (пустое значение означает базовую единицу), программа будет применять разные математические алгоритмы. Проанализируйте движение по регистру: почему в Закупке единица не заполнена, а в Рознице система пытается привязать кг или упаковки?
В 1С УТ 11 Вид цены — это мощный инструмент. В его настройках есть важный флаг Использовать упаковки. Если для вида цен «Закупка» этот флаг настроен иначе, чем для «Розницы», это объясняет, почему разные пользователи (директор и кладовщик) видят разную картину.
Для исправления ситуации выполните следующее:
CRM и маркетинг — Настройки и справочники — Виды цен.Использовать упаковки.Поскольку в вашей конфигурации используются расширения (например, Списание по виду цен или Сумма долга), существует вероятность, что программный код в расширении принудительно пересчитывает цену при записи документа. Если расширение «не знает» о тонкостях коэффициентов пересчета, оно может выдавать ошибочный результат.
Рекомендуем временно отключить расширения и проверить, сохраняется ли проблема. Если ошибка исчезла, необходимо проанализировать код обработчиков событий ПередЗаписью или ПриЗаписи в расширениях.
Если стандартные проверки не помогли, используйте отладку. Выясните, в какой момент программа обращается к методу, который меняет цену. Часто проблема скрыта в запросах к регистру сведений Цены номенклатуры. Мы можем проанализировать запрос, чтобы понять, какой коэффициент подставляется при выборе номенклатуры:
// Пример логики для анализа получения данных о цене
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.Упаковка,
ЦеныНоменклатурыСрезПоследних.Номенклатура
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура = &Товар
Проверьте, не попадает ли в параметр Упаковка значение с коэффициентом 1000. Если вы обнаружили несоответствие, попробуйте перевыбрать упаковку непосредственно в строке документа Установка цен номенклатуры, чтобы сбросить ошибочный коэффициент, подтянутый системой автоматически.
Помните: чаще всего корень проблемы кроется в том, что система «думает», будто цена установлена за упаковку, хотя вы вводили ее как цену за базовую единицу (или наоборот). Приведите все настройки единиц измерения к единому стандарту для всех видов цен, чтобы исключить подобные сюрпризы в будущем.